1. Sistemas de ecuaciones lineales

Departamento de Matem´ atica Aplicada ´ CALCULO COMPUTACIONAL. Licenciatura en Qu´ımica (Curso 2005-06) Sistemas de ecuaciones lineales Pr´ actica 2 E

266 downloads 180 Views 71KB Size

Recommend Stories


Ecuaciones y Sistemas Lineales 1
Álgebra Ecuaciones y Sistemas Lineales 1 Resolver una ecuación en encontrar todas su soluciones o llegar a la conclusión de que no tiene ninguna. E

SISTEMAS DE ECUACIONES LINEALES
1 SISTEMAS DE ECUACIONES LINEALES Una ecuación es un enunciado o proposición que plantea la igualdad de dos expresiones, donde al menos una de ellas

Story Transcript

Departamento de Matem´ atica Aplicada ´ CALCULO COMPUTACIONAL. Licenciatura en Qu´ımica (Curso 2005-06) Sistemas de ecuaciones lineales Pr´ actica 2 En esta pr´ actica vamos a ver c´ omo se pueden resolver sistemas de ecuaciones lineales utilizando Matlab.

1.

Sistemas de ecuaciones lineales Un sistema de ecuaciones lineales,  a11 x1 + a12 x2 + . . . + a1n xn = b1     a21 x1 + a22 x2 + . . . + a2n xn = b2 ..   .    am1 x1 + am2 x2 + . . . + amn xn = bm con m ecuaciones y n inc´ ognitas se puede escribir en forma matricial, Ax = b donde, 

a11  a21  A= .  ..

am1

a12 a22 am2

 x1  x2    x= .   ..  

 a1n a2n   ;  . . . amn ... ...

xn

y

 b1  b2    b= .   ..  

bm

Vamos a ver mediante algunos ejemplos y ejercicios c´ omo se pueden resolver los sistemas de ecuaciones lineales utilizando algunos de los comandos de Matlab descritos anteriormente. Ejemplo 1 Consideremos el sistema,   2x − y + z = 3 x+y =3   y − 3z = −7

entonces, siguiendo la notaci´ on anterior,   2 −1 1 0 , A = 1 1 0 1 −3

  x x = y  z

y

 3 b= 3  −7 

Como se trata de un sistema con soluci´ on u ´nica, ya que el determinante de A es distinto de cero, >>det(A) ans = -8 Una forma de resolver el sistema es escribir la matriz orlada (o ampliada) >>Ab=[A b] y hacer rref(Ab) con lo que obtenemos   1 0 0 1 0 1 0 2 0 0 1 3 7

es decir, la soluci´ on es x = 1, y = 2, z = 3. Otra forma de resolver el sistema consiste en despejar x, x = A−1 b, sin m´ as que escribir >>x=inv(A)*b x = 1 2 3 Hay otra forma de hacerlo, utilizando lo que en Matlab se denomina como divisi´ on matricial a la izquierda: >>x=A\b x = 1 2 3 En este caso, el resultado es el mismo, pero es diferente la forma en la que trabaja el ordenador. En este segundo caso el m´etodo que utiliza es el de la factorizaci´ on LU, que es una modificaci´ on de la eliminaci´ on gaussiana. Vamos a ver c´ omo resuelve Matlab, internamente, el sistema cuando se utiliza la opci´ on: >>x=A\b. El proceso se puede dividir en tres etapas: 1) Calcula una matriz triangular inferior L, una matriz triangular superior U y una matriz de permutaci´ on P tales que P A = LU . P es simplemente la matriz identidad I con sus filas cambiadas de orden. 2) Resuelve Ly = P b. 3) Por u ´ltimo, se resuelve U x = y. La primera etapa es lo que se conoce con el nombre de factorizaci´ on LU y es el paso m´ as importante. Por lo tanto, en Matlab ser´ıa equivalente utilizar: >>x=A\b que utilizar el siguiente proceso: >>[L,U,P]=lu(A); % Este es el comando que calcula las matrices L, U, P >>B=P*b; >>y=L\B; >>x=U\y Ejercicio 1 Resolver el siguiente sistema utilizando los tres procedimientos anteriormente descritos y comprobar que sale la misma soluci´ on.      1 1 0 3 x1 4 2     1 −1 1     x2  =  1   3 −1 −1 2  x3  −3 −1 2 3 −1 x4 4

Ejercicio 2 Vamos a contar el n´ umero de operaciones elementales (sumas y productos) que se utilizan para resolver el sistema utilizando los tres m´etodos. Para ello vamos a utilizar el comando flops. Este comando cuenta el n´ umero de operaciones elementales que se han realizado en una sesi´ on determinada. Para poner el contador a cero utilizamos el comando >>flops(0). Resolver el sistema de una de las formas y contar las operaciones, escribiendo >>flops y repetir la operaci´ on resolvi´endolo de otra forma. ¿En cu´ al de los tres casos se utilizan menos operaciones?

8

Ejercicio 3 El m´etodo >>x=A\b funciona si hay m´ as ecuaciones que inc´ ognitas (siempre que tenga soluci´ on u ´nica). E incluso en el caso en el que hay menos ecuaciones que inc´ ognitas, con infinitas soluciones, Matlab ofrece dos de estas soluciones directamente: Con >>x=A\b nos da una soluci´ on que tiene ceros para algunas de las inc´ ognitas. Con otro comando, >>x=pinv(A)*b se obtiene una soluci´ on del sistema donde la norma eucl´ıdea de x es la m´ as peque˜ na de todas las posibles. ¿Es siempre u ´nica esta soluci´ on con longitud m´ınima? Aplicando lo anterior encontrar las soluciones de los sistemas  (  x + y = 1 x+y+z =3 b) a) x − y = 1  x−y+z =2  2x + y = 2 Investigar qu´e hace el comando >>pinv(A).

Ejercicio 4 Si resolvemos el siguiente sistema con Matlab   x + y = 1 2x + 2y = 2   3x + 3y = 3

¿Qu´e obtenemos con los comandos A\b y pinv(A)*b? Dibujar en IR 2 el conjunto de soluciones del sistema y las obtenidas con Matlab. Ejercicio 5 Estudiar el sistema  x+y+z =1    x − y − z = 2  3x + 3y + 3z = 1    −x − y + z = 1

¿Qu´e obtenemos con los comandos A\b y pinv(A)*b? ¿Es correcto? ¿Que responde Matlab al comando rref([A,b])? ¿Y a los comandos x=inv(A)*b, lu(A)? ¿Qu´e conclusi´ on sacas de esto? Ejercicio 6 Crear las matrices A=rand(7) y b=rand(7,1). Vamos a resolver el sistema Ax = b con MatLab de varias formas, y vamos a contar los “flops”en cada una de ellas haciendo:

i) >>flops(0),rref([A b]),frref=flops ii) >>flops(0),x=inv(A)*b,finv=flops iii) >>flops(0),x=A\b,f=flops iv) >>flops(0),x=pinv(A)*b,fpinv=flops Comprobar que f

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.