Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tarea 1
La presente asignación tiene como objetivo emplear el método de Newton Raphson para resolver un
sistema de ecuaciones, esto tomando dos caminos distintos:
El empleo de softwares (MATLAB) que permita resolver el sistema mediante un ciclo iterativo.
Resolver la ecuación tradicionalmente (a mano alzada) con ayuda de una calculadora.
Si se utiliza esta expresión y se evalúa en un punto 𝑥 = 𝑥1 , se sabe que la ecuación evaluada en ese
punto tiene una raíz, aproximando los términos de la serie que son superiores a la derivada de primer
orden a cero, entonces nos queda que:
𝛿𝑓(𝑥0 )
𝑓(𝑥1 ) ≈ 𝑓(𝑥0 ) + (𝑥1 − 𝑥0 ) ≈ 0
𝛿𝑥
−1
𝛿𝑓(𝑥0 )
𝑥1 = 𝑥0 − [ ] 𝑓(𝑥0 )
𝛿𝑥
Entonces, en general, para una sola variable, la expresión viene dada por:
−1
(𝑘+1) (𝑘)
𝛿𝑓(𝑥 (𝑘) )
𝑥 =𝑥 −[ ] 𝑓(𝑥 (𝑘) )
𝛿𝑥
Para sistemas de ecuaciones con varias variables, la ecuación pasa a tomar la siguiente forma:
Luego, más abajo tenemos la primera matriz en donde se colocarán los resultados de aplicar NR y los
errores asociados por defecto. Usamos la función “syms” para definir las variables x1 y x2, así como las
funciones asociadas a las ecuaciones, esto nos permitirá derivar y poder evaluar las funciones y evaluar
variables sin mucho problema. En la Figura 3 podemos observar esto:
Figura 3: Entrada de las funciones
Después, usamos la función diff para obtener las derivadas parciales de f1 y f2, y escribimos las
matrices de funciones y el Jacobiano.
La primera tiene que ver con el numero límite de iteraciones que desea el usuario, al alcanzar esta
cifra el bucle terminará. La segunda posibilidad tiene que ver con el error o tolerancia deseada por el
usuario, cuando el error de ambas variables sea menor que el error mínimo deseado el bucle terminará.
Al finalizar el bucle creamos una nueva matriz en donde separaremos los resultados del número de
iteraciones y la unimos a las condiciones con que iniciamos el proceso. Finalmente, imprimimos los
resultados de cada iteración.
Para efectos de este problema, se tomaron como puntos de arranque (2,3), con un error de 10*10-3,
y un máximo de 20 iteraciones. Los resultados se muestran a continuación.
Figura 8: Iteración 1
Figura 9: Iteración 2
clear all
clc
n=0; %Contador
%No tocar
tabla=zeros(iter,5); %Tabla inicial de resultados
errx1= 100; %Error inicial por defecto
errx2= 100; %Error inicial por defecto
syms x1 x2 f1 f2
f1(x1,x2)= x1^2+x2^2-25;
f2(x1,x2)= 3*x1+2*x2-12;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
df1x1= diff(f1,x1);
df1x2= diff(f1,x2);
df2x1= diff(f2,x1);
df2x2= diff(f2,x2);
F=[f1;f2];
J=[df1x1 df1x2;df2x1 df2x2];
%La primera tiene que ver con el numero límite de iteraciones que desea el
%usuario, al alcanzar esta cifra el bucle terminará.
%La segunda posibilidad tiene que ver con el error o tolerancia deseada por
%el usuario, cuando el erro de ambas variables sea menor que el error
%minimo deseado el bucle terminará.
%Errores
tabla(n,3)= abs(Xn(1,1)-X0(1,1));
tabla(n,5)= abs(Xn(2,1)-X0(2,1));
errx1= tabla(n,3) + 0;
errx2= tabla(n,5) + 0;
end
k= n-1;
ord=zeros(k,5);
for i=1:1:k
ord(i,1)=tabla(i,1);
ord(i,2)=tabla(i,2);
ord(i,3)=tabla(i,3);
ord(i,4)=tabla(i,4);
ord(i,5)=tabla(i,5);
end