MATLAB Metodos Numericos y Aplicaciones

July 18, 2018 | Author: Anonymous WlGxU1 | Category: Equations, Complex Number, Resistor, Derivative, Gases
Share Embed Donate


Short Description

Descripción: MATLAB Metodos Numericos y Aplicaciones...

Description

MATLAB METODOS NUMERICOS Y APLICACIONES PARA INGENIERIA

DANIEL FLOREZ-ORREGO

Facultad Nacional de Minas Universidad Nacional de Colombia Sede Medellín 2015

2

CONTENIDO 1. CAPITULO 1. GRAFICAS DE FUNCIONES EXPLICITAS Y RAICES DE ECUACIONES. ……………..……..3 2. CAPITULO 2. SISTEMAS DE ECUACIONES. …………………………………………………………… ....…………..19 3. CAPITULO 3. REGRESION E INTERPOLACION ……………………………………………………………… .………..41 ……………………………… ………..

4. CAPITULO 4. PROBLEMAS DE VALOR INICIAL DE PRIMER ORDEN.

.

61

5. CAPITULO 5. PROBLEMAS DE VALOR INICIAL DE SEGUNDO ORDEN ORDEN …………………….……84 6. CAPITULO 6. PROBLEMAS CON VALOR EN LA FRONTERA ………………………………………….………..101

3

CAPITULO 1 GRAFICAS DE FUNCIONES EXPLICITAS Y RAICES DE ECUACIONES

4

1) Para calcular la velocidad límite, en metros por segundo, deuna partícula de 2 gramos de masa que desciende verticalmente, se debe resolver la ecuación:

1.4  105 v 3 / 2  1.15  105 v 2  19.62  103  0 (1) a) Represente gráficamente la función en el intervalo:0  v  50 SOLUCIÓN 52  10 53/2v  1.15  10 Para graficar la función f  1.4 abscisas en el intervalo dado [0,50], así:



3 v 19.62 10



, se genera un vector de

>>v=0:0.5:50; % numero de subdivisiones: 100 El tamaño de paso se determinó a partir de la expresión:h  b  a N 

 50 0

100 0.5

Se ingresa en MATLAB la funciónf como: >>f='1.4e-5.*v.^(3/2)+1.15e-5.*v.^2-19.62e-3' Luego se llama el comandoplot, agregándole un color rojo a la grafica: >>plot(v, eval(f), 'r');gridon Además, se utilizan los comandos xlabel y ylabel para nombrar los ejes coordenados: >>xlabel('v') >>ylabel('f(v)') Lo anterior arroja la gráfica de la Figura 1. 0.015

0.01

0.005

0

) v (f -0.005

-0.01

-0.015

-0.02 0

5

10

15

20

25

30

35

40

v

Figura 1. Grafica de f(v) vs. V

45

50

5 b) Determine la velocidad límite por el método de Newton con 4 cifras decimales y redondeo.

SOLUCIÓN Para determinar la velocidad límite se soluciona la ecuación:

1.4  105 v 3 / 2  1.15  105 v 2  19.62  103  0 Por lo tanto debe hallarse la raíz de la función

f  1.4  105 v 3 / 2  1.15  105 v 2  19.62  103 (2) Según la Figura 1, la raíz se encuentra en el intervalo [35,40]. Usando el método de Newton se realizan varias iteraciones según la expresión(3) hasta obtener la tolerancia esperada: vi 1  vi 

f (vi )

(3)

f '(vi )

Tomando como semilla v0=37, y sabiendo que la derivada de f respecto a v puede hallarse a

partir del comando diff: >>diff('1.4e-5*v^(3/2)+1.15e-5*v^2-19.62e-3') Lo que da como resultado: >>df(v) /dv = 0.000023*v + 0.000021*v^(1/2)

Se construye la Tabla1 haciendo uso de la expresión(3): Tabla 1. Determinación de la raíz def en el intervalo [35,40] usando el método de Newton Raphson i 0 1 2 3 4 5 6 7

vi 37.0000 37.7414 37.7346 37.7345 37.7346 37.7346 37.7346 37.7346

f(vi) -7.2563E-04 6.8015E-06 2.1991E-08 -7.7699E-08 2.1991E-08 2.1991E-08 2.1991E-08 -1.7744E-08

f ‘(vi) 9.7874E-04 9.9706E-04 9.9690E-04 9.9689E-04 9.9690E-04 9.9690E-04 9.9690E-04 9.9689E-04

vi+1 37.7414 37.7346 37.7345 37.7346 37.7346 37.7346 37.7346 37.7346

En la última columna de la Tabla 1 se muestran las diferentes aproximaciones con 4 cifras decimales de del la valor raíz de función f límite para es: las diferentes iteraciones. Por lo tanto una buena aproximación de lala velocidad

v  37.7346m

s

6

c) Calcule la velocidad límite usandofzero. SOLUCIÓN Al utilizar el comando fzero para hallar la raíz de la funciónf, usando como semilla x0= 37, se obtiene: >>fzero(f,37)=37.7346 Cabe anotar que debió redefinirse la funciónf como una función de x y no de v para utilizar fzero. RUTINA MATLAB Para agilizar la generación de la Tabla 1, puede realizarse una rutinametodonewton.m ( ) cuyas entradas son la función, la semilla, la tolerancia y el número máximo de iteraciones. Esta rutina arroja como salida la tabla con los valores obtenidos para cada iteración (el valor de la aproximación de la raíz, el valor de la función y la derivada en ese punto, y el error absoluto calculado como la diferencia entre la iteración anterior y la siguiente). Además, puede graficarse ambas, función y derivada, en un intervalo dado. El código de la rutina aparece a continuación: clear all clc display('MÉTODO DE NEWTON-RAPHSON') disp(' ') disp('Este algoritmo permite hallar las raíces de una función mediante el método de Newton-Raphson.') disp(' ') format short disp('Escriba la función entre signos ''') disp(' ') f=input('f(x)= '); disp(' ') disp('La derivada de la función f(x) es') disp('df(x)/dx= '),char(diff(f)) dfdx=diff(f); x0=input('Valor de la aproximación inicial= '); tol=input('Valor de la tolerancia= '); N=input('Número máximo de iteraciones= ');

7 disp(' ') display('A continuación se muestra la tabla de resultados:') disp(' ') disp('

i

xi

f(xi)

f´(xi)

error absoluto')

i=1; delta=1; x(1)=x0; while (delta >= tol) && (i < N) x=x(i); fun=eval(f); funpri=eval(dfdx); xnext=x-(fun/funpri); delta=abs(xnext-x); Tab=[i-1,x,fun,funpri,delta]; disp (Tab) i=i+1; x(i)=xnext; end aux=x(i); raiz=x(i); disp('La mejor aproximación a la raíz es='),raiz t=input('Para graficar en la bola [raiz-(t*raiz),raiz+(t*raiz)], ingrese 0.1 < t < 5= '); a=aux-t*aux; b=aux+t*aux; Xmin_Xmax=[a,b]; disp(' ') Xmin_Xmax disp('A continuación se presentan las dos gráficas: f(x) y f''(x) vs x') subplot(1,2,1)

8 xlabel('x') ylabel('f(x)') h=ezplot(f,Xmin_Xmax); set(h, 'Color', 'm') hold on plot(aux,0,'ob') grid on subplot(1,2,2) xlabel('x') ylabel('f''(x)') l=ezplot(dfdx,Xmin_Xmax); set(h, 'Color', 'r') grid on 3/2

1.4e-5 x

2

+1.15e-5 x -19.62e-3

0.000023 x + 0.000021 x

-4

x 10

1/2

0.06 20

18

0.05

16 0.04 14 0.03 12

) (x f

x /)d 10 (fx d 8

0.02

0.01

6 0 4 -0.01 2

0

-0.02

0

10

20

30

40

50

60

70

0

10

20

x

30

40

50

60

70

x

Figura 1a) Graficas de f (x) y f’(x) creadas mediante la subrutina metodonewton.m

2) Una masa de 1 Kilogramo de CO está contenido en un recipiente a una temperaturaT  215K y a una presión P  70 bars . Para calcular el volumen específico del gas se usa la ecuación de estado de Van der Waals para un gas no ideal, la cual viene dada por:

P  a / v v  b  RT 2

(5)

9

En la ecuación se tiene que:

R  0.08314bar  m 3 / kg  mol  K  

2

a  1.463 bar  m 6 kg  mol 

