Professional Documents
Culture Documents
Métodos Numéricos
Trabajo 3
Integrantes:
Carlos Jácome
Eduardo Tayupanta
NRC:4759
21 de octubre de 2013
Resumen
El siguiente documento contiene soluciones a ejercicios propuestos,utilizando como
herramienta el Software Matlab,además de los conceptos fundamentales de la
asignatura Métodos Numéricos.
1
Métodos Numéricos
Índice
1. Ejercicio 1 2
2. Ejercicio 2 4
3. Ejercicio 3 4
4. Ejercicio 4 5
5. Ejercicio 5 6
6. Ejercicio 6 6
1. Ejercicio 1
Desarrolle un código que permita calcular el producto matricial.
Para realizar el producto matricial se debe tomar en cuenta, que el tamaño de las colum-
nas de la primera matriz debe ser igual al tamaño de las filas de la segunda matriz, para que
exista el producto matricial, además el orden de la matriz respuesta depende del número de
filas de la primera matriz y del número de columnas de la segunda matriz:
2 C.Jácome ,E.Tayupanta
Métodos Numéricos
Código:
function x=prodmatricial(A,B)
A=[1 2 2; -1 0 3];
B=[1 0 -1 3; 0 1 4 5; 3 -2 1 0];
[fA cA]=size(A);
[fB cB]=size(B);
if cA==fB
for i=1:fA
for j=1:cB
x(i,j)=A(i,:)*B(:,j);
end
end
else
disp(’No existe el producto matricial’)
return
end
Ejecución:
ans =
7 -2 9 13
8 -6 4 -3
3 C.Jácome ,E.Tayupanta
Métodos Numéricos
2. Ejercicio 2
Desarrolle un código que permita determinar la transpuesta de una matriz.
Para obtener la transpuesta de una matriz, se necesita que las filas pasen a ser columnas
o viceversa.
Código:
function x=transpuesta(A)
A=[1 2 ; 4 5 ; 0 9 ]
[fA cA]=size(A);
for i=1:cA
for j=1:fA
x(i,j)=A(j,i);
end
end
Ejecución:
ans =
1 4 0
2 5 9
3. Ejercicio 3
Desarrolle un código para calcular el producto escalar.
Código:
A=[1 2 4 5]
B=[1 4 3 1]
[fa,ca]=size(A);
[fb,cb]=size(B);
x=0;
if ca~=cb
error(’No existe Producto Escalar’)
4 C.Jácome ,E.Tayupanta
Métodos Numéricos
end
for i=1:ca
x=x+A(1,i)*B(1,i);
end
end
Ejecución:
prodesca
A =
1 2 4 5
B =
1 4 3 1
ans =
26
4. Ejercicio 4
Desarrolle un código que calcule la norma de un vector.
Código:
%Ejercicio 4
function x = normavect( A )
A=[1 2 3 1 2 4]
%f es fila
%c es columna
[f,c]=size(A);
norm=0;
for i=1:c
5 C.Jácome ,E.Tayupanta
Métodos Numéricos
norm=norm+A(1,i)^2;
end
x=sqrt(norm);
end
Ejecución:
>> normavect
A =
1 2 3 1 2 4
ans =
5.9161
5. Ejercicio 5
Construya un código para determinar la traza de una matriz.
Código:
%Ejercicio 5
function tr=trazavect( A )
A=[1 2 3 4 8;1 2 3 9 4;5 4 4 5 9;3 1 9 8 7;5 8 9 7 8]
[f,c]=size(A);
if f~=c
fprintf(’No se puede realizar el cálculo de la Traza\n’)
return
end
tr=0;
for i=1:f
tr=tr+A(i,i);
end
end
Ejecución:
>> trazavect
6 C.Jácome ,E.Tayupanta
Métodos Numéricos
A =
1 2 3 4 8
1 2 3 9 4
5 4 4 5 9
3 1 9 8 7
5 8 9 7 8
ans =
23
6. Ejercicio 6
Construya un código para determinar la inversa de una matriz A, siendo A ∈ Rnxn
una matriz no singular, la matriz inversa puede calcularse resolviendo el sistema matricial
AX = In.
Código:
Matriz Inversa:
%Ejercicio 6
function s=matrinv( A )
A=[2 1;4 3]
%Respuesta x= 1.5000 -0.5000
% -2.0000 1.0000
[f,c]=size(A);
7 C.Jácome ,E.Tayupanta
Métodos Numéricos
if f~=c
error(’No se puede calcular su inversa’)
return
end
x=zeros(f*c);
p=1;
for l=1:f
for i=1:f
k=1;
for j=1*l:f:f*c
x(p,j)=A(i,k);
k=k+1;
end
p=p+1;
end
p=l*f+1;
end
B=x;
for a=1:f+1:f*c
b(a,1)=1;
end
x=gauss(B,b);
d=1;
for o=1:f
for z=1:f
s(o,z)=x(1,d);
d=d+1;
end
end
end
Gauss:
%Programa para resolver un sistema lineal de ecuaciones
%utilizando el método de Gauss obteniendo una matriz triangular superior
function x=gauss(A,b)
[n,n]=size(A);
Ab=[A b];
8 C.Jácome ,E.Tayupanta
Métodos Numéricos
for k=1:n-1
[p,q]=max(abs(Ab(k:n,k)));
if p==0
error(’La matriz es singular’)
return
end
m = k + q -1;%Real ubicación del elemento máximo
Ab=cambiofilas(Ab,k,m);
for j=k+1:n
Ab=combinacionfilas(Ab,k,j, - Ab(j,k)/Ab(k,k));
end
end
x=matriztriansup(Ab(:,1:n),Ab(:,n+1));
Cambio Filas:
%Programa que nos permite intercambiar filas y columnas de una matriz
function B = cambiofilas(A,i,j)
B=A;
B(i,:)=A(j,:);
B(j,:)=A(i,:);
end
Cambinación de Filas:
%Programa que permite sumar dos filas, una de ellas multiplicada por c
function B= combinacionfilas(A,i,j,c)
[m,n]=size(A);
if i<1|i>n|j<1|j>n
error(’Indices no válidos’);
return
end
if i==j
error(’Matriz Múltiplo’);
return
end
B=A;
B(j,:)=A(j,:)+c*A(i,:);
9 C.Jácome ,E.Tayupanta
Métodos Numéricos
end
[n,n]=size(A);
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
x(i)=(b(i)-A(i,i+1:n)*x(i+1:n)’)/A(i,i);
end
end
Ejecución:
>> matrinv
A =
2 1
4 3
ans =
1.5000 -0.5000
-2.0000 1.0000
10 C.Jácome ,E.Tayupanta