• No se han encontrado resultados

ecuaciones lineales

In document LibroMatlabWEB.pdf (página 43-57)

3.1.

M´etodo de Gauss

El m´etodo de Gauss, tambi´en conocido como eliminaci´on gaussiana, es el algoritmo m´as sencillo para la resoluci´on de sistemas de ecuaciones lineales. Consta de dos partes bien diferenciadas:

i) Transformaci´on del sistema lineal en otro equivalente, es decir, con la misma solu- ci´on, donde la matriz es triangular superior.

ii) Resoluci´on del sistema triangular por sustituci´on regresiva. El paso i) se acomete v´ıa dos operaciones elementales:

(a) Sumar a una ecuaci´on otra multiplicada por un n´umero. (b) Intercambiar dos ecuaciones.

Si s´olo utilizamos la operaci´on (a) hablaremos del m´etodo de Gauss sin pivotaje, y con pivotaje parcial si tambi´en realizamos las operaciones (b)1 cuando la elecci´on de

las filas que se conmutan sea una muy particular.

Representando el sistema de ecuaciones en la forma matricial, todo lo anterior se reescribe en t´erminos de operaciones matriciales (sumar a una fila otra fila e intercambiar filas2). En lo que sigue expresaremos el sistema en la forma

Ax = b, A ∈ Rn×n, x, b ∈ Rn,

donde A es la matriz de coeficientes, b el t´ermino independiente y x el vector de soluciones. Los elementos de A se denotar´an por aij, y con bi los de b.

1Existe una tercera operaci´on (c), que consiste simplemente en multiplicar filas por constantes no

nulas. Esta operaci´on recibe el nombre de reescalado (de filas) y en problemas pr´acticos se suele utilizar con el fin de mejorar la estabilidad del sistema frente a errores de redondeo.

2Otra posibilidad es intercambiar columnas, que se corresponde con reordenar las inc´ognitas). En este

Borrador

3.1 M´etodo de Gauss LECCI ´ON I

3.1.1.

M´etodo de Gauss sin pivotaje

El pseudoc´odigo se expone a continuaci´on M´etodo de Gauss 01 for i = 1 : n − 1 02 for k = i + 1 : n 03 `ki = aki/aii 04 for j = i + 1 : n 05 akj = akj − `kiaij 06 end 07 bk = bk− `kibi 08 end 09 end 10 11 xn= bn/ann 12 for i = n − 1 : −1 : 1 13 xi =  bi− n X j=i+1 aijxj  /aii 15 end

Las l´ıneas 01--09 se corresponden con la reducci´on a la forma triangular de la matriz y las l´ıneas 11--15 con la resoluci´on del sistema triangular resultante. El elemento aii se

denomina pivote y debe ser distinto de cero para que el algoritmo funcione, dado que en caso contrario la operaci´on en 03 est´a mal definida.

El algoritmo efect´ua O(n3/3) productos3 y otras tantas sumas para la reducci´on a la

forma triangular y O(n2/2) sumas y productos para la resoluci´on del sistema triangular. Por tanto el costo se concentra en la primera fase del algoritmo y duplicar la dimensi´on del sistema exige multiplicar por ocho el tiempo de c´alculo (y por cuatro el costo en memoria).

Ejercicio 3.1 Implementa una funci´on cuyas entradas sean la matriz de coeficientes y el t´ermino independiente y devuelva la soluci´on del sistema por el m´etodo de Gauss.

Soluci´on. El siguiente programa es una soluci´on del ejercicio 01 % GAUSS

02 % 03 %

04 % X=GAUSS(A,B) Solucion del sistema Ax=b con el metodo 05 % de Gauss sin pivotaje

3es decir, el n´umero de multiplicaciones es n3/3 + αn2+ βn + γ, donde α, β y γ son constantes

Borrador

LECCI ´ON I Cap´ıtulo 3. M´etodos directos para sistemas de ecuaciones lineales 06

07 function x = gauss(a,b) 08 n=length(a);

09

10 % transformacion del sistema en uno triangular 11 for i=1:n-1 12 for k=i+1:n 13 l=a(k,i)/a(i,i); 14 for j=i+1:n 15 a(k,j)=a(k,j)-l*a(i,j); 16 end 17 b(k)=b(k)-l*b(i); 18 end 19 end 20

21 % resolucion del sistema triangular 22 x=zeros(n,1); % tambien vale x=b*0; 23 x(n)=b(n)/a(n,n); 24 for i=n-1:-1:1 25 s=0; 26 for j=i+1:n 27 s=s+a(i,j)*x(j); % sumatorio 28 end 29 x(i)=(b(i)-s)/a(i,i); 30 end 31 return  El c´odigo anterior es correcto y ciertamente recuerda a la sintaxis que usar´ıamos en una programaci´on en un lenguaje tradicional como C o Pascal. Sin embargo desde el punto de vista de Matlab es claramente redundante y muy mejorable. Los siguientes ejercicios ahondan en estos aspectos por lo que resolverlos es muy recomendable.

Ejercicio 3.2 Reescribe el programa utilizando instrucciones y sintaxis propia de Matlab. Soluci´on. Las filas 14-16 del programa (04--06 del algoritmo) se pueden implementar como una diferencia de dos vectores, a(k,i+1:n) y a(i,i+1:n), con cualquiera de estas dos instrucciones

a(k,i+1:n) =a(k,i+1:n) - l*a(i,i+1:n) a(k,:) =a(k,:) - m*a(i,:)

La segunda es m´as c´omoda de utilizar pero multiplica por dos el n´umero de operaciones en la ejecuci´on del m´etodo4.

Borrador

3.1 M´etodo de Gauss LECCI ´ON I De forma an´aloga, el sumatorio de las l´ıneas 25-29 del c´odigo (13 del algoritmo del m´etodo de Gauss) es simplemente el producto escalar, y de hecho tambi´en matricial, de dos vectores, el vector fila a(i,i+1:n) y el vector columna x(i+1:n). Esto es el c´odigo de las l´ıneas 25--29 se puede sustituir por

x(i)=(b(i)- a(i,i+1:n)*x(i+1:n))/a(i,i);

 Ejercicio 3.3 (Avanzado) Podemos avanzar a´un m´as hacia la consecuci´on de algoritmos matriciales. Consideremos la partici´on de A

A = a11 c > 1 d1 A11  , b =  b1 b1 

donde c1, d1 son vectores (n − 1) × 1 y A11 una matriz (n − 1) × (n − 1). Entonces, el primer

paso del m´etodo de Gauss se puede escribir  a11 c>1 0 A11− (a11)−1c>1d1  , b =  b1 b1− a−111b1d1.  | {z } A(1) | {z } b(1)

El segundo paso del m´etodo de Gauss se aplica ahora sobre la matriz A(1)(de tama˜no (n−1)× (n − 1)) y el vector b(1) (de tama˜no (n − 1) × 1) y as´ı se procede sucesivamente. Implementa

esta resoluci´on alternativa del m´etodo de Gauss.

(Ayuda. Observa estas tres instrucciones

l=a(i+1:n,i)/a(i,i) a(i+1:n,i+1:n)-l*a(i,i+1:n) b(i+1:n)-l*b(i) ¿Qu´e hacen?)

Nota sobre la vectorizaci´on

La noci´on de vectorizaci´on, trabajar con vectores y matrices en lugar de elemento a ele- mento, no es nueva ni en el An´alisis Num´erico ni en la computaci´on a alto nivel. El objetivo que se persigue es que las todas las operaciones se reduzcan a operaciones matem´aticas sencillas, como productos escalares, productos matriciales, b´usqueda de m´aximos y m´ıni- mos en un vector/matriz, suma de vectores y matrices... cuya implementaci´on se opti- miza tomando en consideraci´on el entorno en el que se trabaja, tanto en software como en hardware. Este conjunto de instrucciones se conocen como BLAS (basic linear algebra subprograms). Se distinguen tres niveles. El nivel uno est´a formada por operaciones entre vectores, tales como la suma o el producto escalar de dos vectores, de O(n) operaciones, el nivel dos se ocupa de operaciones matriz-vector con O(n2) operaciones y el nivel tres son

operaciones entre matrices, O(n3) operaciones. En m´aquinas con m´ultiples procesadores estos subprogramas deben adaptarse a dividir la tarea entre los procesadores disponibles de forma ´optima y a buscar algoritmos que soporten este tipo de trabajo5.

5Se deben buscar en primer lugar algoritmos que permitan dividir la tarea principal en subtareas

equiparables, y de forma que finalicen en tiempos similares puesto que basta con que una de las subtareas se retrase respecto a las dem´as para que el conjunto de procesadores deba parar a esperar al rezagado con la consiguiente p´erdida de tiempo (y dinero).

Borrador

LECCI ´ON I Cap´ıtulo 3. M´etodos directos para sistemas de ecuaciones lineales Uno de los detalles m´as sencillos que hay que plantear es la estrategia de almace- namiento de las matrices en memoria. Se puede optar por un almacenamiento por filas, como hace C,

A = a11 a12 a13 a21 a22 a23



⇒ a11→ a12→ a13 → a21→ a22 → a23

donde con la notaci´on anterior queremos decir que aij y aij+1 ocupan posiciones consec-

utivas en memoria.

Sin embargo Fortran o Matlab proceden por columnas A = a11 a12 a13

a21 a22 a23



⇒ a11→ a21 → a12→ a22 → a13→ a23.

Seg´un sea el caso se trata de primar algoritmos que accedan a la matriz por filas o por columnas para que el procesador trabaje con posiciones consecutivas de memoria6. En esta

din´amica, la resoluci´on del sistema triangular seg´un el algoritmo expuesto en el Ejercicio

3.3 est´a mejor adaptado a la arquitectura de Matlab puesto que todas las operaciones se hacen sobre columnas de la matriz a.

3.1.2.

M´etodo de Gauss con pivotaje parcial

Para evitar que el m´etodo de Gauss se colapse, es decir, que encuentre en un paso i que el elemento aii es nulo (l´ınea 03 del algoritmo), se introduce la noci´on de pivotaje. La

idea es muy sencilla: en el caso de que en el i–´esimo paso el pivote sea nulo, se procede a intercambiar la fila i por una fila k tal que aki 6= 0 para cierto k > i. Si esto no es posible,

el sistema no es compatible determinado, es decir, o no tiene soluci´on o tiene infinitas soluciones.

Desde un punto de vista pr´actico, el m´etodo de Gauss con pivotaje procede a inter- cambiar siempre filas de forma que en cada paso

|aki| = m´ax `=i,...,n|a`i|,

esto es, el pivote es el mayor posible. Ello dota al sistema de una mayor estabilidad frente a los errores de redondeo. El algoritmo resultante es el siguiente (denotamos por a ↔ b el intercambio de valores de a y b).

6Cuando un procesador moderno lee algo en memoria, suele cargar a su memoria internar, la memoria

cach´e, posiciones adicionales y consecutivas de memoria bajo la convicci´on de que es probable que las requiera en el siguiente paso.

Borrador

3.1 M´etodo de Gauss LECCI ´ON I M´etodo de Gauss con pivotaje parcial

01 for i = 1 : n − 1 02

03 Encontrar k ∈ {i, . . . , n} tal que |aki| = m´ax j=`,...,n|a`i|

04 for j = i : n

05 aij ↔ akj %intercambio filas y termino independiente

08 end 07 bi ↔ bk 08 09 for k = i + 1 : n 10 `ki = aki/aii 11 for j = i + 1 : n 12 akj = akj− `kiaij 13 end 14 bk = bk− `kibi 15 end 16 end

Ejercicio 3.4 Implementa una funci´on con el m´etodo de Gauss con pivotaje a partir de la funci´on definida en el Ejercicio 3.2.

Para este fin la instrucci´on max te puede resultar ´util. Espec´ıficamente, >> [m,i]=max(v)

devuelve en m el mayor valor del vector v y en i su posici´on, esto es, m = v(i). A˜nade tambi´en un control sobre el tama˜no de a(i, i) de forma que si ´este es pr´oximo a cero7 se termine la

ejecuci´on y se devuelva un mensaje de error.

(Ayuda. La instrucci´on [m,r]=max(abs(a(i:n,i))) te devolver´a en r la posici´on del m´aximo en el vector columna abs(a(i:n,i)). Por tanto, la fila en la matriz a con el mayor valor en la columna i es i+r-1.)

El intercambio de filas de las l´ıneas 04--08 se puede implementar de varias formas. La primera es simplemente con un bucle que recorra las filas y proceda a intercambiar los valores elemento a elemento. En la segunda forma se hace de forma global mediante

aux=a(i,i:n); a(i,i:n)=a(k,i:n); a(k,i:n)=aux;

La tercera forma probablemente ser´a la que resulte m´as extra˜na pero vuelve a ser natural en Matlab. Basta hacer

a([i,k],i:n)=a([k,i],i:n)