b  0.0394m 3 / kg a) Tomando como semilla el volumen específico calculado con la ecuación del gas ideal Pv  RT , resuelva la ecuación usandofzero. SOLUCIÓN Calculemos la semilla utilizando la ecuación de gas ideal: v

RT P



0.08314  215 70

3

 0.255358m Kg

Ahora, usamos (5) para obtener la ecuación que permite hallar el valor del volumen específico. Se reemplazan los valores conocidos deR, a, b, P y T y se despeja de manera conveniente:

 70 1.463

v2    v 0.0394 215   0.08314 

0

(6)

Luego, se define la funciónf cuyos ceros son la solución de(6): f    70 1.463 v 2   v 0.0394

0.08314 215 

Para visualizar dicha función con el comandoplot, generamos un vector de abscisas: >> v=linspace(0.05,0.3,1000) Y definimos f así: f='((70+(1.463./v.^2)).*(v-0.0394))-0.08314*215' Usando los comandos: >>plot(v, eval(f),'r');grid on >>xlabel('v') >>ylabel('f(v)')

Se obtiene la gráfica de la funciónf donde puede apreciarse el cero de la función:

10

6

4

2

0

-2

) f(v

-4

-6

-8

-10

-12 0.05

0.1

0.15

0.2

0.25

0.3

v

Figura 2. f(v) vs v. Para hallar el valor de la raíz se utiliza el comando fzero con una semilla igual a 0.2554, y se obtiene: fzero(f,0.2554)=0.2155m3/Kg b) Usando la función Roots, determine el volumen específico. SOLUCIÓN Debido a que la función Roots determina las raíces de un polinomio, debemos expresar la ecuación (5) como un polinomio, destruyendo los paréntesis según la ley distributiva y multiplicando a ambos lados de la expresión porv2, para finalmente organizar de forma adecuada, dando srcen al polinomio:

P(v)  70  v3

 70(0.0394)

0.08314(215)    v2 1.463 v 0.0394(1.463)

(7)

Luego, los coeficientes del polinomio son: C1: 70, C2: -20.6331, C3: 1.463, C4: -0.05764

Para utilizar el comando Roots, se genera un vector con los coeficientes anteriormente mencionados: C=[70, -20.633, 1.463, -0.0576]

11

Se ejecuta como roots(C), lo que arroja el valor de 3 raíces, dos imaginarias y una real: v1=0.2155 v2=0.0396 + 0.0474i v3=0.0396 - 0.0474i 3 De acuerdo al sentido físico, se asume la solución real como el volumen específico: 0.2155m /Kg. Nótese que es el mismo valor obtenido mediante el comandofzero.

Utilizando el comandoplot puede visualizarse la gráfica del polinomio y su cero real: >>v=linspace(-0.2,0.5,1000); >>plot(v, polyval(C,v),'r') >>xlabel('v') >>ylabel('P(v)') >>grid on Nótese el uso del comando polyval(C,v), especial para la representación de polinomios. 5

4

3

2

) v ( P 1

0

-1

-2 -0.2

-0.1

0

0.1

0.2

0.3

v

Figura 3. P(v) vs v.

0.4

0.5

12

3) Una mezcla equimolar de monóxido de carbono y oxígeno alcanza el equilibrio a300 K y a una presión de 5 atmósferas. La reacción química real es: 

CO  O2  ( x )CO 

1 (1  x )O2  (1  x )CO2 2

La ecuación de equilibrio químico para determinar la fracción del monóxido de carbono restantex , se escribe como: Kp 

(1  x ) x  3 x 5( x  1)

; 0  x  1(8)

Si K p  3.06 , determine el valor de x usando fzero. SOLUCIÓN Para determinar el valor de la fracción del monóxido de carbono, x, sabiendo que Kp es igual a 3.06 en la expresión (8), planteamos una función c tal que los ceros de f satisfagan la igualdad (8). Dicha función es: f  3.06 

(1  x) x  3 x 5( x  1)

 0; 0  x  1 (9)

En MATLAB se define así: >>f='3.06-((1-x)*sqrt(x+3))/(x*sqrt(5*(x+1)))' Utilizando la rutina fzero con una semilla de x0=0.5, elegido arbitrariamente entre 0 y 1, se encuentra que el cero de f es: fzero(f,0.5)=0.1930 Es decir, el valor de la fracción de monóxido de carbono restante esx=0.1930. Este valor se obtiene para diferentes semillas utilizadas (x=0.4, 0.7, 1, excepto claramente para x=0) Usamos los comandos para representar gráficamente la funciónf: >> x=linspace(0.1,1,1000); >>plot(x,eval(f),'k') >>grid on >>xlabel('x') >>ylabel('f(x)') La grafica de la función f se muestra a continuación:

13

4 3 2 1

) x0 ( f -1 -2 -3 -4 0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

x Figura 4. f(x) vs x 4) El coeficiente de fricción f para el flujo turbulento en un tubo satisface la correlación de Colebrook, la cual establece que:  e 9.35  1.14  2 lo g10   D R f f e 

1

  (10)  

En la expresión anterior se tiene que: Re  3  10 4 : Es el número de Reynolds e  0.0025 : Es la rugosidad de la superficie del tubo D  0.1m : Es el diámetro del tubo

a) Escriba la correlación de Colebrook con la información dada. Utilizando la información dada, la ecuación(10) queda:

 0.0025  9.35   1.14  2 log10   f (30000) f   0.1

1

(11)

b) Calcule el coeficiente de fricción usando fzero Para calcular el valor del coeficiente de fricciónf utilizando el comando fzero, primero hacemos un cambio de variable según:

14

x

1

f

con

f 0

(11a)

Expresamos la ecuación (11) en términos de x. Generamos una función auxiliar g, la cual es igualada a cero. Finalmente determinamos sus raíces con el comandofzero.

 0.0025

g ( x)  x  1.14  2 log10 

 0.1



 9.35 x  0 (30000) 

(12)

En MATLAB g se define g así: g='x-1.14+2*log10((0.0025/0.1)+(9.35/30000)*x)' Usando el comando fzero(g,x0) con dos opciones de semilla (X0=0.5 y 0.05) se obtiene el mismo resultado: x=4.2988 Hallamos el valor de f según el cambio de variable(12):

x

1

 f 

f

1 x

2



1 (4.2988) 2

 0.0541

La grafica de la función g y la respectiva raíz se muestran a continuación: 10

5

0

) x ( g -5

-10

-15 -10

-5

0

5

x

Figura 5. g(x) vs x

10

15

Lo anterior puede corroborarse en el Diagrama de Moody de la Figura 6:

Figura 6. Diagrama de Moody.

5) El modelo de crecimiento logístico de una población establece que la población en todo instante está regida por la ecuación: x(t ) 

M 1 ( / M N1) e kM t 

(13)

En la expresión anterior se tiene que:

M : Es la población de saturación, es decir, el máximo posible de habitantes (en millones) N : Es la cantidad inicial de habitantes (en millones) k : Es la tasa de crecimiento de la población. Una población tiene inicialmente 2 millones de habitantes y al cabo de 10 años se espera que se 2 duplique. Si la tasa de crecimiento es numéricamente igual a10  , determine la población de saturación usando fzero. SOLUCIÓN

16

Rescribimos la expresión(13) M 4  2  1   M/ 2 1   e 10 M10

Identificando las condiciones: k = 10 2 N  2 millones M  Incógnita t  10 años x(10)  4 millones



Ahora generamos una función auxiliar f(M), así:

f  4  M1







21 /M



e 10

2

M10 

 

Igualando a cero dicha función y hallando sus raíces determinamos la solución a la ecuación (13). La función es ingresada en MATLAB como: >>f=’ 4-(x./((1+(x./2-1).*exp(-1e-1.*x))))’

Utilizando la rutina fzero con una semilla de 0x=2e6 se obtiene: fzero(f,2)= 9.8655 Lo cual quiere decir que la población de saturación es de 9’865.500 de habitantes. A continuación se muestra la gráfica de la función f y sus ceros: 3

2

1

) x (f

0

-1

-2

-3 -4

-2

0

2

4

6

8

10

12

x

Figura 7. f(x) vs x

14

16

17

6) La carga en el capacitor en todo instante en un circuito RLC está regida por la ecuación:

 1  R   t  LC  2L    

q(t )  CE  e  Rt / 2 L cos

(15)

En la expresión anterior se tiene que:

C : Es la capacitancia del capacitor y se mide en Faradios. E : Es el voltaje de la fuente y se mide en Voltios. R : Es la resistencia del resistor y se mide en Ohmios. L : Es la autoinductancia del inductor y se mide en Henrios. Tomando los datos L  2H , C  104 F , E  10V , determine la resistencia del resistor que se requiere para que la carga, al cabo de 5 milisegundos sea de 100 microculombios. SOLUCIÓN Tomando los datos anteriores para la capacitancia, la inductancia y el voltaje, además teniendo en cuenta que t  5  103 seg y que q(t )  1  104 culombiosla ecuación (15) se expresa así: 3

q(5  103 )  104 (10)  e  R (5*10

) / 2( 2)

   R  1    5  103   1  104 4    (2)(10 )  2(2)    

cos

Según lo cual se obtiene finalmente: 3

103  e 5*10

R/4

  1 R 3  4  2 *104   4   5 *10   1*10  

cos

Simplificando más aun la expresión anterior: 3

10  e 5*10

R/4

  1 R     5 *103   1  2 *104  4    

cos

(16)

Generamos una función g(R) tal que los ceros de dicha función satisfagan la ecuación(16), así: 3

g ( R)  10  e 5*10

R/4

  1  R 3   2 *104   4   5 *10   1  

cos

En MATLAB definimos g así: f='(10*exp(-5e-3*x/4)*cos(sqrt((1/2e-4)-(x/4))*5e-3))-1'

18

Utilizando la función fzeros(g, x0) y usando como semilla x0=0.5, 0.05 y 2, se llega al mismo resultado que indica que la resistencia es igual a: R=1.7957e+003 Ohmios La grafica de la funcióng se muestra a continuación: 1

0.8

0.6

) (x g

0.4

0.2

0

-0.2

-0.4 1400

1500

1600

1700

1800

1900

x

Figura 8. g(x) vs x

2000

2100

2200

19

CAPITULO 2 SISTEMAS DE ECUACIONES

20

1) Un polinomio de variable compleja viene dado por: P( z)  an z n  an 1z n 1  . .. a2 z 2  a1z  a0 ; ai  C

El polinomio se puede expresar mediante su parte real y su parte imaginaria haciendoz  x  jy , así: P( x  jy )  u( x, y )  jv( x, y )

A partir del teorema fundamental del álgebra se puede concluir que un polinomio de grado n tiene exactamente n raíces en el campo de los complejos. Las raíces se calculan resolviendo el sistema de ecuaciones no lineales:

u( x, y)  0   v( x, y )  0 Con base en lo presentado, dado el polinomio de tercer grado:

P( z)  2  j3z 3  j 2 z 2  j3z  3  j 6 a) Exprese el polinomio mediante su parte real y su parte imaginaria. SOLUCIÓN Sabiendo que z  x  jy Primero desglosamos todo el polinomio:

P()z2  z33

j 2z 3  3j 3z 2 6 j z

P()z 2(  x ) jy  3(3 j )  x 2( jy 3  )j

j y reemplazamos el valor de z : x3(  jy 2) 3 j 6 x

jy

j

Se desarrollan los binomios y se distribuyen los coeficientes, obteniéndose: P,()x2 jy 6 x63 2 j xy2 33 xy9 3 2jy9  j2 x

x y

j xy

 3y3 2j4x 2  2xy  3j 3y 23 j6 x Parte real

 3x6 ReP 2

2

2  4x y  3 y3 9 xy 33

xy

y

Parte imaginaria 22 ImP 6 2 3x y 3y 39 x2 2  xy 2 3 6x

y

x

y

j

21

b) Represente gráficamente el sistema SOLUCIÓN Para representar gráficamente el sistema hacemos

F (,x) Re y 

2 P6 3 x 92 2xy3 3 4x y3 3y

xy

y

3 Gx(y,) Im  P 6 xy y 2  x39 xy  3 2x 2  2y2 2 3x6

Se ingresan las funciones F y G en MATLAB como: F='2*x^3-6*x*y^2-9*x^2*y+3*y^3+4*x*y-3*y-3' G='6*x^2*y-y^3+3*x^3-9*x*y^2-2*x^2+2*y^2+3*x-6' Se grafican ambas con el comandoezplot y se le da el color a cada gráfica con el comandoset y la propiedad color, así: h=ezplot(F);set(h, 'Color', 'm')% color magenta hold on, grid on l=ezplot(G); set(l, 'Color', 'b')% color azul La gráfica del sistema se muestra a continuación. Se señalan los puntos de intercepción entre las curvas F(x,y)=0 y G(x,y)=0 6

F 4

2

y

G

0

-2

-4

-6 -6

-4

-2

0

2

4

6

x

Figura 1. Gráfica del sistema F(x,y)=0 y G(x,y)=0

22

c) Determine las tres raíces por el método de Newton. SOLUCIÓN Para hallar las raíces por el método de Newton, generamos un código como el que se presenta a continuación: clearall clc symsxy n=input('Ingrese el número de iteraciones, n='); F=input('Ingrese la función F='); G=input('Ingrese la función G='); xi=input('Ingrese la semilla para x='); yi=input('Ingrese la semilla para y='); Fx=diff(F,x); Fy=diff(F,y); Gx=diff(G,x); Gy=diff(G,y); X(1)=xi; Y(1)=yi; for k=1:n x=X(k); y=Y(k); H(k)=eval(Fx)*eval(Gy)-eval(Gx)*eval(Fy); Hx(k)=eval(F)*eval(Gy)-eval(G)*eval(Fy); Hy(k)=eval(Fx)*eval(G)-eval(Gx)*eval(F); Dx(k)=Hx(k)/H(k); Dy(k)=Hy(k)/H(k); X(k+1)=X(k)-Dx(k); Y(k+1)=Y(k)-Dy(k);

23

end [X',Y']

Como se mencionó anteriormente, F y G se definen respectivamente: F='2*x^3-6*x*y^2-9*x^2*y+3*y^3+4*x*y-3*y-3' G='6*x^2*y-y^3+3*x^3-9*x*y^2-2*x^2+2*y^2+3*x-6' Para hallar cada una de las tres raíces, deben ingresarse tres semillas. La convergencia, que por sí ya es rápida con este método, se acelera más aún seleccionando una semilla cercana a la raíz Para una semilla (X0,Y0) =(-0.35,1.3) se obtiene una aproximación a la raíz(X,Y)1=(-0.3445,1.3051) Los resultados en MATLAB son: Ingrese el número de iteraciones, n=5 Ingrese la función F='2*x^3-6*x*y^2-9*x^2*y+3*y^3+4*x*y-3*y-3' Ingrese la función G='6*x^2*y-y^3+3*x^3-9*x*y^2-2*x^2+2*y^2+3*x-6' Ingrese la semilla para x=-0.35 Ingrese la semilla para y=1.3 -0.3500

1.3000

-0.3444

1.3051

-0.3445 -0.3445

1.3051 1.3051

-0.3445

1.3051

Para una semilla (X0,Y0)=(-0.35,-1.3)se obtiene una aproximación(X,Y)2=(-0.2726,-1.1594) -0.3500

-1.3000

-0.2816

-1.1742

-0.2727

-1.1595

-0.2726

-1.1594

-0.2726

-1.1594

Para una semilla (X0,Y0) =(1.19,0.02) se obtiene una aproximación a la raíz(X,Y)3=(1.1862,0.0304)

24

1.1900

0.0200

1.1861

0.0303

1.1862

0.0304

1.1862

0.0304

1.1862

0.0304

Luego, las tres raíces deP, calculadas como los puntos donde se cortan las curvas F y G, son: r1=-0.3445+j1.3051 r2=-0.2726-j1.1594 r3=1.1862+j0.0304 d) Halle las raíces de manera directa usando roots2  i * 3,  i * 2 , i * 3,  3  i * 6 y compare Para usar el comando Roots, se debe formar un vector con los coeficientes del polinomio P:

P)( z2 3 

j 2z3

  3j  z32 6j

z

j

De acuerdo a lo anterior, definimos un vector C, que contenga los coeficientes del polinomio (en MATLAB se usa i en vez de j):

C  2j

*3, j j

*2,j*3, 3



*6



Aplicando el comando, se obtiene: C=[2+i*3,-i*2,i*3,-3-i*6]; roots(C)

-0.4679 + 1.3467i -0.2568 - 1.0694i

Los dos primeros valores resultan diferentes de los hallados mediante el método de Newton, aunque del mismo orden de magnitud.

1.1862 + 0.0304i

2) Considere el sistema de ecuaciones:

 x 2  y  z  1 2 x  y  z  2 x  y  z 2  4 

25

a) Elimine la variable z y represente gráficamente el sistema resultante. SOLUCIÓN: Eliminamos la variable z, igualando las dos primeras y las dos últimas ecuaciones, y se obtiene: z  1  x2  y z  x y2  2 z 

4 x

y

2 2  1 x  y  x  y 2  2  x  y  2  4 x y

Para representar gráficamente el sistema, definimos sendas funciones F y G, ó F y H, así:

F),1( x y   x2 y2 x  y 2

G)x,y( x y  2 4 2 xy

ó H),x(y x y 24  x  y

2

Se utilizan los comandos: f=ezplot(F); set(f,'Color','m'),hold on,grid on g=ezplot(G); set(g,'Color','b'),hold on,grid on h=ezplot(H); set(h,'Color','r'),hold on,grid on, axis([-4 4 -4 4]) 4

G

3

F

2

1

y

0

-1

H

-2

-3

-4 -4

-3

-2

-1

0

1

2

3

4

x

Figura 2. Gráfica del sistema F(x,y)=0,G(x,y)=0 y F(x,y)=0,H(x,y)=0

26

Otro modo de representar gráficamente: Eliminando la variable z, despejándola de la primera 2 ecuación: z  1  x  y y reemplazándola en la segunda y la tercera ecuación) se obtiene:

x  y 2 1 x 2  y  x  y 1 x y  2

2

2 4

Para representar gráficamente el sistema, definimos dos funciones F y G, así: F ), ( x y  1x y2  2 x 2 y  G ),x(y x y1   x y 4

2





2

Se ingresan las funciones F y G en MATLAB como: F='x+y^2-(1-x^2-y)-2' G='x-y+(1-x^2-y)^2-4' Se grafican ambas con el comandoezplot y se le da el color a cada gráfica con el comandoset y la propiedad color, así: h=ezplot(F);set(h, 'Color', 'm')% color magenta hold on, grid on l=ezplot(G); set(l, 'Color', 'b')% color azul axis([-4 4 -4 4]) La gráfica del sistema se muestra a continuación. Se señalan los puntos de intercepción entre las curvas F(x,y)=0 y G(x,y)=0. Los puntos de intercepción entre las curvas son los mismos que los encontrados anteriormente.

27

4

3

2

1

y

0

-1

-2

-3

-4 -4

G

F

-3

-2

-1

0

1

2

3

4

x Figura 3. Gráfica del sistema F(x,y)=0 y G(x,y)=0 b) Determine todas las raíces usando el método de Gauss-Seidel. SOLUCIÓN: Para resolver el sistema de ecuaciones usando el método de Gauss-Seidel, debe despejarse la variable x de la primera ecuación, la variabley de la segunda, y la variablez de la tercera, así: g1 ( y, z)  x 1 

y z1   0 , y, z

 para x y z

g)2, ( x z 2 y   2 x z 0

,, x

z

 para x y z

g)3, ( x y  4 z   4 x  y 0

,, x

y

 para x y z

Y asignar los superíndices de forma que siempre se use el valor más reciente de cada variable en cada iteración: x k 1  1  y k  z k y k 1  2  x k 1  z k z k 1  4  xk 1  y k 1

Para determinar las raíces usando el método de Gauss Seidel se utiliza el siguiente código en MATLAB: clearall

28

clc % Método de Gauss Seidel % Solución de un sistema de orden tres diagonalmente dominante % x=g1(y,z); y=g2(x,z); z=g3(x,y) n=input('Ingrese el número de iteraciones='); g1=input('Ingrese la función g1(y,z)='); g2=input('Ingrese la función g2(x,z)='); g3=input('Ingrese la función g3(x,y)='); xi=input('Ingrese el valor semilla para x='); yi=input('Ingrese el valor semilla para y='); zi=input('Ingrese el valor semilla para z='); % Se genera una matriz M cuya primera columna es la semilla M(1,1)=xi; M(2,1)=yi; M(3,1)=zi; for k=1:n; x=M(1,k); y=M(2,k); z=M(3,k); M(1,k+1) = eval(g1); x=M(1,k+1); M(2,k+1) = eval(g2); y=M(2,k+1); M(3,k+1) = eval(g3); end M'

Selección de las semillas: Nótese que, según la Figura 2 (ó Figura 3), hay una o dos raíces cerca de los siguientes puntos: (x,y)01=(-1.7,1.0) II cuadrante x0

29

(x,y)02=(-2.3,-1.3)III cuadrante x
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF