Algoritmia - Algoritmo de newton-rapshon

 
Vista:

Algoritmo de newton-rapshon

Publicado por Augusto vargas (1 intervención) el 13/03/2001 21:34:08
hola amigos!!!

Mi problema es el siguiente:

necesito saber como hacer una derivada, pues tengo que ahcer el algoritmo de newton-Raphson y tengo dificultades con las derivadas... si alguien sabe como hacerlas se lo agradesco.

att

Augusto vargas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Algoritmo de newton-rapshon

Publicado por numen (3 intervenciones) el 14/03/2001 06:20:32
Pues fácil, tío. Usa una derivada discreta. Ahí va un pseudocódigo sencillo:

SUBRUTINA derivada_discreta_de_F
ENTRADA: x //punto de derivación.
SALIDA: d //la derivada discreta.
HACER delta = 1.d-9
HACER d = (F(x+delta) - F(x-delta))/(2*delta)
RETORNAR d

En fin, queda claro. ¡Si usas Newton ten cuidado de que la derivada no sea cero! La constante delta cuanto más pequeña mejor, pero ten en cuenta que los ordenadores tienen precisión finita.
Finalmente, ten en cuenta que esta subrutina evalúa F dos veces. Sería menos costoso que, si conoces la función F en tiempo de compilación, calcularas su derivada a mano y la implementases, siempre que no sea muy complicada. Es menos genérico, pero posiblemente más rápido.

Atentamente, numen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Algoritmo de newton-rapshon

Publicado por saintspy (3 intervenciones) el 05/05/2001 01:18:56
revisa mejor tu email...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Algoritmo de newton-rapshon

Publicado por flavio (1 intervención) el 15/08/2006 20:13:07
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>

//funçao
double fx1(double x)
{
double f1;
f1=pow(x,3)-9*x+3;
return(f1);
}

//derivada da funçao
double dfx(double x)
{
double dfx;
f2=pow(3*x,2)-9;
return(dfx);
}

void newton()
{
double fx,fdx,xo,tol,x,a,b;
tol=0.00001;
cout<<"\n Digite o valor de A : ";
cin>>a;
cout<<"\n Digite o valor de B : ";
cin>>b;
xo=(a+b)/2;
fx=fx1(xo);
fdx=fx1(xo);

while (fabs(fx)>tol)
{
x=xo-(fx/fdx);
if (fabs(fx)<tol)
cout<<"\n Xo E RAIZ >>"<<x;

else
xo=x;
fx=fx1(xo);
fdx=dfx(xo);
}
cout<<"\n RAIZ : "<<x;
}

main()
{
clrscr();
newton()
getchar();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar