Vous êtes sur la page 1sur 12

04.

METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

SOLUCION DE ECUACIONES NO LINEALES

Considere una función 𝑦 = 𝑓(𝑥), 𝑐𝑜𝑛 𝑥 ∈ [𝑎, 𝑏]. Continúa en este intervalo.
Problema: Hallar una raíz de la ecuación 𝑓(𝑥) = 0

METODOS CERRADOS
METODO DE BISECCION

Procedimiento del método de bisección


Paso 1: Se elige el intervalo [𝑥𝑙, 𝑥𝑢] ⊂ [𝑎, 𝑏] tal que 𝑓(𝑥𝑙) ∗ 𝑓(𝑥𝑢) < 0. Esto significa que ∃𝑐 ∈
[𝑥𝑙, 𝑥𝑢], 𝑡𝑎𝑙 𝑞𝑢𝑒 𝑓(𝑐) = 0.
Paso 2: El método de bisección toma el punto medio de tal intervalo, como una primera aproximación,
así tenemos: 𝑥𝑟 = (𝑥𝑙 + 𝑥𝑢)/2
Paso 3: Luego se evalúa lo siguiente:
Si 𝑓(𝑥𝑙) ∗ 𝑓(𝑥𝑟) < 0, entonces 𝑥𝑢 = 𝑥𝑟; y se regresa al paso 2.
Si 𝑓(𝑥𝑙) ∗ 𝑓(𝑥𝑟) > 0, entonces 𝑥𝑙 = 𝑥𝑟; y se regresa al paso 2.
Si 𝑓(𝑥𝑙) ∗ 𝑓(𝑥𝑟) = 0, entonces 𝑐 = 𝑥𝑟; y termina el cálculo. Por lo general es lo más improbable
𝑥𝑟𝑛𝑢𝑒𝑣𝑜 −𝑥𝑟𝑎𝑛𝑡𝑒𝑟𝑖𝑜𝑟
Se puede calcular el error relativo porcentual, como sigue: 𝐸𝑎 = | | × 100%
𝑥𝑟𝑛𝑢𝑒𝑣𝑜
La relación de la tolerancia porcentual, para n cifras significativas, es: 𝐸𝑠 = (0.5 × 102−𝑛 )%
Los cálculos deben efectuarse hasta que: 𝐸𝑎 ≤ 𝐸𝑠

Algoritmo del método de bisección

Problema 01: Dada la función 𝑓(𝑥) = ln(𝑥) + 2𝑥 − 5


a) Geométricamente ubique el cero de f entre dos enteros consecutivos.
b) para encontrar aproximadamente el cero de f, aplicar el método de bisección, usando el criterio de
parada |𝑥𝑘 − 𝑥𝑘−1 | < 10−3
c) para encontrar aproximadamente el cero de f, aplicar el método de bisección, usando el criterio de
|𝑥𝑘 −𝑥𝑘−1 |
parada |𝑥𝑘 |
< 5 × 10−3
Solución:
1
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos
a) Graficando la función en el intervalo de 1 a 5, tenemos que:
Archivo: funcion.m Graficando en MatLab
function y=funcion(x) x=1:0.001:5;y=funcion(x);
y=log(x)+2*x-5; plot(x,y),grid

-1

-2

-3
1 1.5 2 2.5 3 3.5 4 4.5 5

Vemos que la raíz esta en el intervalo [2; 3]


b) Apliquemos el método de bisección, elaborando el programa en MatLab, con el criterio de parada
|𝑥𝑘 − 𝑥𝑘−1 | < 10−3
Archivo: biseccion01.m Ejecución en MatLab
clear;clc; >> biseccion01
disp('CALCULO DE LA RAIZ DE UNA ECUACION CALCULO DE LA RAIZ DE
NO LINEAL') UNA ECUACION NO LINEAL
disp('POR EL METODO CERRADO DE BISECCION') POR EL METODO CERRADO
error=input('Ingrese el error permitido= DE BISECCION
'); Ingrese el error permitido= 0.001
xl=input('Ingrese limite inferior xl = '); Ingrese limite inferior xl = 2
xu=input('Ingrese limite superior xu = '); Ingrese limite superior xu = 3
Es=error; Raiz Solucion :
Ea=100; 2.123458862304688
xr=0; Error aproximado : 0.0007185818
i=0; Numero iteraciones: 16
while Ea>Es >>
xa=xr;
xr=(xl+xu)/2; %FORMULA DE BISECCION
if funcion(xl)*funcion(xr)<0
xu=xr;
Ea=abs((xr-xa)/xr)*100;
elseif funcion(xl)*funcion(xr)>0
xl=xr;
Ea=abs((xr-xa)/xr)*100;
end
i=i+1;
end
fprintf('Raiz Solucion : %12.15f\n',xr)
fprintf('Error aproximado : %12.10f\n',Ea)
fprintf('Numero iteraciones: %12.0f\n',i)

c) Apliquemos el método de bisección, elaborando el programa en MatLab, con el criterio de parada


|𝑥𝑘 −𝑥𝑘−1 |
|𝑥𝑘 |
< 5 × 10−3
Esto significa que
𝑥𝑟𝑛𝑢𝑒𝑣𝑜 − 𝑥𝑟𝑎𝑛𝑡𝑒𝑟𝑖𝑜𝑟
𝐸𝑎 = | | × 100% < 𝐸𝑠 = (0.5 × 102−𝑛 )% = 5 × 10−3
𝑥𝑟𝑛𝑢𝑒𝑣𝑜
Significa que la solución debe tener 4 cifras significativas correctas

2
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

Archivo: biseccion02.m Ejecución en MatLab


clear;clc; >> biseccion02
disp('CALCULO DE LA RAIZ DE UNA ECUACION CALCULO DE LA RAIZ DE
NO LINEAL') UNA ECUACION NO LINEAL
disp('POR EL METODO CERRADO DE BISECCION') POR EL METODO CERRADO
n=input('Ingrese precisión de cifras DE BISECCION
significativas n = '); Ingrese precisión de cifras
xl=input('Ingrese límite inferior xl = '); significativas n = 4
xu=input('Ingrese límite superior xu = '); Ingrese límite inferior xl = 2
Es=(0.5*10^(2-n)); Ingrese límite superior xu = 3
Ea=100; Raiz Solucion :
xr=0; 2.123474121093750
i=0; Error aproximado : 0.0028743066
while Ea>Es Numero iteraciones: 14
xa=xr; >>
xr=(xl+xu)/2; %FORMULA DE BISECCION
if funcion(xl)*funcion(xr)<0
xu=xr;
Ea=abs((xr-xa)/xr)*100;
elseif funcion(xl)*funcion(xr)>0
xl=xr;
Ea=abs((xr-xa)/xr)*100;
end
i=i+1;
end
fprintf('Raiz Solucion : %12.15f\n',xr)
fprintf('Error aproximado : %12.10f\n',Ea)
fprintf('Numero iteraciones: %12.0f\n',i)

Ejemplo 02: Función: 𝑒 𝑥 + 𝑥 = 0, equivalente a: 𝑒 𝑥 = −𝑥


a) Graficando las funciones
Archivo: funcion.m Graficando en MatLab
function y=funcion(x) x=-100:0.01:5;y=funcion(x);
y=exp(x)+x; plot(x,y),grid

g(x) = exp(x) h(x) = -x en [-2,0]


f(x)=exp(x)+x, x en [-100,5] 2
200
1.8

150 1.6

1.4
100
eje de las ordenadas

1.2

1
50
0.8

0 0.6

0.4
-50
0.2

-100 0
-100 -80 -60 -40 -20 0 20 -2 -1.8 -1.6 -1.4 -1.2 -1 -0.8 -0.6 -0.4 -0.2 0
eje de las abscisas

Tiene una raíz en el intervalo: [-1, 0]


Archivo: grafica.m Graficando en MatLab
x=-2:0.001:0; >> grafica
y=exp(x);z=-x; >>
plot(x,y,x,z),grid

3
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

Archivo: biseccion02.m Ejecución en MatLab


clear;clc; >> biseccion02
disp('CALCULO DE LA RAIZ DE UNA ECUACION CALCULO DE LA RAIZ DE
NO LINEAL') UNA ECUACION NO LINEAL
disp('POR EL METODO CERRADO DE BISECCION') POR EL METODO CERRADO
n=input('Ingrese precisión de cifras DE BISECCION
significativas n = '); Ingrese precisión de cifras
xl=input('Ingrese límite inferior xl = '); significativas n = 6
xu=input('Ingrese límite superior xu = '); Ingrese límite inferior xl = -2
Es=(0.5*10^(2-n)); Ingrese límite superior xu = 0
Ea=100; Raíz Solución : -
xr=0; 0.567143201828003
i=0; Error aproximado : 0.0000420385
while Ea>Es Numero iteraciones: 23
xa=xr; >>
xr=(xl+xu)/2; %FORMULA DE BISECCION
if funcion(xl)*funcion(xr)<0
xu=xr;
Ea=abs((xr-xa)/xr)*100;
elseif funcion(xl)*funcion(xr)>0
xl=xr;
Ea=abs((xr-xa)/xr)*100;
end
i=i+1;
end
fprintf('Raiz Solucion : %12.15f\n',xr)
fprintf('Error aproximado : %12.10f\n',Ea)
fprintf('Numero iteraciones: %12.0f\n',i)

METODO DE FALSA POSICION O INTEROLACION LINEAL DE LA RAIZ

Considerando una función 𝑦 = 𝑓(𝑥), 𝑐𝑜𝑛 𝑥 ∈ [𝑎, 𝑏]. Continúa en este intervalo. Se debe hallar una
raíz de la ecuación 𝑓(𝑥) = 0
Se supone elegido el intervalo [𝑥𝑙, 𝑥𝑢] ⊂ [𝑎, 𝑏] tal que 𝑓(𝑥𝑙) ∗ 𝑓(𝑥𝑢) < 0. Esto significa que ∃𝑐 ∈
[𝑥𝑙, 𝑥𝑢], 𝑡𝑎𝑙 𝑞𝑢𝑒 𝑓(𝑐) = 0.
El método consiste en trazar una recta secante que pase por estos dos untos ya conocidos, en los que
cambia d signo la función. La intersección de esta recta con el eje x nos da una mejor aproximación de
la raíz

Como los triángulos coloreados son semejantes tenemos que


𝑓(𝑥𝑖 ) 𝑓(𝑥𝑢 )
=
𝑥𝑟 − 𝑥𝑙 𝑥𝑢 − 𝑥𝑟
De donde despejando 𝑥𝑟 , tenemos que:
𝑓(𝑥𝑢 )(𝑥𝑙 − 𝑥𝑢 )
𝑥𝑟 = 𝑥𝑢 −
𝑓(𝑥𝑙 ) − 𝑓(𝑥𝑢 )
A partir de aquí se usa el mismo criterio que el método de bisección, para aproximarnos a la raíz.
4
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

Algoritmo del Método de Falsa Posición

Problema: Hallar una raíz de la ecuación: 𝑒 −𝑥 − 𝑥 = 0, usando el método de falsa posición.


Solución:
Graficando la ecuación en la forma 𝑒 −𝑥 = 𝑥, tenemos que:
2

1.8

1.6

1.4

1.2

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Aquí vemos que la raíz esta en el intervalo [0,1]


Programa en MatLab del método de falsa posición
Archivo: regulafalsi.m Ejecución en MatLab
clear;clc; >> regulafalsi
disp('calcula la raíz de una ecuación no calcula la raiz de una ecuación no
lineal') lineal
disp('por el método de falsa posición') por el método de falsa posición
n=input('Ingrese precisión de cifras Ingrese precisión de cifras
significativas n='); significativas n=6
xl=input('Ingrese límite inferior xl=') Ingrese límite inferior xl=0
xu=input('Ingrese límite superior xu=') xl =
Es=0.5*10^(2-n);Ea=100; 0
xr=0;i=0; Ingrese límite superior xu=1
while Ea>Es xu =
xa=xr; 1
xr=xu-(funcion(xu))*(xl- Raiz Solucion :
xu)/(funcion(xl)-funcion(xu));% formula 0.567143299931633
del metodo de regula falsi Error aproximado : 0.0000134185
if funcion(xl)*funcion(xr)<0 Numero iteraciones: 8
xu=xr; >>
Ea=abs((xr-xa)/xr)*100;
elseif funcion(xl)*funcion(xr)>0
xl=xr;
Ea=abs((xr-xa)/xr)*100;
end
i=i+1;
end
fprintf('Raíz Solucion : %12.15f\n',xr)
fprintf('Error aproximado : %12.10f\n',Ea)
fprintf('Numero iteraciones: %12.0f\n',i)

5
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

Hallar la raíz de y=x^3+x+16; que se encuentra en el intervalo [-3; -2]


Solución

>> regulafalsi
calcula la raiz de una ecuacion no lineal
por el metodo de falsa posicion
Ingrese precision de cifras significativas n=6
Ingrese limite inferior xl=-3
xl = -3
Ingrese limite superior xu=-2
xu = -2
Raiz Solucion : -2.387686487318143
Error aproximado : 0.0000105224
Numero iteraciones: 10
>>

6
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

METODOS ABIERTOS
Estos métodos requieren uno o dos valores para el inicio del proceso del cálculo de la raíz, pero que no
necesariamente encierran la raíz, pueden ser convergentes a la raíz o divergentes. Pero cuando
convergen lo hacen de una manera más acelerada.

METODO DEL PUNTO FIJO O SUSTITUCION SUCESIVA


En este método tenemos que la ecuación inicial de 𝑓(𝑥) = 0, se convierte en una ecuación
equivalente 𝑥 = 𝑔(𝑥). En la que la función g debe cumplir ciertas condiciones respecto a ala
convergencia. De esta forma se obtiene un proceso iterativo, como sigue:
𝑥0
{𝑥
𝑛+1 = 𝑔(𝑥𝑛 ), 𝑛 ∈ 𝑁
Además el error aproximado de esta ecuación se calcula usando la siguiente formula
𝑥𝑖+1 − 𝑥𝑖
𝐸𝑎 = | | × 100%
𝑥𝑖+1

ALGORITMO DEL MÉTODO DE PUNTO FIJO

CODIGO DEL METODO DE PUNTO FIJO


Archivo: puntofijo.m Ejecución en MatLab
clear;clc; calcula la raiz de una ecuacion no
disp('calcula la raíz de una ecuación no lineal
lineal') por el método abierto
disp('por el método abierto') iteración simple unto fijo
disp('iteración simple unto fijo') Ingrese precisión de cifras
n=input('Ingrese precisión de cifras significativas n=4
significativas n='); Ingrese valor inicial x0=0
xi=input('Ingrese valor inicial x0=') xi =
Es=0.5*10^(2-n);Ea=100; 0
i=0; Raíz Solución :
while Ea>Es 0.567135490206278
xa=xi; Error aproximado : 0.0038004666
xi=g(xi); Numero iteraciones: 20
Ea=abs((xi-xa)/xi)*100; >>
i=i+1;
end
fprintf('Raíz Solución : %12.15f\n',xi)
fprintf('Error aproximado : %12.10f\n',Ea)
fprintf('Numero iteraciones: %12.0f\n',i)

7
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

METODO DE NEWTON - RAPHSON

Es el método más popular para calcular raíces, por su rapidez de convergencia.


Considérese la ecuación f (x)= 0 , Donde la función f cumple las condiciones para aplicar el método
de las tangentes en cierto intervalo.
El acercamiento se da por un proceso iterativo, se parte de una primera aproximación xi.
Luego se traza la tangente a la función en el punto (xi,f(xi)).
La siguiente aproximación de la raíz es la intersección de esta tangente con el eje x, se denomina
x(i+1).
En esta nueva aproximación se halla nuevamente la tangente, y el proceso sigue hasta que se cumpla la
condición del error.

ALGORITMO DEL MÉTODO DE NEWTON - RAPHSON

Según ello resolver: 𝑓(𝑥) = 𝑒 −𝑥 − 𝑥 = 0, empleando como valor inicial xi=0.


Solución:

8
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

Archivo: newton.m Ejecución en MatLab


clear;clc; calcula la raíz de una ecuación
disp('calcula la raíz de una ecuación no no lineal
lineal') por el método abierto
disp('por el metodo abierto') Newton - Raphson
disp('Newton - Raphson') Ingrese precisión de cifras
n=input('Ingrese precisión de cifras significativas n=6
significativas n='); Ingrese valor inicial xi=0
xi=input('Ingrese valor inicial xi=') xi = 0
Es=0.5*10^(2-n);Ea=100; Raíz Solución :
i=0; 0.567143290409781
while Ea>Es Error aproximado :
xa=xi; 0.0000221064
fxi=funcion(xi); Numero iteraciones: 4
dxi=dfuncion(xi); >>
xi=xi-fxi/dxi;
Ea=abs((xi-xa)/xi)*100;
i=i+1;
end
fprintf('Raiz Solucion : %12.15f\n',xi)
fprintf('Error aproximado : %12.10f\n',Ea)
fprintf('Numero iteraciones: %12.0f\n',i)

METODO DE LA SECANTE
Este método surge en reemplazo del método de Newton-Raphson, por el inconveniente de la derivada.
Ya que en algunas funciones su derivada resulta muy engorrosa. Por ello se reemplaza la derivada por
una estimación de la pendiente, con diferencias.

La aproximación de la derivada 𝑓′(𝑥) esta dado por la pendiente de la recta secante que corta a la
función en (𝑥𝑖−1 , 𝑓(𝑥𝑖−1 )) y (𝑥𝑖 , 𝑓(𝑥𝑖 )), siendo 𝑥𝑖−1 𝑦 𝑥𝑖 puntos muy cercanos, de lo cual se
obtiene
𝑓(𝑥𝑖−1 ) − 𝑓(𝑥𝑖 )
𝑓′(𝑥𝑖 ) ≅
𝑥𝑖−1 − 𝑥𝑖
Esta aproximación de la derivada por la diferencia finita dividida hacia atrás, se reemplaza en el
algoritmo de Newton-Raphson, de donde se obtiene:
𝑓(𝑥𝑖 )(𝑥𝑖−1 − 𝑥𝑖 )
𝑥𝑖+1 = 𝑥𝑖 −
𝑓(𝑥𝑖−1 ) − 𝑓(𝑥𝑖 )
Algoritmo del método de la secante

9
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

Hallar la raíz de 𝑓(𝑥) = 𝑒 −𝑥 − 𝑥 = 0, usando el método de la secante, use como valores iníciales o
semilla 𝑥0 = 0 𝑦 𝑥1 = 1 .
Archivo: newton.m Ejecución en MatLab
clear;clc; calcula la raiz de una ecuacion no
disp('calcula la raiz de una ecuacion no lineal
lineal') por el metodo abierto
disp('por el metodo abierto') de la secante
disp('de la secante') Ingrese precision de cifras
n=input('Ingrese precision de cifras significativas n=6
significativas n='); Ingrese valor inicial xi-1=0
xo=input('Ingrese valor inicial xi-1=') xo =
xi=input('Ingrese valor inicial xi=') 0
Es=0.5*10^(2-n);Ea=100; Ingrese valor inicial xi=1
i=0; xi =
while Ea>Es 1
xa=xi; Raiz Solucion :
fxo=funcion(xo); 0.567143299931633
fxi=funcion(xi); Error aproximado : 0.0000134185
xi=xi-fxi*(xo-xi)/(fxo-fxi); Numero iteraciones: 8
Ea=abs((xi-xa)/xi)*100; >>
i=i+1;
end
fprintf('Raiz Solucion : %12.15f\n',xi)
fprintf('Error aproximado : %12.10f\n',Ea)
fprintf('Numero iteraciones: %12.0f\n',i)

10
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos

SISTEMAS DE ECUACIONES LINEALES


Esto es resolver un conjunto de ecuaciones simultaneas no lineales:
𝑓1 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0
𝑓2 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0
⋮ ⋮ ⋮
𝑓𝑛 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0
La solución de este sistema de ecuaciones simultáneas, consiste de un conjunto de valores de 𝑥𝑖 que
simultáneamente verifican todas las ecuaciones.

ITERACION SIMPLE DE PUNTO FIJO


𝑥 2 + 𝑥𝑦 = 10
Resolver el sistema: {
𝑦 + 3𝑥𝑦 2 = 57
Usando el método de iteración de punto fijo y empleando como valor inicial 𝑥𝑖 = 1.5 𝑦 𝑦𝑖 = 3.5.
Solución:

Rescribiendo el sistema tenemos


𝑢(𝑥, 𝑦) = 𝑥 2 + 𝑥𝑦 − 10 =
𝑣(𝑥, 𝑦) = 𝑦 + 3𝑥𝑦 2 − 57 = 0
Despejando x e y de las ecuaciones, respectivas tenemos:
𝑥 = 𝑔(𝑥, 𝑦) = √10 − 𝑥𝑦 𝑥𝑖 = 𝑔(𝑥𝑖 , 𝑦𝑖 ) = √10 − 𝑥𝑖 𝑦𝑖
57−𝑦 57−𝑦𝑖
𝑦 = ℎ(𝑥, 𝑦) = √ 𝑦𝑖 = ℎ(𝑥𝑖 , 𝑦𝑖 ) = √
3𝑥 3𝑥𝑖

Codigo en MatLab
Archivo: puntofijosist.m Ejecución en MatLab
clear;clc; calcula la raiz de un sistema de
disp('calcula la raiz de un sistema de dos dos ecuaciones no lineales
ecuaciones no lineales') por el metodo abierto
disp('por el metodo abierto') iteracion simple punto fijo
disp('iteracion simple punto fijo') Ingrese precision de cifras
n=input('Ingrese precision de cifras significativas n=4
significativas n='); Ingrese valor inicial xo=1.5
xo=input('Ingrese valor inicial xo=') xo = 1.5000
yo=input('Ingrese valor inicial yo=') Ingrese valor inicial yo=3.5
Es=0.5*10^(2-n);Eax=100;Eay=100; yo = 3.5000
i=0; la raiz "x" es:
while Eax>Es & Eay>Es 2.000032559383514
xi=g(xo,yo); la raiz "y" es:
yi=h(xi,yo); 2.999973420852066
Eax=abs((xi-xo)/xi)*100; Numero iteraciones: 9
Eay=abs((yi-yo)/yi)*100; >>
xo=xi;yo=yi;
i=i+1;
end
fprintf('la raiz "x" es: %12.15f\n',xi)
fprintf('la raiz "y" es: %12.15f\n',yi)
fprintf('Numero iteraciones: %12.0f\n',i)

Método de Newton-Raphson para sistemas


Este método en el caso de una variable, uso el teorema de Taylor. Que desarrolla la serie de primer
orden, como sigue:
𝑓(𝑥𝑖+1 ) ≅ 𝑓(𝑥𝑖 ) + 𝑓′(𝑥𝑖 )(𝑥𝑖+1 − 𝑥𝑖 )

11
04. METODOS NUMERICOS ECUACIONES NO LINEALES Amado Malca Villalobos
Donde si 𝑓(𝑥𝑖+1 ) se hace cero, tenemos que
𝑓(𝑥𝑖 )
𝑥𝑖+1 = 𝑥𝑖 −
𝑓′(𝑥𝑖 )
En el caso de un sistema de n ecuaciones con n variables, se debe usar una serie de Taylor de multiples
variables, consideremos el caso n igual a 2.
𝑢(𝑥, 𝑦) = 0
𝑣(𝑥, 𝑦) = 0
De donde usando la serie de Taylor
𝜕𝑢𝑖 𝜕𝑢𝑖
𝑢𝑖+1 = 𝑢𝑖 + (𝑥𝑖+1 − 𝑥𝑖 ) + (𝑦 − 𝑦𝑖 )
𝜕𝑥 𝜕𝑦 𝑖+1
𝜕𝑣𝑖 𝜕𝑣𝑖
𝑣𝑖+1 = 𝑣𝑖 + (𝑥𝑖+1 − 𝑥𝑖 ) + (𝑦 − 𝑦𝑖 )
𝜕𝑥 𝜕𝑦 𝑖+1
Donde igualando las expresiones 𝑢𝑖+1 = 0 𝑦 𝑣𝑖+1 = 0
Y luego despejando 𝑥𝑖+1 𝑦 𝑦𝑖+1
∆𝑥 ∆𝑦
𝑥𝑖+1 = 𝑥𝑖 − 𝑦𝑖+1 = 𝑦𝑖 −
∆ ∆
Donde tenemos que:
𝜕𝑢𝑖 𝜕𝑢𝑖 𝜕𝑢𝑖 𝜕𝑢𝑖
𝜕𝑢𝑖 𝜕𝑣𝑖 𝜕𝑣𝑖 𝜕𝑢𝑖
𝑢𝑖 𝜕𝑣𝑖 𝜕𝑣𝑖
𝑢𝑖 𝜕𝑢𝑖 𝜕𝑣𝑖
𝜕𝑥 𝜕𝑦 𝜕𝑦 𝜕𝑥
∆= | 𝜕𝑣 𝜕𝑣𝑖
| = ∙ − ∙ ∆𝑥 = | 𝜕𝑣𝑖
| = 𝑢𝑖 ∙ − 𝑣𝑖 ∙ ∆𝑦 = | 𝜕𝑣 | = 𝑣𝑖 ∙ − 𝑢𝑖 ∙
𝑖 𝜕𝑥 𝜕𝑦 𝜕𝑥 𝜕𝑦 𝜕𝑦 𝜕𝑦 𝑖 𝜕𝑥 𝜕𝑥
𝑣𝑖 𝑣𝑖
𝜕𝑥 𝜕𝑦 𝜕𝑦 𝜕𝑥

Programa en Matlab de Ne-R para un sistema de dos ecuaciones con dos incognitas
Archivo: newtonsist.m Ejecución en MatLab
clear;clc; calcula la raiz de un sistema
disp('calcula la raiz de un sistema de dos de dos ecuaciones no
ecuaciones no lineales') lineales
disp('por el metodo abierto') por el metodo abierto
disp('de Newton - Raphson') de Newton - Raphson
n=input('Ingrese precision de cifras Ingrese precision de cifras
significativas n='); significativas n=6
xi=input('Ingrese valor inicial xi=') Ingrese valor inicial xi=1.5
yi=input('Ingrese valor inicial yi=') xi =
Es=0.5*10^(2-n);Eax=100;Eay=100; 1.5000
i=0; Ingrese valor inicial yi=3.5
%El sistema es yi =
%u(x,y)=x^2+x*y-10=0 3.5000
%v(x,y)=y+3*x*y^257=0 la raiz "x" es:
while Eax>Es & Eay>Es 1.999999908285831
xa=xi;ya=yi; la raiz "y" es:
ui=xi^2+xi*yi-10;vi=yi+3*xi*yi^2-57; 3.000000320999110
duidx=2*xi+yi;duidy=xi; Numero iteraciones: 8
dvidx=3*xi^2;dvidy=1+6*xi*yi; >>
Jacobiano=duidx*dvidy-duidy*dvidx;
% algoritmo de N-R
xi=xi-(ui*dvidy-vi*duidy)/Jacobiano;
yi=yi-(vi*duidx-ui*dvidx)/Jacobiano;
Eax=abs((xi-xa)/xi)*100;
Eay=abs((yi-ya)/yi)*100;
i=i+1;
end
fprintf('la raiz "x" es: %12.15f\n',xi)
fprintf('la raiz "y" es: %12.15f\n',yi)
fprintf('Numero iteraciones: %12.0f\n',i)

12

Vous aimerez peut-être aussi