Problemas de Metodos Numericos
Problemas de Metodos Numericos
CIENCIAS FISICAS
INGENIERIA MECANICA DE FLUIDOS
2020-II
PROBLEMA 1:
CALCULO MANUAL:
√2(9.81)𝐻
f(H)=√2(9.81)𝐻(tanh( 2(4)
(2.5))-5
Primera iteración:
(−5)+(1.019273183589953)
xr= = 1 ^ f(1)= -1.093720547483790
2
(1.5)+(2)
xr= = 1.75 ^ f(1.75)= 0.566253547532602
2
clear all
clc
format long
a=0;
b=2;
tol=1;
f='sqrt(19.62*x)*tanh(0.3125*sqrt(19.62*x))-5';
f=inline(f);
ezplot(f);
c=0;
ea=100;
i=0;
fprintf(' It a b c error
\n');
while(ea > tol)
c=(a+b)/2;
ea=100*(c-a)/c;
fprintf('\n %d\t %f\t %f\t %f\t %f\t %f
\n',i+1,a,b,c,ea);
i=i+1;
if(f(a)*f(c)<0)
b=c;
else
a=c;
end
end
EJECUCION DEL PROGRAMA
It a b c error
PROBLEMA 2:
CALCULO MANUAL:
GRAFICO DE LA ECUACION:
h f(h)
0 -30.00000
1 -21.62242
2 -0.67847
3 26.54867
4 53.77580
5 74.71976
6 83.09734
7 72.62536
8 37.02064
9 -30.00000
10 -134.71976
9−ℎ
→ 𝑓(ℎ) = 𝜋ℎ2 ( ) − 30
3
𝑓′(ℎ) = 6𝜋ℎ − 𝜋ℎ2
Usando el método de Newton-Raphson:
𝑓(ℎ𝑖 )
ℎ𝑖+1 = ℎ𝑖 −
𝑓′(ℎ𝑖 )
9 − hi
πhi 2 (
hi+1 = hi − 3 ) − 30
6πhi − πhi 2
valor inicial: h0 = 3
cifras significativas: n = 5
error permisible = 0.5 ∗ 10^(2 − n) = 0.0005
Iteración 1:
9 − ℎ0
𝜋ℎ0 2 ( ) − 30
3
ℎ1 = ℎ0 −
6𝜋ℎ0 − 𝜋ℎ0 2
18𝜋 − 30
ℎ1 = 3 −
18𝜋 − 9𝜋
ℎ1 = 2.06103
𝑒𝑎 = (ℎ1 − ℎ0 )/ℎ1
𝑒𝑎 = −0.45558
𝑒𝑎 = 45.55808%
Iteración 2:
9 − ℎ1
𝜋ℎ1 2 (
ℎ2 = ℎ1 − 3 ) − 30
6𝜋ℎ1 − 𝜋ℎ1 2
9 − 2.06103
𝜋 ∗ 2.061032 ( 3 ) − 30
ℎ2 = 2.06103 −
6𝜋 ∗ 2.06103 − 𝜋 ∗ 2.061032
ℎ2 = 2.02704
𝑒𝑎 = (ℎ2 − ℎ1 )/ℎ2
𝑒𝑎 = −0.01677
𝑒𝑎% = 1.67687%
Iteración 3:
9 − ℎ2
𝜋ℎ2 2 (
ℎ3 = ℎ2 − 3 ) − 30
6𝜋ℎ2 − 𝜋ℎ2 2
9 − 2.02704
𝜋 ∗ 2.027042 ( ) − 30
ℎ3 = 2.02704 − 3
6𝜋 ∗ 2.02704 − 𝜋 ∗ 2.027042
ℎ3 = 2.02691
𝑒𝑎 = (ℎ3 − ℎ2 )/ℎ3
𝑒𝑎 = −6.7 × 10−5
𝑒𝑎% = 0.00673%
Cuadro de iteraciones
En el problema nos piden solo 3 iteraciones:
PROBLEMA 3:
6.20. La ecuación de Manning se puede describir para un flujo en un canal abierto
rectangular como
√𝑺(𝑩𝑯)𝟓/𝟑
𝑸=
𝒏(𝑩 + 𝟐𝑯)𝟐/𝟑
Donde Q=flujo (m3/s), S=pendiente (m/m), H=profundidad (m), B=ancho (m) y
n=coeficiente de rugosidad de Manning. Desarrolle un esquema de iteración para
despejar H de esta ecuación dado Q=5, S=0.0002, B=20 y n=0.03. Pruebe que su
esquema converge para todos los valores iniciales mayores que cero o iguales a cero.
CALCULO MANUAL
Despejando en función de H
𝑄. 𝑛(𝐵 + 2𝐻)2/3
= (𝐵𝐻)5/3
𝑆 1/2
3/5
𝑄𝑛(𝐵 + 2𝐻)2/3
( ) = 𝐵𝐻
𝑆 1/2
1 𝑄𝑛 3/5
𝐻 = . ( ) . (𝐵 + 2𝐻)2/5
𝐵 √𝑆
En valores de x
1 𝑄𝑛 3/5
𝑥 = . ( ) . (𝐵 + 2𝑥)2/5
𝐵 √𝑆
La nueva función
1 𝑄𝑛 3/5
𝑔(𝑥) = . ( ) . (𝐵 + 2𝑥)2/5
𝐵 √𝑆
• Error permisible=0.00001
• Q= 5
• S=0.0002
• B=20
• n=0.03
Iteración 1
1 (5)(0.03) 3/5
𝑥1 = .( ) . (20 + 2(0))2/5 = 0.683483067
20 √0.0002
0.683483067 − 0
𝑒𝑟𝑟𝑜𝑟 = | | ∗ 100 = 100.000000000
0.683483067
Iteración 2
1 (5)(0.03) 3/5
𝑥1 = .( ) . (20 + 2(0.683483067))2/5 = 0.70179926
20 √0.0002
0.70179926 − 0.683483067
𝑒𝑟𝑟𝑜𝑟 = | | ∗ 100 = 2.609890618
0.70179926
Cuadro de iteraciones:
𝐻 = 0.702293256 𝑚
• Error permisible=0.00001
• Q= 5
• S=0.0002
• B=20
• n=0.03
Iteración 1
1 (5)(0.03) 3/5
𝑥1 = .( ) . (20 + 2(0.5))2/5 = 0.696952979
20 √0.0002
0.696952979 − 0.5
𝑒𝑟𝑟𝑜𝑟 = | | ∗ 100 = 28.259148779
0.696952979
Iteración 2
1 (5)(0.03) 3/5
𝑥1 = .( ) . (20 + 2(0.696952979))2/5 = 0.702153062
20 √0.0002
0.702153062 − 0.696952979
𝑒𝑟𝑟𝑜𝑟 = | | ∗ 100 = 0.740591028
0.702153062
Cuadro de iteraciones:
𝐻 = 0.702293256 𝑚
En conclusión, este esquema converge para todos los valores iniciales mayores que
cero o iguales a cero. Sabiendo esto, podemos iniciar las iteraciones, y llegaríamos al
mismo resultado.
CODIGO DEL PROGRAMA:
clear all
clc
disp('La ecuacion de Manning en canal rectangular')
Q=input('ingrese el flujo volumetrico = ');
S=input('ingrese la pendiente = ');
B=input('ingrese el ancho del canal = ');
n=input('ingrese el coeficiente de rugosidad de Manning =
');
xi=input('ingrese el valor inicial = ');
es=input('ingrese el error permisible = ');
ea=100;
i=0;
fprintf('\n i xa xi
error\n');
while ea>es
xa=xi;
xi=(1/B)*(((Q*n)/(S^0.5))^(3/5))*((B+(2*xi))^(2/5));
ea=abs((xi-xa)/xi)*100;
i=i+1;
fprintf('%3.0f\t %12.9f\t %12.9f\t
%12.9f\t\n',i,xa,xi,ea);
end
fprintf ('\nEl valor de profundidad es =%12.9f\n',xi)
fprintf ('números iteraciones =%4.0f\n',i)
EJECUCION DEL PROGRAMA
La ecuación de Manning en canal rectangular
ingrese el flujo volumétrico = 5
ingrese la pendiente = 0.0002
ingrese el ancho del canal = 20
ingrese el coeficiente de rugosidad de Manning = 0.03
ingrese el valor inicial = 0
ingrese el error permisible = 0.00001
i xa xi error
1 0.000000000 0.683483067 100.000000000
2 0.683483067 0.701799260 2.609890618
3 0.701799260 0.702280289 0.068495421
4 0.702280289 0.702292916 0.001797883
5 0.702292916 0.702293247 0.000047191
6 0.702293247 0.702293256 0.000001239
𝒚 = −𝒙𝟐 + 𝒙 + 𝟎. 𝟕𝟓
𝒚 + 𝟓𝒙𝒚 = 𝒙𝟐
Utilice los valores iniciales de x=y=1.2, y analice los resultados
A) POR EL METODO DE ITERACION DE PUNTO FIJO
CALCULO MANUAL
Hacemos:
xi = u(x,y) = √𝑥 − 𝑦 + 0.75
𝑥2
yi = v(x,y) =
1+5𝑥
x0 = 1.2 ^ y0 = 1.2
Primera iteración
x = xi ^ y = yi
Segunda iteración:
x = xi ^ y = yi
CODIGO DEL PROGRAMA
clear all
clc
format long
tol=input('Ingrese la tolerancia = ');
x0=input('Ingrese valor inicial de x0 = ');
y0=input('Ingrese valor inicial de y0 = ');
errorx=100;
errory=100;
i=0;
while errorx>tol & errory>tol
xi=sqrt(x0+0.75-y0);
yi=xi^2/(1+5*xi);
errorx=abs((xi-x0)/xi)*100;
errory=abs((yi-y0)/yi)*100;
x0=xi;
y0=yi;
i=i+1;
end
fprintf('La raiz de x es: %f\n',xi)
fprintf('La raiz de y es: %f\n',yi)
fprintf('Numero de iteraciones: %d',i+1)
Iteracion1:
𝑑𝑣0 𝑑𝑢
𝑢0 ∗ − 𝑣0 ∗ 0
𝜕𝑦 𝜕𝑦
𝑥1 = 𝑥0 −
𝑑𝑢0 𝑑𝑣0 𝑑𝑢0 𝑑𝑣0
∗ − ∗
𝜕𝑥 𝜕𝑦 𝜕𝑦 𝜕𝑥
𝑥1 = 1.54355
𝑑𝑢0 𝑑𝑣
𝑣0 ∗ − 𝑢𝑖 ∗ 0
𝑦1 = 𝑦0 − 𝜕𝑥 𝜕𝑥
𝑑𝑢0 𝑑𝑣0 𝑑𝑢0 𝑑𝑣0
∗ − ∗
𝜕𝑥 𝜕𝑦 𝜕𝑦 𝜕𝑥
𝑦1 = 0.02903
1.54355 − 1.2
Ea(x) = | | ∗ 100 = 22.25705%
1.54355
0.02903 − 1.2
Ea(y) = | | ∗ 100 = 4033.33333%
0.02903
Iteración 2:
𝑥2 = 1.39412
𝑦2 = 0.22287
1.39412 − 1.54355
Ea(x) = | | ∗ 100 = 10.71824%
1.39412
0.22287 − 0.02903
Ea(y) = | | ∗ 100 = 86.97358%
0.22287
CUADRO DE ITERACIONES
𝒙𝟐 + 𝒚𝟐 =16
Use un enfoque grafico para obtener los valores iniciales. Encuentre estimaciones
refinadas con el método de Newton-Raphson para dos ecuaciones, que se describe
en la sección 6.6.2
CALCULO MANUAL
El sistema dado es equivalente a:
u(x,y):= (𝑥 − 4)2 +(𝑦 − 4)2 -5=0
v(x,y):= 𝑥 2 + 𝑦 2 -16=0
Ahora determinamos las derivadas parciales para realizar las iteraciones
𝜕𝑢
(𝑥, 𝑦) = 2(𝑥 − 4)
𝜕𝑥
𝜕𝑢
(𝑥, 𝑦) = 2(𝑦 − 4)
𝜕𝑦
𝜕𝑣
(𝑥, 𝑦) = 2𝑥
𝜕𝑥
𝜕𝑣
(𝑥, 𝑦) = 2𝑦
𝜕𝑦
Ahora estamos listos para calcular las aproximaciones:
Graficamos el problema:
Como vemos en la grafica hay 2 puntos donde se intersecan los 2 círculos, al primer
punto lo llamaremos ´´A´´ y al segundo ´´B´´, analizaremos para cada punto:
PARA EL PUNTO A
A≈(1.7,3.5)→ 𝑥0 =1.7, 𝑦0 =3.5
Iteracion1:
((1.7−4)2 +(3.5−4)2 −5)∗2∗3.5−(1.72 +3.52 −16)∗2(3.5−4)
𝑥1 =1.7- =1.80139
2(1.7−4)∗2∗3.5−2(3.5∗−4)∗2∗1.7
1.80139−1.7
Ea(x)=| |*100=5.62837
1.80139
3.57361−3.5
Ea(y)=| |*100=2.05985
3.57361
Iteración 2:
𝑥2 =1.80581
𝑦2 =3.56918
1.80581−1.80139
Ea(x)=| |*100=0.24526
1.80581
3.56918−3.57361
Ea(y)= | |*100=0.12409
3.56918
CUADRO DE ITERACIONES
PARA EL PUNTO B
B≈(3.5,1.7)→ 𝑥0 =3.5, 𝑦0 =1.7
Iteracion1:
((3.5−4)2 +(1.7−4)2 −5)∗2∗1.7−(3.52 +1.72 −16)∗2(1.7−4)
𝑥1 =3.5- =3.57361
2(3.5−4)∗2∗1.7−2(1.7∗−4)∗2∗3.5
3.57361−3.5
Ea(x)=| |*100=2.05985
3.57361
1.80139−1.7
Ea(y)=| |*100=5.62837
1.80139
Iteración 2:
𝑥2 =3.56918
𝑦2 =1.80581
3.56918−3.57361
Ea(x)= | |*100=0.12409
3.56918
1.80581−1.80139
Ea(y)=| |*100=0.24526
1.80581
CUADRO DE ITERACIONES
for s=1:101
N2(s)=4*cos(phi(s));
M2(s)=4*sin(phi(s));
end
plot(N1,M1)
hold on
plot(N2,M2)
EJECUCION DEL PROGRAMA
Para el punto ´´A´´
CALCULA LA RAIZ DE UN SISTEMA DE DOS ECUACIONES NO LINEALES
POR EL METODO ABIERTO DE NEWTON RAPHSON
Ingrese precisión de cifras significativas n= 5
Ingrese valor inicial xi= 1.7
Ingrese valor inicial yi= 3.5
La raíz ´´x´´ es:1.805829001200705
La raíz ´´y´´ es:3.569170998799295
Numero de iteraciones: 3
>>
CALCULO MANUAL
El sistema dado es equivalente a:
u(x,y):= ):= 𝑥 2 -y+1=0
v(x,y):= 2cosx-y=0
Ahora determinamos las derivadas parciales para realizar las iteraciones
𝜕𝑢
(𝑥, 𝑦) = 2𝑥
𝜕𝑥
𝜕𝑢
(𝑥, 𝑦) = −1
𝜕𝑦
𝜕𝑣
(𝑥, 𝑦) = −2𝑠𝑒𝑛𝑥
𝜕𝑥
𝜕𝑣
(𝑥, 𝑦) = −1
𝜕𝑦
Ahora estamos listos para calcular las aproximaciones:
Como vemos las ecuaciones se intersecan en un punto ,el cual llamaremos ´´P´´
En el punto ´´P´´
P≈(0.7,1.5)→ 𝑥0 =0.7, 𝑦0 =1.5
Iteracion1:
(0.72 −1.5+1)(−1)−(−2𝑐𝑜𝑠0.7−1.5)(−1)
𝑥1 =0.7- =0.714761
−2∗0.7(−1)−(−1)(−2𝑠𝑒𝑛0.7)
(2𝑐𝑜𝑠0.7−1.5)∗2∗0.7−(0.72 −1.5+1)(−2𝑠𝑒𝑛0.7)
𝑦1 =1.5- =1.51067
2(0.7)(−1)−(−1)(−2𝑠𝑒𝑛0.7)
0.714761−0.7
Ea(x)=| |*100=2.06518
0.714761
1.51067−3.5
Ea(y)=| |*100=0.706019
1.51067
Iteración 2:
𝑥2 =0.71462107
𝑦2 =1.5106833
=0.71462107−0.714761
Ea(x)=| |*100=0.01960074
0.71462107
1.5106833−1.51067
Ea(y)= | |*100=0.00116879
1.5106833
CUADRO DE ITERACIONES
for i=1:21
y1(i)=x(i)*x(i)+1;
y2(i)=2*cos(x(i));
end
plot(x,y1)
hold on
plot(x,y2)
hold off
f1 ( x1 , x2 ,...., xn ) = 0
f 2 ( x1 , x2 ,...., xn ) = 0
f n ( x1 , x2 ,...., xn ) = 0 (6.17)
f ( x) = a1 x1 + a2 x2 + ..... + an xn − b = 0 (6.18)
x 2 + xy = 10
y
y + 3xy 2 = 57
son dos ecuaciones simultaneas no lineales con dos incógnitas, x e y, las cuales se
expresan en la forma de la ecuación (6.17) como.
u( x, y) = x 2 + xy − 10 = 0 (6.19a )
v( x, y) = y + 3xy − 57 = 0
2
(6.19b)
Así la solución serían los valores de x y de y que hacen a las funciones u(x,y) y v(x,y)
iguales a cero. La mayoría de los métodos para determinar tales soluciones son
extensiones de los métodos abiertos para resolver ecuaciones simples. En esta sección
presentaremos dos de ellos: iteración de punto fijo y newton-Rapshon.
6.6.1 Iteración de punto fijo
El método de iteración de punto fijo (sección 6.1) puede modificarse para resolver dos
ecuaciones simultaneas no lineales. Este método se ilustra en el siguiente ejemplo.
Ejemplo 6.11 (Iteración de punto fijo para un sistema no lineal)
Planteamiento del problema con el método de iteración de punto fijo determine las
raíces de la ecuación (6.19). observe que un par correcto de raíces es x=2 y y=3. Inicie
el cálculo con el valor inicial x=1.5 y y=3.5.
Solución: de la ecuación (6.19a) se puede despejar
10 − xi 2
xi +1 = ( E 6.11.1)
yi
Y de la ecuación (6.19b) se puede despejar
yi +1 = 57 − 3xi yi 2 ( E 6.11.2)
y = 57 − 3(2.21429)(3.5)2 = −24.37516
Así parece que el método diverge. Este comportamiento es aún más pronunciado en la
segunda iteración:
10 − (2.21429) 2
x= = −0.20910
−24.37516
y = 57 − 3(−0.20910)( −24.37516) 2 = 429.709
x = 10 − xy
Y de la ecuación (6.19b) es
57 − y
y=
3x
Ahora los resultados son más satisfactorios:
x = 10 − 1.5(3.5) = 2.17945
57 − 3.5
y= = 2.86051
3(2.17945)
x = 10 − 2.17945(2.86051) = 1.94053
57 − 2.86051
y= = 3.04955
3(1.94053)
x = 10 − 1.5(3.5) = 2.17945
57 − 3.5
y= = 2.86051
3(2.17945)
x = 10 − 2.17945(2.86051) = 1.94053
57 − 2.86051
y= = 3.04955
3(1.94053)
du du
+ 1
dx dy
y
dv dv
+ 1
dx dy
Estos criterios son tas restringidos que el método de punto fijo tiene una utilidad
limitada para resolver sistemas no lineales. Sim embargo, como se describirá más
adelante en el libro, será muy útil para resolver sistema de ecuaciones lineales.
6.6.2 Newton-Raphson
Recuerde que el método de Newton-Raphson se utilizó empleando la derivada (al
evaluar es la pendiente de la recta tangente) de una función, para calcular su
intersección con el eje de la variable independiente, esto es la raíz. dicho cálculo se
basó en la expansión de la serie de Taylor de primer orden.
f ( xi +1 ) = f ( xi ) + ( xi +1 − xi ) f ( xi ) (6.20)
f ( xi )
xi +1 = xi − (6.21)
f ( xi )
Que es la forma del método de Newton-Raphson para una sola ecuación.
La forma para múltiples ecuaciones se obtiene en forma idéntica. Sin embargo, se
debe usar una serie de Taylor de múltiples variables para tomar en cuenta el hecho de
que más de una variable independiente contribuye a la determinación de la raíz. En el
caso de dos variables, una serie de Taylor de primer orden se escribe para cada
ecuación no lineal como:
dui du
ui +1 = ui + ( xi +1 − xi ) + ( yi +1 − yi ) i
dx dy (6.22a )
dv dv
vi +1 = vi + ( xi +1 − xi ) i + ( yi +1 − yi ) i
dx dy (6.22b)
De la misma manera como en la versión para una sola ecuación, la raíz aproximada
corresponde a los valores de x y y, donde 𝑢𝑖+1 𝑦 𝑣𝑖+1 son iguales a cero. En tal
situación se reordena la ecuación (6.22) como:
dui du du du
xi +1 + i yi +1 = −ui + xi i + yi i (6.23a )
dx dy dx dy
dvi dv dv dv
xi +1 + i yi +1 = −vi + xi i + yi i (6.23b)
dx dy dx dy
Debido a que se conocen todos los valores con subíndice i (corresponden al último
valor estimado ), las únicas incógnitas son 𝑥𝑖+1 𝑦 𝑦𝑖+1 entonces la ecuación (6.23) es
un conjunto de dos ecuaciones lineales con dos incógnitas. En consecuencia, se
pueden usar manipulaciones algebraicas (por ejemplo, la regla de cramer) para
resolverlo:
dvi du
ui − vi i
dy dy
xi +1 = xi −
dui dvi dui dvi
− (6.24a )
dx dy dy dx
dui dv
vi − ui i
yi +1 = yi − dx dx
dui dvi dui dvi
−
dx dy dy dx (6.24b)
𝜕𝑢0 𝜕𝑢0
= 3𝑦 2 = 3(3.5)2 = 36.75 = 1 + 6𝑥𝑦 = 1 + 6(1.5)(3.5) = 32.5
𝜕𝑥 𝜕𝑥
𝑥 2 + 𝑥𝑦 = 10
𝑦 + 3𝑥𝑦 2 = 57
Las que son dos ecuaciones simultaneas no lineales con dos incognitas,las que se
pueden expresar como:
𝑢(𝑥, 𝑦) = 𝑥 2 + 𝑥𝑦 − 10 = 0
𝑣(𝑥, 𝑦) = 𝑦 + 3𝑥𝑦 2 − 57 = 0
La mayoría de los métodos para determinar la solución de este sistema de ecuaciones
no lineales, son extensiones de los métodos abiertos para resolver ecuaciones simples
como:iteración de punto fijo,Newton Raphson y otros.
3.4.1 Iteracion simple de punto fijo
El método de iteración simple de punto fijo para resolver ecuaciones simples,puede
modificarse para resolver dos ecuaciones simultaneas no lineales.
𝑓(𝑥) = 0
𝑥 = 𝑔(𝑥)
𝑥𝑖+1 = 𝑔(𝑥𝑖 )
De modo similar ,el algoritmo de iteración simple de punto fijo para dos ecuaciones
simultaneas no lineales es:
𝑥𝑖+1 = 𝑔(𝑥𝑖 , 𝑦𝑖 )
𝑦𝑖+1 = ℎ(𝑥𝑖 , 𝑦𝑖 )
Ejemplo 3.14:
Desarrolle, depure y pruebe un subprograma en MATLAB que permita determinar las
raíces de las ecuaciones:
𝑢(𝑥, 𝑦) = 𝑥 2 + 𝑥𝑦 − 10 = 0
𝑣(𝑥, 𝑦) = 𝑦 + 3𝑥𝑦 2 − 57 = 0
Empleando el Método de Iteración de Punto Fijo y empleando como valor inicial o
semilla 𝑥𝑖 =1.5 y 𝑦𝑖 =3.5
SOLUCIÓN
Despejando x de la ecuación: u ( x, y) = x 2 + xy − 10 = 0
Se tiene:
x = 10 − xy Con subíndices xi +1 = 10 − xi yi
57 − y 57 − yi
y= Con subíndices yi +1 =
3x 3xi
CÓDIGO EN MATLAB
clear all
clc
disp('CALCULAR LA RAIZ DE UN SISTEMA DE DOS ECUACIONES NO
LINEALES')
disp('POR EL METODO ABIERTO DE')
disp('ITERACION SIMPLE PUNTO FIJO')
n=input('Ingrese precision de cifras significativas n = ');
xo=input('Ingrese valor inicial xo = ');
yo=input('Ingrese valor inicial yo = ');
Es=(0.5*10^(2-n));
Eax=100;
Eay=100;
i=0;
%EL SISTEMA DE ECUACIONES ES
%U(x,y)=x^2+x*y-10=0
%V(x,y)=y+3x*y^2-57=0
while Eax>Es & Eay>Es
xi=sqrt(10-xo*yo); %xi+1=g(xi,yi)
yi=sqrt((57-yo)/(3*xi)); %yi+1=h(xi,yi)
Eax=abs((xi-xo)/xi)*100; %calcular el error relativo
aproximado para x
Eay=abs((yi-yo)/yi)*100; %calcular el error relativo
aproximado para y
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 de iteraciones: %12.0f\n',i)
Corrida y prueba del programa ´´punto fijo´´
>>puntofijo2
CALCULAR LA RAIZ DE UN SISTEMA DE DOS ECUACIONES NO
LINEALES
POR EL METODO ABIERTO DE
ITERACION SIMPLE PUNTO FIJO
Ingrese precisión de cifras significativas n = 5
Ingrese valor inicial xo = 1.5
Ingrese valor inicial yo = 1.5
La raiz "x" es: 2.000002516109123
La raiz "y" es: 2.999997946009110
Numero de iteraciones: 13
Debido a que se conoce todos los valores con subíndice i (correspondiente al ultimo
valor estimado), las únicas incógnitas son 𝑥𝑖+1 y 𝑦𝑖+1 .Entonces, las dos ecuaciones
anteriores son dos ecuaciones lineales con dos incógnitas. En consecuencia se puede
usar manipulaciones algebraicas (por ejemplo la reglas de Cramer) para resolverlo.
Finalmente el algoritmo de Newton Raphson para dos ecuaciones no lineales
simultaneas es:
𝜕𝑣𝑖 𝜕𝑢 𝜕𝑣𝑖 𝜕𝑢
𝑢𝑖 ∗ − 𝑣𝑖 ∗ 𝑖 𝑢𝑖 ∗ − 𝑣𝑖 ∗ 𝑖
𝜕𝑦 𝜕𝑦 𝜕𝑦 𝜕𝑦
𝑥𝑖+1 = 𝑥𝑖 − 𝑦𝑖+1 = 𝑦𝑖 −
𝜕𝑢𝑖 𝜕𝑣𝑖 𝜕𝑢𝑖 𝜕𝑣𝑖 𝜕𝑢𝑖 𝜕𝑣𝑖 𝜕𝑢𝑖 𝜕𝑣𝑖
∗ − ∗ ∗ − ∗
𝜕𝑥 𝜕𝑦 𝜕𝑦 𝜕𝑥 𝜕𝑥 𝜕𝑦 𝜕𝑦 𝜕𝑥
Ejemplo 3.15:
Desarrolle, depure y pruebe un subprograma en MATLAB que permita determinar las
raíces de las ecuaciones:
𝑢(𝑥, 𝑦) = 𝑥 2 + 𝑥𝑦 − 10 = 0
𝑣(𝑥, 𝑦) = 𝑦 + 3𝑥𝑦 2 − 57 = 0
Empleando el Método de Newton Raphson y empleando como valor inicial o semilla
𝑥𝑖 =1.5, 𝑦𝑖 =3.5
Ea
i xi yi ui vi ∂ui/∂x ∂ui/∂y ∂vi/∂x ∂vi/∂y Jacobiano xi+1 yi+1 x(%) Ea y(%)
1 1.0 4.0 -5.0 -5.0 6.0 1.0 48.0 25.0 102.0 2.17647 1.941176 54.054 106.0606
2 2.1765 1.9412 -1.0 -30.5 6.2941 2.17647 11.3 26.3495 141.2428 1.90083 3.215238 14.501 39.62573
3 1.9008 3.2152 -0.3 5.2 7.0169 1.90083 31.0 37.6698 205.3742 1.99913 2.997167 4.9169 7.275916
4 1.9991 2.9972 0.0 -0.1 6.9954 1.99913 26.9 36.9503 204.6084 2.000 3.000003 0.0436 0.094536
9.28E-
5 2.0000 3.0000 0.0000 05 7.0000 2.0000 27.0 37.000 205.0002 2.000 3.000 0.000 9.14E-05
Código en MATLAB
clear all
clc
disp('CALCULA LA RAIZ DE UN SISTEMA DE DOS ECUACIONES NO
LINEALES')
disp(' POR EL METODO ABIERTO DE')
disp(' NEWTON RAPHSON')
n=input('Ingrese precision de cifras significativas n= ');
xi=input('Ingrese valor inicial xi= ');
yi=input('Ingrese valor inicial yi= ');
Es=(0.5*10^(2-n));%tolerancia porcentual prefijada
Eax=100; %Error relativo porcentual aproximado
para x
Eay=100; %Error relativo porcentual aproximado
para y
i=0;
%EL SISTEMA DE ECUACIONES ES
%U(x,y)=x^2+x*y-10=0
%V(x,y)=y+3x*y^2-57=0
while Eax>Es & Eay>Es %Verifica si los errores Eax y Eay
cumplen con la Es
xa=xi;
ya=yi;
Ui=xi^2+xi*yi-10; %Fucion U(x,y) evaluada en xi,yi
Vi=yi+3*xi*yi^2-57; %Fucion V(x,y) evaluada en xi,yi
dUidx=2*xi*yi; %Derivada U(x,y) respecto de x,
evaluada en xi, yi
dUidy=2*xi; %Derivada U(x,y) respecto de y,
evaluada en xi, yi
dVidx=2*yi^2; %Derivada V(x,y) respecto de x,
evaluada en xi, yi
dVidy=1+6*xi*yi; %Derivada V(x,y) respecto de y,
evaluada en xi, yi
Jacobiano=dUidx*dVidy-dUidy*dVidx; %Determiante
Jacobiano del Sistema
xi=xi-(Ui*dVidy-Vi*dUidy)/Jacobiano; %Algoritmo de Newton
Raphson par xi
yi=yi-(Vi*dUidx-Ui*dVidx)/Jacobiano; %Algoritmo de Newton
Raphson par yi
Eax=abs((xi-xa)/xi)*100; %Calcula el error
relativo aproximado para x
Eay=abs((yi-ya)/yi)*100; %Calcula el error
relativo aproximado para y
i=i+1; %Cuenta el numero de
iteraciones efectuadas
endwhile
fprintf('La raiz ´´x´´ es:%12.15f\n',xi) %Imprime la
raiz x
fprintf('La raiz ´´y´´ es:%12.15f\n',yi) %Imprime la
raiz y
fprintf('Numero de iteraciones:%12.0f\n',i) %Imprime el
numero de iteraciones