F´ıjate que tiene perfecto sentido sint´actico de acuerdo a las reglas de manipulaci´on de vectores y matrices expuestas en la primera parte de esta lecci´on.

7¿Cu´ando se decide que un n´umero es cero? En la pr´actica depende de los tama˜nos del resto de

Borrador

LECCI ´ON I Cap´ıtulo 3. M´etodos directos para sistemas de ecuaciones lineales

3.1.3.

M´etodo de Gauss con pivotaje parcial ficticio

Desde un punto de vista pr´actico no hace falta intercambiar f´ısicamente las filas de la matriz. En lugar de ello se puede utilizar un vector de ´ındices p de forma que p(i) sea la posici´on f´ısica en memoria de la fila i.

Inicialmente, las filas est´an sin reordenar, es decir, se empieza declarando p=1:n;

Intercambiar las filas i y k es equivalente a intercambiar los valores de p en las posiciones i y k

p([i k])=p([k i])

y se procede a hacer ceros en las filas p(i+1),. . . , p(n). El acceso la fila i se consigue con a(p(i),:)

y la b´usqueda del m´aximo valor para el intercambio de filas con [m,r]=max(abs(a(p(i:n),i)));r=r+i-1;

La fila con el m´aximo elemento en valor absoluto es la p(r).

Para la resoluci´on del sistema triangular despejamos igual que en el m´etodo de Gauss, desde la n-´esima inc´ognita a la primera, con

22 x(p(n))=b(p(n))/a(p(n),n); 23 for i=n-1:-1:1

24 x(p(i))=(b(p(i))-a(p(i),i+1:n)*x(i+1:n))/a(p(i),i); 25 end

Desde un punto de vista estrictamente matem´atico se trata de llevar la matriz a una forma que, si bien no es triangular, una reordenaci´on adecuada de las filas la transforma en triangular. El vector p recoge en qu´e orden se deben despejar las inc´ognitas a la hora de resolver el sistema reducido. En concreto el orden viene dado por p(n), p(n-1),. . . , p(1). En cualquier caso, a(p,:) es una matriz triangular8.

Ejercicio 3.5 Implementa el m´etodo de Gauss con pivotaje parcial ficticio.

Ejercicio 3.6 Las l´ıneas 22–25 proceden a resolver el sistema triangular accediendo a los elementos por filas. Adapta el algoritmo para la resoluci´on de este sistema por columnas, tal como se hizo en el Ejercicio 3.3.

Ejercicio 3.7 Sea A una matriz inversible de tama˜no n × n y A−1 su inversa. Si ai es la

columna i−´esima de A−1, esto es,

A−1 = [a1|a2| · · · |an],

8La importancia de estas t´ecnicas ha decrecido con las ´ultimas generaciones de ordenadores, donde la

Borrador

3.2 Descomposiciones matriciales LECCI ´ON I entonces Aai = ei =        0 .. . 1 .. . 0        → i.

Utilizando alguna de las diferentes versiones del m´etodo de Gauss, implementa el c´alculo de la inversa mediante la resoluci´on de los n sistemas de ecuaciones. Observa que los n comparten la misma matriz de coeficientes.

3.2.

Descomposiciones matriciales

Uno de los aspectos que mejores resultados dio a lo largo del siglo XX, en los albores del An´alisis Num´erica, fue la constataci´on de que numerosos algoritmos del ´Algebra Lineal, pod´ıan reescribirse como factorizaciones de matrices en producto de otras matrices con caracter´ısticas muy particulares. ´Este es el caso del algoritmo de Gram-Schmidt, la matriz original escrita como el producto de una ortogonal por una triangular, o el caso que nos ocupa, el m´etodo de Gauss, visto como la b´usqueda de la factorizaci´on de A como el producto de una matriz triangular inferior por una superior.

La utilidad que se concedi´o a este tipo de factorizaciones fue en un primer momen- to m´as bien te´orica pero r´apidamente se encontr´o aplicaciones pr´acticas y su uso en la actualidad es profuso.

Estudiaremos en lo que sigue la factorizaci´on LU y variantes y dejaremos para m´as adelante (Lecci´on IV) otro tipo de factorizaciones.

3.2.1.

Descomposici´on LU

Supongamos que se dispone de una descomposici´on A = LU

donde L y U son matrices triangulares inferior y superior respectivamente. En este caso, la resoluci´on del sistema lineal Ax = b es equivalente a resolver dos sistemas de ecuaciones triangulares

Ly = b, U x = y.

el primero triangular superior y el segundo triangular inferior. Puesto que el costo de resoluci´on de cada sistema es O(n2) operaciones (total de sumas y productos) obtenemos una ventaja decisiva en la resoluci´on del sistema.

Ejercicio 3.8 Implementa la resoluci´on de un sistema de ecuaciones Lx = b donde L es triangular inferior con 1s en la diagonal.

Si abordamos directamente la resoluci´on de la ecuaci´on A = LU , nos encontramos con un sistema no lineal con n2 + n inc´ognitas (las entradas de L y U ) y n2 ecuaciones

Borrador

LECCI ´ON I Cap´ıtulo 3. M´etodos directos para sistemas de ecuaciones lineales ´

unica. Si exigimos que L tenga 1s sobre la diagonal, el n´umero de inc´ognitas pasa a ser de n2 y por tanto tenemos ya un sistema cuadrado (aunque no lineal). Se trata entonces

de estudiar el siguiente problema: dada una matriz A de tama˜no n × n, encontrar L y U de la forma L =      1 `21 1 .. . ... . .. `n1 `n2 · · · 1      , U =      u11 u12 · · · u1n u22 · · · u2n . .. ... unn      , y tales que A = LU.

El c´alculo de esta descomposici´on se puede llevar a cabo sin m´as que exigir que el producto LU sea igual al de A. As´ı empezamos despejando la primera fila de U (que es igual que la de A por ser `11= 1). Una vez conocida esa fila, se puede despejar la primera

columna de L, utilizando que el producto de L por la primera columna de U (que consta de un ´unico elemento no nulo y ya es conocido del paso anterior) da la primera columna de A. Procedemos sucesivamente de esta forma, construyendo U por filas y L por columnas.

Descomposici´on LU (M´etodo de Doolittle) 01 for k = 1 : n 02 for j = k : n 03 ukj = akj− k−1 X p=1 `kpupj 04 end 05 `kk = 1 06 for i = k + 1:n 07 `ik =  aik− k−1 X p=1 `ipupk  /ukk 08 end 09 end

El n´umero de operaciones del algoritmo resulta ser igual al del m´etodo de Gauss, con lo cual no hemos conseguido una ventaja significativa. Sin embargo, disponer de esta descomposici´on es especialmente ´util si se requiere resolver varios sistemas de ecuaciones lineales con la misma matriz pero con t´erminos independientes diferentes. Las operaciones que conllevan un mayor coste son las correspondientes al c´alculo de las matrices L y U , pero ´unicamente hay que realizar esta descomposici´on una vez para posteriormente resolver en cada caso dos sistemas triangulares.

Ejercicio 3.9 Implementar la descomposici´on LU en Matlab mediante una funci´on cuya entrada sea una matriz cuadrada y su salida sean las matrices L y U correspondientes.

Borrador

3.2 Descomposiciones matriciales LECCI ´ON I Al observar el algoritmo del m´etodo, las operaciones recuerdan a las efectuadas por el m´etodo de Gauss. Esto no es tan sorprendente cuando se analizan con detenimiento los calculados realizados. Se puede ver entonces que en el c´alculo de la descomposici´on LU se est´an haciendo exactamente las mismas operaciones que al aplicar el m´etodo de Gauss. En efecto, definamos ( a(1)ij = aij i, j = 1, . . . , n a(k+1)ij = a(k)ij − `ika (k) kj, k ≥ 1, 1 ≤ i, j ≤ n − k

donde `ki viene dada por el algoritmo de Doolitle (l´ınea 07).

Entonces, de acuerdo con el algoritmo de la factorizaci´on LU , los elementos de la primera fila de U y de la primera columna de L vienen dados por

u1j = a (1)

1j , `i1=

a(1)i1 a(1)11 . En el siguiente paso, se observa que

u2j = a2j − `21u1j = a (1) 2j − `21a (1) 1j = a (2) 2j `i2 = ai2− `i1u12 u22 = a (1) i2 − `i1a (1) 12 a(2)22 = a(2)i2 a(2)22 . Reiterando el mismo razonamiento concluimos que

uij = a (i)

ij , i ≤ j, `ij =

a(j)ij

a(j)jj , i > j.

Por tanto U es de hecho la matriz triangular que queda al aplicar el m´etodo de Gauss mientras que L est´a formada por los elementos que se han utilizado para hacer ceros en el proceso. Esto es, el elemento i, j de L, denotado por `ij, coincide con la constante `ij

calculado en la l´ınea 03 del m´etodo de Gauss y por tanto no hay una contradicci´on de notaciones.

En particular, la propiedad anterior propone una forma alternativa de calcular la de- scomposici´on LU de una matriz es la siguiente modificaci´on del programa del Ejercicio3.1: 11 for i=1:n-1}

12 a(i,i+1:n)=0; %hacemos cero la columna i 13 for k=i+1:n}

14 l(k,i)=a(k,i)/a(i,i);

15 a(k,i+1:n)=a(k,i+1:n)-l(k,i)*a(i,i+1:n); 16 end

17 end

La matriz U estar´ıa entonces almacenada en a.

Ejercicio 3.10 Una forma compacta de devolver la descomposici´on LU es insertar L en la parte triangular inferior de a. De esta forma, tras aplicar el m´etodo, a tiene en la parte superior la matriz U , mientras que por debajo de la diagonal encontramos L (exceptuando su diagonal de 1s). Implementa esta modificaci´on.

Borrador

LECCI ´ON I Cap´ıtulo 3. M´etodos directos para sistemas de ecuaciones lineales

3.2.2.

Casos particulares

M´etodo de Cholesky

En una gran variedad de problemas pr´acticos aparecen matrices sim´etricas definidas positivas. Este tipo de matrices puede descomponerse en la forma

A = LL> donde L =      `11 `21 `22 .. . ... . .. `n1 `n2 · · · `nn      .

Gracias a la simetr´ıa de la matriz, tanto el n´umero de operaciones como de posiciones de memoria requeridos pueden reducirse a la mitad. El algoritmo resultante es conocido como el m´etodo de Cholesky.

M´etodo de Cholesky 01 for k = 1:n 02 `kk= v u u takk− k−1 X r=1 `2 kr 03 for j = k + 1:n 04 `jk =  ajk − k−1 X r=1 `jr`kr  /`kk 05 end 06 end

Ejercicio 3.11 Implementa una funci´on que tenga como entrada una matriz A y devuelva la matriz L correspondiente. Debe avisar si la descomposici´on no ha podido llevarse a cabo.

Implementa tambi´en una segunda funci´on que tenga como entradas la matriz L triangular y un t´ermino independiente b y que devuelva la soluci´on del sistema

(LL>)x = b.

Para ello se requiere la resoluci´on de los sistemas triangulares Ly = b, L>x = y. LU con permutaci´on

El m´etodo de Gauss con pivotaje parcial es equivalente a la decomposici´on P A = LU

Borrador

3.2 Descomposiciones matriciales LECCI ´ON I donde P es el resultado de permutar las filas (o columnas) de la identidad. Alternativa- mente, equivale a una descomposici´on de la forma

A = bLU

donde bL = P−1L, de forma que bL es una permutaci´on de la matriz triangular inferior9.

La siguiente subrutina devuelve esa descomposici´on. 01 % LUPERMUTACION

02 %

03 % [L,U]=LUPERMUTACION(A) 04 %

05 % devuelve U triangular superior, L permutacion 06 % por filas de una matriz triangular inferior con 07 % 1s en la diagonal de forma que A=L*U

08

09 function [l,u]= LUPermutacion(a) 10 n=length(a); 11 p=1:n; 12 13 for i=1:n-1 14 [maximo,r]=max(abs(a(p(i:n),i)));r=r+i-1; 15 p([i r])=p([r i]); 16 for k=i+1:n 17 l(p(k),i)=a(p(k),i)/a(p(i),i); 18 a(p(k),i:n)=a(p(k),i:n)-l(p(k),i)*a(p(i),i:n); 19 end 20 end 21 for i=1:n 22 l(p(i),i)=1; 23 end 24 u=a(p,:); 25 return

3.2.3.

Comandos correspondientes en Matlab

Todas las factorizaciones vistas con anterioridad est´an, por supuesto, implementadas en Matlab. Algunos de los comandos relacionados son

Borrador

LECCI ´ON I Cap´ıtulo 3. M´etodos directos para sistemas de ecuaciones lineales [l,u]=lu(a) devuelve u triangular superior, l permutaci´on de una triangular inferior

con 1s en la diagonal de forma que a=l*u.

[l,u,p]=lu(a) devuelve u triangular superior, l triangular inferior con 1s en la diagonal

In document LibroMatlabWEB.pdf (página 43-57)

Documento similar