0% encontró este documento útil (0 votos)
49 vistas8 páginas

Método de F

eee
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
49 vistas8 páginas

Método de F

eee
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

mtodo de falsa posicin en c++

martes, octubre 20, 2015 Publicado por Roque caldas dominguez Sin Comentarios

En clculo numrico, el mtodo de la regula falsi (regla del falso) o falsa posicin es un
mtodo iterativo de resolucin numrica de ecuaciones no lineales. El mtodo combina el
mtodo de biseccin y el mtodo de la secante.

#include<iostream>
#include<cmath>//biblioteca para poder utilizar la funcion pow()
using namespace std;

/*para encontrar una raz de la ecuacin f(x)=0 analticamente,


proporcionar la funcin
F(X)
DATOS:
-->a Y b que forman un intervalo, en donde se halla una raz
-->TOL criterio de convergencia//la tolerancia
-->EXACTITUD criterio de exactitud
-->MAXIT nmero mximo de iteraciones
RESULTADOS:
-->X la raiz aproximada o mensaje de falla
*/
//funcin de la cual se quiere hallar una raiz
double F(double x){

return 3*pow(x,2)+4*x-7;//en este caso usamos una funcin


cuadratica
}
double falsa_posicion(double a, double b,int MAXIT,double TOL,double E
XACTITUD){
int cont=1;
double fa=F(a);
double fb=F(b);
double c;//punto entre a y b
double fc;//F(c)
while(cont<MAXIT){
c=(a*F(b)-b*F(a))/(F(b)-F(a));//formula de la falsa
posicion
fc=F(c);
if(abs(fc)<=EXACTITUD){

return c;//raiz encontrada


}
if(abs(b-a)<=TOL){
c=(a+b)/2;
return c;//raiz encontrada
}

if(fc*fb>0)
a=c;
if(fa*fc>0)
b=c;
cont=cont+1;
}
return c;
}
int main (int argc, char *argv[]) {
//exactitud y tolerancia cercanas a
cero cout<<falsa_posicion(0,2,15,0.00000005,0.0000005);//retorna
la raiz
return 0;
}
metodo de newton rapson para calcular las raices de una funcion con n grado
en: 29 Septiembre 2011, 15:37

hola estoy haciendo un programa en dev c++ para hallar las raices de una funcion con el
metodo de newton rapson, ya la supe hallar para cuando es de grado 2 la funcion y me qued
asi:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>

double funcion (double x);


double derivadaf (double x);

main()
{
int Nit, i;
double cota,xi,xsol,error;

printf("Metodo de Newton-Raphson\n");
printf("Cota de error maxima: ");
scanf ("%lf",&cota);
printf ("Numero maximo de iteraciones: ");
scanf ("%d",&Nit);
printf ("Punto inicial: ");
scanf ("%lf",&xi);

i = 1; /* Contador de iteraciones */
error = cota + 1 ; /* Para asegurar que error > cota al ppio */

while (i<= Nit && error > cota)


{
/* Aplicamos formula Newton-Raphson */
xsol = xi - funcion (xi) / derivadaf(xi);
error = fabs (xsol-xi);
i++;
/* En la siguiente iteracion xsol es xi */
xi = xsol;
}

printf ("La solucion es %lf\n", xsol);


printf ("El valor de la funcion es %g\n",funcion(xsol));
printf ("El error alcanzado es %g\n", error);
if (i>=Nit)
printf ("Se ha alcanzado el maximo n. de iteraciones\n");
else
printf ("El n. de iteraciones ha sido %d\n",i);
getch();
}
double funcion(double x)
{
double f;
f = x*x + 2*x - 35;
return (f);
}

double derivadaf(double x)
{
double fp;
fp = 2*x + 2;
return (fp);

}
el problema es que como hago ahora para hacer este programa pero que me calcule cualquier
funcion con grado n, intente hacerlo del siguiente modo con vectores, pero la verdad no se como
poner el formato de la ecuacion ni la derivada?? alguien me puede guiar ayuda.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>
//vetor grado 3 posiciones, grado 5 -5 posiciones

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>

double funcion (double x);


double derivadaf (double x);

main()
{
int Nit, i;
double cota,xi,xsol,error;

printf("Metodo de Newton-Raphson\n");
printf("Cota de error maxima: ");
scanf ("%lf",&cota);
printf ("Numero maximo de iteraciones: ");
scanf ("%d",&Nit);
printf ("Punto inicial: ");
scanf ("%lf",&xi);

i = 1; /* Contador de iteraciones */
error = cota + 1 ; /* Para asegurar que error > cota al ppio */

while (i<= Nit && error > cota)


{
/* Aplicamos formula Newton-Raphson */
xsol = xi - funcion (xi) / derivadaf(xi);
error = fabs (xsol-xi);
i++;
/* En la siguiente iteracion xsol es xi */
xi = xsol;
}

printf ("La solucion es %lf\n", xsol);


printf ("El valor de la funcion es %g\n",funcion(xsol));
printf ("El error alcanzado es %g\n", error);
if (i>=Nit)
printf ("Se ha alcanzado el maximo n. de iteraciones\n");
else
printf ("El n. de iteraciones ha sido %d\n",i);
getch();
}
double funcion(double x)
{
int i=0, g=0;
double f, j[100], v=0;
printf ("digite el grado de la ecuacion: \n" );
scanf("%d", &g );
g++;
for(i=0; i<=g; i++)
{
printf ("digite el valor de variable: \n" );
scanf("%f", &v);
j=j+v;
}

f=
return (f);

}
double derivadaf(double x)
{
double fp;
fp =
return (fp);

}
C++ Program for Newton-Raphson
Method to find the roots of an
Equation
AUG 11, 2015
Manas Sharma
//Newton-Raphson Method
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
double f(double x); //declare the function for the given equation
double f(double x) //define the function here, ie give the equation
{
double a=pow(x,3.0)-x-11.0; //write the equation whose roots are to be determined
return a;
}
double fprime(double x);
double fprime(double x)
{
double b=3*pow(x,2.0)-1.0; //write the first derivative of the equation
return b;
}
int main()
{
double x,x1,e,fx,fx1;
[Link](4); //set the precision
[Link](ios::fixed);
cout<<"Enter the initial guess\n"; //take an intial guess
cin>>x1;
cout<<"Enter desired accuracy\n"; //take the desired accuracy
cin>>e;
fx=f(x);
fx1=fprime(x);
cout <<"x{i}"<<" "<<"x{i+1}"<<" "<<"|x{i+1}-x{i}|"<<endl;

do
{
x=x1; /*make x equal to the last calculated value of x1*/
fx=f(x); //simplifying f(x)to fx
fx1=fprime(x); //simplifying fprime(x) to fx1
x1=x-(fx/fx1); /*calculate x{1} from x, fx and fx1*/
cout<<x<<" "<<x1<<" "<<abs(x1-x)<<endl;
}while (fabs(x1-x)>=e); /*if |x{i+1}-x{i}| remains greater than the desired accuracy,
continue the loop*/
cout<<"The root of the equation is "<<x1<<endl;
return 0;
}

//output attached as jpg

Output

También podría gustarte