Resultado matriz a matriz b

Descargar (0)

Texto completo

(1)

Operaciones con matrices

// programa 11_suma de transpuestas a dos columnas // matriz a de 4x4

a=[1234;5678;9101112;13141516]; b=a' // b es traspuesta de a

disp('matriz a');

disp(a); // muestra matriz a

disp('matriz b');

disp(b); // muestra matriz b d=0;

for f=1:1:4 e=0; for c=2:2:4 e=e+1;

d(f,e)=a(f,c)+b(f,c) // extrae a dos columnas la suma end end disp('matriz d'); disp(d); Resultado matriz a 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. matriz b 1. 5. 9. 13. 2. 6. 10. 14. 3. 7. 11. 15. 4. 8. 12. 16. matriz d 7. 17. 12. 22. 17. 27. 22. 32.

(2)

// Programa 12_suma de Transpuestas a=[1234;5678;9101112;13141516]; b=a'

disp('mattriz a'); disp(a); disp('matriz b'); disp(b); cleard for f=1:1:4 for c=2:2:4 d(f,c)=a(f,c)+b(f,c) end end disp('matriz d'); disp(d); Resultado o ejecución mattriz a 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. matriz b 1. 5. 9. 13. 2. 6. 10. 14. 3. 7. 11. 15. 4. 8. 12. 16. matriz d 0. 7. 0. 17. 0. 12. 0. 22. 0. 17. 0. 27. 0. 22. 0. 32.

(3)

Funciones Scilab

zeros(3,5) forma una matriz de ceros de tamaño (3×5) zeros(4) ídem de tamaño (4×4)

ones(3) forma una matriz de unos de tamaño (3×3) ones(2,4) idem de tamaño (2×4)

[m,n]=size(A) devuelve el número de filas y de columnas de la matriz A. Si la matriz es cuadrada basta recoger el primer valor de retorno

n=length(x) calcula el número de elementos de un vector x

zeros(size(A)) forma una matriz de ceros del mismo tamaño que una matriz A previamente creada ones(size(A)) ídem con unos

A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son los elementos de un vector ya existente x

x=diag(A) forma un vector x a partir de los elementos de la diagonal de una matriz ya existente A

diag(diag(A)) crea una matriz diagonal a partir de la diagonal de la matriz A Operaciones con matrices

b=a([1],:); // extrae a matriz b la fila uno la expresión a([1],:) es la matriz a(m,n)

cuyos componentes son m y n; en este caso m es [1] significa esta tomado la fila 1, y el segundo componente es n en este caso

:

dos puntos significa todas las columnas. c=a(:,[1]); // extrae a matriz c la columna uno

la expresión a(:,[1]) es la matriz a(m,n)

cuyos componentes son m y n; en este caso m es

:

significa todas las filas, y el segundo componente es n en este caso [1] significa esta tomando la 1 columna.

// Programa_13 Matriz filas o columna ext // Matrices extracción filas o columnas

disp('matriz a');

a=[10,5,-1;14,7,2;9,8,-12;]; disp(a);

b=a([1],:); // extrae a matriz b la fila uno c=a(:,[1]); // extrae a matriz c la columna uno d=a([1:2:3],:); // extrae a matriz d la fila uno y fila tres

e=a(:,[1:2:3]); // extrae a matriz e columna uno y columna tres

disp('matriz b a([1],:) extrae a matriz b la fila uno'); disp(b);

disp('matriz c a(:,[1]) extrae a matriz c la columna uno'); disp(c);

disp('matriz d a([1:2:3],:) extrae a matriz d la fila uno y fila tres'); disp(d);

disp('matriz e a(:,[1:2:3] extrae a matriz e columna uno y columna tres'); disp(e);

(4)

Resultado matriz a 10. 5. - 1. 14. 7. 2. 9. 8. - 12.

matriz b a([1],:) extrae a matriz b la fila uno 10. 5. - 1.

matriz c a(:,[1]) extrae a matriz c la columna uno 10.

14. 9.

matriz d a([1:2:3],:) extrae a matriz d la fila uno y fila tres 10. 5. - 1.

9. 8. - 12.

matriz e a(:,[1:2:3] extrae a matriz e columna uno y columna tres 10. - 1.

14. 2. 9. - 12.

(5)

Sección 9.2 Soluciones de sistemas de ecuaciones lineales 325

9.2.2 Solución con división izquierda de matriz

Una mejor forma de resolver un sistema de ecuaciones lineales es usar una técnica llamada eliminación gaussiana. En realidad ésta es la forma en que usted probablemente aprendió a resolver sistemas de ecuaciones en el álgebra de bachillerato. Considere el problema de tres ecuaciones en x, y y z:

Idea clave: la eliminación gaussiana es más eficiente y menos susceptible a error de redondeo que el método de matriz inversa.

Para resolver este problema a mano, se considerarían primero las dos primeras ecuaciones en el conjunto y se eliminaría una de las variables, por ejemplo, x. Para hacer esto necesitará multiplicar la segunda ecuación por 3 y luego sumar la ecuación resultante a la primera:

Ahora se necesita repetir el proceso para la segunda y tercera ecuaciones:

En este punto, se eliminó una variable y el problema se redujo a dos ecuaciones y dos incóg- nitas:

Ahora se puede repetir el proceso de eliminación al multiplicar la fila 3 por -11/2:

Finalmente, se puede resolver para z:

z = - 6

Una vez que se conoce el valor de z, se puede sustituir de vuelta en cualquiera de las dos ecua- ciones con sólo z y y, a saber,

para encontrar que

y = 5

(6)

326 Capítulo 9 Álgebra matricial

El último paso es sustituir de nuevo en una de las cuatro ecuaciones originales,

para encontrar que

x = - 2 eliminación

gaussiana: enfoque organizado para eliminar variables y resolver un conjunto de ecuaciones simultáneas

La técnica de eliminación gaussiana es un enfoque organizado para eliminar variables hasta que sólo existe una incógnita y luego sustituir de nuevo hasta que se determinan todas las incógnitas. En MATLAB se puede usar división izquierda para resolver el problema por eli- minación gaussiana. En consecuencia,

regresa

Obviamente, éste es el mismo resultado que se obtuvo con la solución a mano y el enfoque de matriz inversa. En un problema simple como éste, el error de redondeo y el tiempo de ejecu- ción no son grandes factores para determinar cuál enfoque usar. Sin embargo, algunas técnicas numéricas requieren la solución de matrices con miles o incluso millones de elementos. Los tiempos de ejecución se miden en horas o días para estos problemas, y el error de redondeo y el tiempo de ejecución se convierten en consideraciones cruciales.

No todos los sistemas de ecuaciones lineales tienen una solución única. Si existen menos ecuaciones que variables, el problema está subespecificado. Si hay más ecuaciones que variables, el problema está sobreespecificado. MATLAB incluye funciones que le permitirán resolver cada uno de estos sistemas de ecuaciones al usar enfoques numéricos de mejor ajuste o agregar restricciones. Consulte la función help de MATLAB para más información acerca de estas técnicas.

// Programa 14_ecuaciones simultaneas

a=[3,2,-1;-1,3,2;1,-1,-1]; b=[10;5;-1]; c=a\b; disp(c); Resultado Scilab - 2. 5. - 6.

(7)

Funciones

Encontar las raices

function[x1, x2]=raices(a, b, c)

x1=(-b+sqrt(b^2-4*a*c))/(2*a); x2=(-b-sqrt(b^2-4*a*c))/(2*a);

endfunction

Función parámetros de salida [x1, x2]

Nombre de la función parámetros de entrada raices(a, b, c)

Nombre de la función el tomará el mismo nombre del archivo raices

Los datos se ingresan como sigue [x1, x2]=raices(1,3,1)

El programa es el que sigue y al guardar asumirá el nombre de raíces como se muestra en rojo

En la consola del Scilab se ingresan lo datos como sigue

(8)

Otra forma de hacer el mismo programa // Programa funcion function[x1, x2]=raices(a, b, c) x1=(-b+sqrt(b^2-4*a*c))/(2*a); x2=(-b-sqrt(b^2-4*a*c))/(2*a); disp('x1'); disp(x1); disp('x2'); disp(x2); endfunction a=input('a= '); b=input('b= '); c=input('c= '); [x1, x2]=raices(a, b, c) Ejecuciòn o resultado a= 1 b= 3 c= 1 x1 - 0.3819660 x2 - 2.618034

Uso de la función roots

Se tiene el siguiente polinomio 3x2+4x+3

// funcion raices o roots 3x^2+4x+3 p=[3,4,3]; r=roots(p); disp(r); Ejercicio o resultado -->exec('D:\scilab2\ejercicio18.sce', -1) - 0.6666667 + 0.7453560i - 0.6666667 - 0.7453560i

Figure

Actualización...

Referencias