Programa MATLAB (Newton Raphson 2 variables)

Estoy intentando programar el método iterativo de newton raphson en MATLAB y creo que lo que es el algoritmo de dentro del bucle y lo demás esta bien pero en la condición del while lo he intentado todo, pero no se porque no entra en el bucle y por tanto hace las repeticiones.

Se que puede ser una chapuza porque estoy empezando pero porfavor solo dime lo que tengo mal y lo corrijo no quiero que cambies la sintaxis gracias.

Se que faltan los ';' al final de las sentencias pero es para ir comprobando lo que va haciendo el programa y donde falla. Gracias otra vez.

function raphson2v
syms x y
f1=input('Inserte la primera la funcion....\n');
f2=input('Inserte la segunda funcion.......\n');
x0=input(' Inserte valor inicial de la primera variable...');
y0=input ('Inserte valor inicial de la segunda variable...');
d=input('Inserte el numero de decimales de precision...');
E=10^(-d)
F= [f1;f2]
J=jacobian(F,[x,y]) 
prod=J\F
sol=[x0;y0]
sustsol=subs(F,{x,y},{sol(1,1),sol(2,1)})
%Sustituir las soluciones que se van obteniendo en las funciones, para ver cuando estan cerca(<Error) de cumplirlas%
iter=0;
while (E>sustsol(1,1) && E>sustsol(2,1))
sol=subs(sol-prod,{x y},{sol(1,1),sol(2,1)})
iter=iter+1;
sustsol=subs(F,{x,y},{sol(1,1),sol(2,1)})
fprintf('%f \n',sustsol(1,1));
fprintf('%f \n',sustsol(2,1));
end %sol=inic-subs(prod,{x,y},{sol(1,1),sol(2,1)});
fprintf('X=%f\n',sol(1,1));
fprintf('Y=%f\n',sol(2,1));
fprintf('\nSe han necesitado %d iteraciones',iter);
end

1 Respuesta

Respuesta
3

No uso MatLab ni he llegado a casos tan complejos como el que planteas. Por lo que leo debe ser una función de R2 en R2, no.

Prueba a ver cambinado esta orden.

while (E<sustsol(1,1) || E<sustsol(2,1))

Porque supongo que lo que quieres es que la función tome en sus dos variables un error menor que el tolerado. Entonces la orden sería esa.

Ojala te sirva, ya me gustaría poder comprobarlo por mi cuenta.

Ok no pasa nada, de todas formas ya lo arregle, poniendo otro bucle diferente, pero gracias de todos modos.

Lo que trata el programa es un método iterativo de solución de sistemas no lineales de ecuaciones,(Método de Newton Raphson ), partiendo de 2 puntos relativamente cerca de la solución, introduciendolos en el algoritmo, cada vez converge mas a la solución.

Perdón por no ponerlo en informática o algo asi pero es que el programa esta tan orientado a matemáticas y no todo el mundo lo conoce que creí que quizás lo conocería mejor alguien de matemáticas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas