Logo Studenta

algoritmos para matlab em espanhol

¡Este material tiene más páginas!

Vista previa del material en texto

1.- Escriba en Matlab que implementen los siguientes algoritmos y 
póngalos a prueba con matrices apropiadas 6x6 
 
a) El de sustitución progresiva y sustitución regresiva para sistemas triangulares 
 
- Sustitución regresiva 
 
%resuelve un sistema de ecuaciones a traves de la sustitución regresiva 
A=input('ingrese la matriz triangular superior de coeficientes A='); 
b=input('ingrese el vector de terminos independientes b='); 
n=input('ingrese el orden de la matriz n='); 
x(n)=b(n)/A(n,n); 
fori=n-1:-1:1 
sum=0; 
for j=i+1:n 
sum=sum+A(i,j)*x(j); 
end 
x(i)=(b(i)-sum)/A(i,i); 
end 
disp('Las soluciones son:'); 
disp(x); 
 
>>sustitucionregresiva 
ingrese la matriz triangular superior de coeficientes 
A=[34,12,3,87,4,6;0,2,6,3,8,9;0,0,36,42,7,13;0,0,0,8,4,12;0,0,0,0,5,29;0,0,0,0,0,10] 
ingrese el vector de terminos independientes b=[471,128,389,124,199,60] 
ingrese el orden de la matriz n=6 
Las soluciones son: 
 1 2 3 4 5 6 
 
COMPROBANDO ESTA SOLUCIÓN: 
>> A\(b') 
 
ans = 
 
 1 
 2 
 3 
 4 
 5 
 6 
 
 
- Sustitución progresiva 
 
%resuelve un sistema de ecuaciones a traves de la sustitucion progresiva 
A=input('ingrese la matriz triangular inferior de coeficientes A='); 
b=input('ingrese el vector de terminos independientes b='); 
n=input('ingrese el orden de la matriz n='); 
x(1)=b(1)/A(1,1); 
fori=2:n 
sum=0; 
for j=1:(i-1) 
sum=sum+A(i,j)*x(j); 
end 
x(i)=(b(i)-sum)/A(i,i); 
end 
 
disp('Los resultados son:'); 
disp(x); 
 
 
>>sustitucionprogresiva 
ingrese la matriz triangular inferior de coeficientes 
A=[4,0,0,0,0,0;51,23,0,0,0,0;34,12,15,0,0,0;2,6,4,23,0,0;56,23,41,16,19,0;65,34,27,98,12,11] 
ingrese el vector de terminos independientes b=[8,194,206,236,768,1464] 
ingrese el orden de la matriz n=6 
Los resultados son: 
 2 4 6 8 10 12 
COMPROBANDO: 
>> A\(b') 
 
ans = 
 
 2 
 4 
 6 
 8 
 10 
 12 
 
 
b) El de eliminación de Gauss simple y el de eliminación de Gauss con filas 
permutadas. 
 
-Gauss Simple 
 
%metodo de gauss simple con respuestas 
n=input('ingrese el orden de la matriz n='); 
A=input('ingrese la matriz de coeficientes A='); 
b=input('ingrese el vector de terminos independientes b='); 
for k=1:n 
fori=k+1:n 
 z=A(i,k)/A(k,k); 
A(i,k)=0; 
for j=k+1:n 
A(i,j)=A(i,j)-z*A(k,j); 
end 
b(i)=b(i)-z*b(k); 
end 
end 
disp('Por Gauss la matriz queda expresada asi:'); 
disp(A); 
 
x(n)=b(n)/A(n,n); 
for p=n-1:-1:1 
sum=0; 
for t=p+1:n 
sum=sum+A(p,t)*x(t); 
end 
x(p)=(b(p)-sum)/A(p,p); 
end 
 
disp('Las soluciones al sistema ingresado son:'); 
disp(x); 
 
>>gaussimple 
ingrese el orden de la matriz n=6 
ingrese la matriz de coeficientes 
A=[12,23,34,4,5,7;89,76,56,34,97,34;123,46,89,32,5,9;3,9,5,7,14,15;3,8,5,90,54,18;23,67,4
8,1,76,2] 
ingrese el vector de terminos independientes b=[1008,4708,3425,701,2374,2650] 
Por Gauss la matriz queda expresada asi: 
 12.0000 23.0000 34.0000 4.0000 5.0000 7.0000 
 0 -94.5833 -196.1667 4.3333 59.9167 -17.9167 
 0 0 134.0432 -17.6934 -166.4529 -26.8062 
 0 0 0 4.7972 2.0923 10.5864 
 0 0 0 0 5.6424 -180.0640 
 0 0 0 0 0 218.5816 
Las soluciones al sistema ingresado son: 
 10.0000 11.0000 12.0000 13.0000 14.0000 15.0000 
 
COMPROBANDO: 
 
>> A\b' 
ans = 
 
 10.0000 
 11.0000 
 12.0000 
 13.0000 
 14.0000 
 15.0000 
 
- El de eliminación de Gauss con filas permutadas 
 
%resuelve el sistema de ecuaciones a partir del metodo de gauss con permutacion 
n=input('ingrese el orden de la matriz n='); 
A=input('ingrese la matriz de coeficientes A='); 
b=input('ingrese el vector de terminos independientes b='); 
P=input('ingrese el orden de permutacion P='); 
for k=1:n 
fori=k+1:n 
 z=A(P(i),k)/A(P(k),k); 
A(P(i),k)=0; 
for j=k+1:n 
 A(P(i),j)=A(P(i),j)-z*A(P(k),j); 
end 
b(P(i))=b(P(i))-z*b(P(k)); 
end 
end 
disp('Por Gauss la matriz queda expresada asi:A='); 
disp(A); 
disp('La matriz de coeficientes queda expresada asi: b=') 
disp(b); 
x(P(n))=b(P(n))/A(P(n),n); 
for p=n-1:-1:1 
sum=0; 
for t=p+1:n 
sum=sum+A(P(p),t)*x(P(t)); 
end 
 x(P(p))=(b(P(p))-sum)/A(P(p),p); 
end 
 
disp('Las soluciones al sistema ingresado son:'); 
disp(x); 
 
>>permutacion 
ingrese el orden de la matriz n=6 
ingrese la matriz de coeficientes 
A=[12,23,34,4,5,7;89,76,56,34,97,34;123,46,89,32,5,9;3,9,5,7,14,15;3,8,5,90,54,18;23,67,48,1,76,2
] 
ingrese el vector de terminos independientes b=[1008,4708,3425,701,2374,2650] 
ingrese el orden de permutacion P=[2,4,5,1,3,6] 
Por Gauss la matriz queda expresada asi:A= 
 1.0e+003 * 
 0 0 0 -3.5330 -1.7777 -0.2412 
 0.0890 0.0760 0.0560 0.0340 0.0970 0.0340 
 0 0 0 0 -0.0042 0.1343 
 0 0.0064 0.0031 0.0059 0.0107 0.0139 
 0 0 0.0005 0.0839 0.0417 0.0052 
 0 0 0 0 0 0.2186 
 
La matriz de coeficientes queda expresada asi: b= 
 1.0e+004 * 
 
 -7.4435 0.4708 0.1955 0.0542 0.1757 0.3279 
 
Las soluciones al sistema ingresado son: 
 13.0000 10.0000 14.0000 11.0000 12.0000 15.0000 
LA RESPUESTA YA FUE COMPROBADA Y ES CORRECTA 
 
 
 
 
 
c) El de eliminación de Gauss con pivoteo de filas escaladas 
%resuelve un sistema de ecuaciones con filas escaladas 
A=input('ingrese la matriz de coeficientes A='); 
b=input('ingrese el vector de terminos independientes b='); 
n=length(A); 
P=[1:n]; 
fori=1:n 
S(i)=max(abs(A(i,:))); 
 
end 
disp('LOS MAXIMOS VALORES DE CADA FILA SON:'); 
disp(S); 
for r=1:n-1 
for u=r:n 
T(u)=A(u,r)/S(u); 
end 
%reordena el vector permutación de manera adecuada 
a=max(T); 
for k=r:n 
if T(k)==a 
 d=k; 
end 
end 
%permuta el vector permutación 
 q=P(r); 
 P(r)=P(d); 
P(d)=q; 
 
%matriz de gauss 
fori=r+1:n 
 z=A(P(i),r)/A(P(r),r); 
A(P(i),r)=0; 
for j=r+1:n 
A(P(i),j)=A(P(i),j)-z*A(P(r),j); 
end 
b(P(i))=b(P(i))-z*b(P(r)); 
end 
 T(r)=0; 
end 
disp('LA MATRIZ QUEDA EXPRESADA ASI:'); 
disp(A); 
disp('LA MATRIZ TRANSPUESTA DE COEFICIENTES QUEDA DE LA FORMA:') 
disp(b); 
disp('EL VECTOR PERMUTACION ES DE LA FORMA'); 
disp(P); 
%hallando las soluciones 
x(P(n))=b(P(n))/A(P(n),n); 
for p=n-1:-1:1 
sum=0; 
for t=p+1:n 
sum=sum+A(P(p),t)*x(P(t)); 
end 
 x(P(p))=(b(P(p))-sum)/A(P(p),p); 
end 
 
disp('Las soluciones(en el orden del vector permutación) al sistema ingresado son:'); 
disp(x); 
 
 
>>filasescaladas 
ingrese la matriz de coeficientes 
A=[12,23,34,4,5,7;89,76,56,34,97,34;123,46,89,32,5,9;3,9,5,7,14,15;3,8,5,90,54,18;23,67,48,1,76,2
] 
ingrese el vector de terminos independientes b=[1008,4708,3425,701,2374,2650] 
LOS MAXIMOS VALORES DE CADA FILA SON: 
 34 97 123 15 90 76 
 
LA MATRIZ QUEDA EXPRESADA ASI: 
 0 0 15.3767 2.4579 -19.2833 6.0214 
 0 0 0 0 -10.3490 35.6065 
 123.0000 46.0000 89.0000 32.0000 5.0000 9.0000 
 0 0 0 0 0 8.7551 
 0 0 0 89.9446 43.9535 18.0815 
 0 58.3984 31.3577 -4.9837 75.0650 0.3171 
 
LA MATRIZ TRANSPUESTA DE COEFICIENTES QUEDA DE LA FORMA: 
 1.0e+003 * 
 
 0.0368 0.3892 3.4250 0.1313 2.0559 2.0096 
 
EL VECTOR PERMUTACION ES DE LA FORMA 
 3 6 1 5 24 
Las soluciones(en el orden del vector permutación) al sistema ingresado son: 
 12.0000 14.0000 10.0000 15.0000 13.0000 11.0000 
COMPROBANDO: UNA VEZ MAS SE TRABAJO CON EL MISMO SISTEMA POR LO QUE LAS 
RESPUESTAS UAN VEZ MAS SON CORRECTAS. 
d) Los métodos iterativos de Richardson, Jacobi y Gauss-Seidel. Incluya más de un 
criterio para detener el algoritmo. 
 
- Método de Richardson 
 
%resuelve un sitema de ecuaciones mediante el metodo iterativo de 
Richardson 
A=input('ingrese la matriz de coeficiente A:'); 
b=input('ingrese la matriz transpuesta de términos independientes b='); 
x=input('ingrese un vector de aproximacion x='); 
m=input('ingrese el numero de iteraciones m='); 
E=input('ingrese la precision buscada E='); 
n=length(A); 
' k X' 
X=x; 
for k=1:m 
 H=A*x'; 
if abs(H-b')<E 
break 
end 
fori=1:n 
sum=0; 
for j=1:n 
sum=sum+A(i,j)*x(j); 
end 
r(i)=b(i)-sum; 
end 
fori=1:n 
x(i)=x(i)+r(i); 
end 
if abs(X-x)<E 
break 
end 
 X=x; 
fprintf('%d\t%d\n',k,x) 
end 
disp(x); 
 
 
>>richardson 
ingrese la matriz de coeficiente 
A:[1,0.2,0.07,0.08,0.1,0.05;0.087,1,0.3,0.05,0.065,0.1;0.032,0.31,1,0.24,0.03,0.12;0.098,0.034,0.03
2,1,0.16,0.28;0.34,0.013,0.076,0.15,1,0.035;0.01,0.38,0.23,0.045,0.094,1] 
ingrese la matriz transpuesta de términos independientes b=[2.73,4.112,5.482,6.742,6.404,8.11] 
ingrese un vector de aproximacion x=[0,0,0,0,0,0] 
ingrese el numero de iteracciones m=100 
ingrese la precision buscada E=0.0001 
 
ans = 
k X 
1 2.730000e+000 4.112000e+000 5.482000e+000 6.742000e+000 6.404000e+000 
8.110000e+000 
2 -6.140000e-002 6.655300e-001 1.336520e+000 2.863788e+000 3.710562e+000 
4.353914e+000 
3 1.685483e+000 2.896618e+000 3.956555e+000 4.869835e+000 5.732693e+000 
7.072650e+000 
4 5.572289e-001 1.455015e+000 2.340654e+000 3.454155e+000 4.514564e+000 
5.324407e+000 
5 1.281142e+000 2.362730e+000 3.409751e+000 4.349856e+000 5.313260e+000 
6.433366e+000 
6 8.177887e-001 1.771424e+000 2.733190e+000 3.775539e+000 4.800909e+000 
5.719919e+000 
7 1.116262e+000 2.148067e+000 3.170142e+000 4.144444e+000 5.128673e+000 
6.178863e+000 
8 9.251106e-001 1.905370e+000 2.890389e+000 3.907458e+000 4.917689e+000 
5.884844e+000 
9 1.047991e+000 2.060892e+000 3.070230e+000 4.059478e+000 5.052935e+000 
6.073820e+000 
10 9.691628e-0011.960959e+0002.954867e+0003.961840e+0004.966049e+000 
5.952576e+000 
11 1.019787e+0002.025080e+0003.028957e+0004.024505e+0005.021806e+000 
6.030433e+000 
12 9.872943e-001 1.983905e+000 2.981405e+0003.984271e+0004.986005e+000 
5.980459e+000 
13 1.008155e+0002.010334e+0003.011936e+0004.010098e+0005.008986e+000 
6.012543e+000 
14 9.947641e-0011.993367e+0002.992337e+0003.993518e+0004.994232e+000 
5.991947e+000 
15 1.003361e+0002.004259e+0003.004919e+000 4.004162e+000 5.003703e+000 
6.005169e+000 
16 9.978422e-001 1.997266e+000 2.996842e+0003.997328e+0004.997623e+000 
5.996681e+000 
17 1.001385e+0002.001755e+0003.002027e+0004.001715e+0005.001526e+000 
6.002130e+000 
18 9.991107e-0011.998873e+0002.998699e+000 3.998899e+000 4.999020e+000 
5.998632e+000 
19 1.000571e+000 2.000723e+000 3.000835e+000 4.000707e+000 5.000629e+000 
6.000878e+000 
20 9.996335e-001 1.999536e+000 2.999464e+000 3.999546e+000 4.999596e+000 
5.999436e+000 
21 1.000235e+000 2.000298e+000 3.000344e+000 4.000291e+000 5.000259e+000 
6.000362e+000 
22 9.998490e-0011.999809e+0002.999779e+000 3.999813e+000 4.999834e+000 
5.999768e+000 
23 1.000097e+000 2.000123e+000 3.000142e+000 4.000120e+000 5.000107e+000 
6.000149e+000 
24 9.999378e-001 1.999921e+000 2.999909e+000 3.999923e+000 4.999931e+000 
5.999904e+000 
25 1.000040e+000 2.000051e+000 3.000058e+0004.000049e+0005.000044e+000 
6.000061e+000 
26 9.999743e-001 1.999967e+000 2.999962e+000 3.999968e+000 4.999972e+000 
5.999961e+000 
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 
COMPROBANDO: 
b = 
 2.7300 4.1120 5.4820 6.7420 6.4040 8.1100 
>> A\b' 
ans = 
 1.0000 
 2.0000 
 3.0000 
 4.0000 
 5.0000 
 6.0000 
 
 
 
 
 
- Método de Jacobi 
%resuelve un sistema de ecuaciones mediante el metodo de jacobi 
A=input('ingrese la matriz de coeficiente A:'); 
b=input('ingrese la matriz transpuesta de términos independientes b='); 
x=input('ingrese un vector de aproximacion x='); 
m=input('ingrese el numero de iteracciones m='); 
E=input('ingrese la precision buscada E'); 
n=length(A); 
X=x; 
' k X' 
for k=1:m 
 H=A*x'; 
if abs(H-b')<E 
break 
end 
fori=1:n 
sum=0; 
for j=1:n 
ifi~=j 
sum=sum+A(i,j)*x(j); 
end 
end 
U(i)=(b(i)-sum)/A(i,i); 
end 
fori=1:n 
x(i)=U(i); 
end 
if abs(X-x)<E 
break 
end 
 X=x; 
fprintf('%d\t%d\n',k,x) 
end 
disp('La respuesta final es'); 
disp(x); 
 
 
>>jacobi 
 
ingrese la matriz de coeficiente 
A:[1,0.2,0.07,0.08,0.1,0.05;0.087,1,0.3,0.05,0.065,0.1;0.032,0.31,1,0.24,0.03,0.12;0.098,0.034,0.03
2,1,0.16,0.28;0.34,0.013,0.076,0.15,1,0.035;0.01,0.38,0.23,0.045,0.094,1] 
ingrese la matriz transpuesta de términos independientes b=[1008,4708,3425,701,2374,2650] 
ingrese un vector de aproximacion x=[0,0,0,0,0,0] 
ingrese el numero de iteracciones m=50 
ingrese la precision buscada E0.001 
 
 
ans = 
 
k X 
 
1 1008 4708 3425 701 2374 2650 
2 -5.993300e+002 3.138444e+003 1.375804e+003 -7.892960e+002
 1.511876e+003 -1.915710e+002 
3 2.055395e+002 4.307750e+003 2.638324e+003 4.207412e+002
 2.557511e+003 1.040352e+003 
4 -3.796607e+002 3.607310e+003 1.780475e+003 -2.505329e+002
 1.948080e+003 1.448455e+002 
5 -2.010291e+001 4.078305e+003 2.303187e+003 2.063335e+002
 2.353384e+003 7.016640e+002 
6 -2.558124e+002 3.785340e+003 1.957048e+003 -8.240161e+001
 2.097267e+003 3.402090e+002 
7 -1.062063e+002 3.976918e+003 2.175764e+003 1.039214e+002
 2.263484e+003 5.705731e+002 
8 -2.028779e+002 3.855131e+003 2.034240e+003 -1.534937e+001
 2.157494e+003 4.219634e+002 
9 -1.410426e+002 3.933713e+003 2.124725e+003 6.136314e+001
 2.225793e+003 5.170902e+002 
10 -1.808161e+002 3.883399e+003 2.066511e+003 1.217256e+001
 2.182034e+003 4.559270e+002 
11 -1.553092e+002 3.915744e+003 2.103839e+003 4.377098e+001
 2.210155e+003 4.951599e+002 
12 -1.716927e+002 3.894996e+003 2.079860e+003 2.349257e+001
 2.192112e+003 4.699631e+002 
13 -1.611782e+002 3.908321e+003 2.095248e+003 3.651283e+001
 2.203699e+003 4.861349e+002 
14 -1.679292e+002 3.899768e+003 2.085368e+003 2.815504e+001
 2.196262e+003 4.757520e+002 
15 -1.635956e+002 3.905259e+003 2.091710e+003 3.352071e+001
 2.201036e+003 4.824170e+002 
16 -1.663778e+002 3.901735e+003 2.087639e+003 3.007623e+001
 2.197971e+003 4.781382e+002 
17 -1.645918e+002 3.903998e+003 2.090252e+003 3.228749e+001
 2.199939e+003 4.808850e+002 
18 -1.657383e+002 3.902545e+003 2.088574e+003 3.086795e+001
 2.198676e+003 4.791216e+002 
19 -1.650023e+002 3.903477e+003 2.089652e+003 3.177925e+001
 2.199487e+003 4.802536e+002 
20 -1.654748e+002 3.902879e+003 2.088960e+003 3.119423e+001
 2.198966e+003 4.795269e+002 
21 -1.651715e+002 3.903263e+003 2.089404e+003 3.156979e+001
 2.199300e+003 4.799934e+002 
22 -1.653662e+002 3.903016e+003 2.089119e+003 3.132869e+001
 2.199086e+003 4.796939e+002 
23 -1.652412e+002 3.903175e+003 2.089302e+003 3.148347e+001
 2.199224e+003 4.798862e+002 
24 -1.653214e+002 3.903073e+003 2.089184e+003 3.138411e+0012.199135e+003 4.797628e+002 
25 -1.652699e+002 3.903138e+003 2.089260e+003 3.144789e+001
 2.199192e+003 4.798420e+002 
26 -1.653030e+002 3.903096e+003 2.089211e+003 3.140695e+001
 2.199156e+003 4.797912e+002 
27 -1.652818e+002 3.903123e+003 2.089243e+003 3.143323e+001
 2.199179e+003 4.798238e+002 
28 -1.652954e+002 3.903106e+003 2.089223e+003 3.141636e+001
 2.199164e+003 4.798028e+002 
29 -1.652866e+002 3.903117e+003 2.089235e+003 3.142719e+001
 2.199174e+003 4.798163e+002 
30 -1.652923e+002 3.903110e+003 2.089227e+003 3.142024e+001
 2.199167e+003 4.798077e+002 
31 -1.652887e+002 3.903115e+003 2.089232e+003 3.142470e+001
 2.199171e+003 4.798132e+002 
32 -1.652910e+002 3.903112e+003 2.089229e+003 3.142183e+001
 2.199169e+003 4.798097e+002 
33 -1.652895e+002 3.903114e+003 2.089231e+003 3.142367e+001
 2.199170e+003 4.798119e+002 
34 -1.652904e+002 3.903112e+003 2.089230e+003 3.142249e+001
 2.199169e+003 4.798105e+002 
La respuesta final es 
 1.0e+003 * 
 
 -0.1653 3.9031 2.0892 0.0314 2.1992 0.4798 
COMPROBANDO: 
>> A\b' 
ans = 
 1.0e+003 * 
 -0.1653 
 3.9031 
 2.0892 
 0.0314 
 2.1992 
 0.4798 
- Método iterativo de Gauss - Seidel 
 
%resuelve un sitema de ecuaciones mediante el metodo iterativo de 
%Gauss-Seidel 
A=input('ingrese la matriz de coeficiente A:'); 
b=input('ingrese la matriz transpuesta de términos independientes b='); 
x=input('ingrese un vector de aproximacion x='); 
m=input('ingrese el numero de iteracciones m='); 
E=input('ingrese la precision buscada E='); 
n=length(A); 
' k X' 
X=x; 
for k=1:m 
 H=A*x'; 
if abs(H-b')<E 
break 
end 
fori=1:n 
sum=0; 
for j=1:n 
ifi~=j 
sum=sum+A(i,j)*x(j); 
end 
end 
x(i)=(b(i)-sum)/A(i,i); 
end 
if abs(X-x)<E 
break 
end 
 X=x; 
fprintf('%d\t%d\n',k,x) 
end 
disp('La respuesta final es:'); 
disp(x); 
 
>>gaussiterativo 
ingrese la matriz de coeficiente 
A:[1,0.2,0.07,0.08,0.1,0.05;0.087,1,0.3,0.05,0.065,0.1;0.032,0.31,1,0.24,0.03,0.12;0.098,0.034,0.03
2,1,0.16,0.28;0.34,0.013,0.076,0.15,1,0.035;0.01,0.38,0.23,0.045,0.094,1] 
ingrese la matriz transpuesta de términos independientes b=[2.73,4.112,5.482,6.742,6.404,8.11] 
ingrese un vector de aproximacion x=[0,0,0,0,0,0] 
ingrese el numero de iteracciones m=50 
ingrese la precision buscada E=0.01 
 
ans = 
 
k X 
 
1 2.730000e+000 3.874490e+000 4.193548e+000 6.208534e+000
 4.175442e+000 4.974002e+000 
2 4.986266e-001 1.731324e+000 2.717142e+000 4.486530e+000
 5.158387e+000 6.135386e+000 
3 1.012005e+000 2.035653e+000 2.850798e+000 3.939136e+000
 5.011185e+000 6.022336e+000 
4 1.005947e+000 2.044326e+000 2.997660e+000 3.989941e+000
 4.998307e+000 5.984247e+000 
5 9.930604e-001 2.003494e+000 3.003494e+000 4.005131e+000
 5.001830e+000 5.997535e+000 
La respuesta final es: 
 0.9931 2.0035 3.0035 4.0051 5.0018 5.9975 
COMPROBANDO: 
>> A\b' 
ans = 
 1.0000 
 2.0000 
 3.0000 
 4.0000 
 5.0000 
 6.0000 
 
NUESTRAS RESPUESTAS SON APROXIMADAS. 
e) El algoritmo del método de la potencia. 
%halla el valor propio de una matriz por el metodo de la potencia 
A=input('ingrese la matriz de coeficiente A:'); 
x=input('ingrese un vector propio al azar x='); 
m=input('ingrese el numero de iteracciones m='); 
E=input('ingrese el grado de exactitud buscado E='); 
C=(y(1,1)/x(1,1))+5; 
for k=1:m 
 y=A*x; 
 X=x(1,1); 
 Y=y(1,1); 
 R=Y/X; 
 x=y; 
fprintf('%d\t%d\n',k,R) 
if abs((C-R))<E 
break 
end 
 C=R; 
 
end 
disp('Uno de los valores propios es:'); 
disp(R); 
 
>>valorpropio 
ingrese la matriz de coeficiente 
A:[1,0.2,0.07,0.08,0.1,0.05;0.087,1,0.3,0.05,0.065,0.1;0.032,0.31,1,0.24,0.03,0.12;0.098,0.034,0.03
2,1,0.16,0.28;0.34,0.013,0.076,0.15,1,0.035;0.01,0.38,0.23,0.045,0.094,1] 
ingrese un vector propio al azar x=[1;1;1;1;1;1] 
ingrese el numero de iteracciones m=50 
ingrese el grado de exactitud buscado E=0.001 
 
1 1.500000e+000 
2 1.546207e+000 
3 1.579544e+000 
4 1.602046e+000 
5 1.616658e+000 
6 1.625959e+000 
7 1.631826e+000 
8 1.635520e+000 
9 1.637851e+000 
10 1.639326e+000 
11 1.640264e+000 
Uno de los valores propios es: 
 1.6403 
COMPROBANDO: 
>> [V,LAMBDA]=eig(A) 
V =….. 
LAMBDA = 
 Columns 1 through 4 
 1.64200 0 0 
 0 1.1012 0 0 
 0 0 0.8730 + 0.1543i 0 
 0 0 0 0.8730 - 0.1543i 
 0 0 0 0 
0 0 0 0 
 
2.- Aplique la aceleración de Aitken a algunos métodos iterativos para 
calcular raíces: 
- Metodo De La Secante Acelerado 
% resuelve ecuaciones por el metodo de la secante con aceleración de 
Aitken 
f = input('funcion f='); 
a = input('punto inicial1 a='); 
b = input('punto inicial2 b='); 
m = input('numero de interaciones m='); 
E = input('precision E='); 
u = f(a) ; v = f(b) ; 
r = zeros(1,m); 
for k =1:m 
if abs(u)<abs(v) 
c=a; 
 a=b; 
 b=c; 
 w=u; 
 u=v; 
v=w; 
end 
 s = (b-a)/(v-u); 
 a = b; 
 u = v; 
 b = b - v*s; 
r(k)= b; 
 v = f(b); 
if k>2 
R(k-2) =(r(k-2)*r(k)-(r(k-1)^2))/(r(k)-2*r(k-1)+r(k-2)); 
if f(R(k-2))<E 
break; 
end 
end 
fprintf('%d\t%f\n',k,b) 
end 
disp('La respuesta es'); 
R 
 
>>secanteacelerado 
funcion f=@(x)x^5-x-1-sin(x) 
punto inicial1 a=3 
punto inicial2 b=2 
numero de interaciones m=80 
precision E=0.001 
1 1.866722 
2 1.595114 
La respuesta es: 
T = 
 1.2553 
Haciendo una compración con la convergencia del método de la secante sin aceleración 
veamos: 
>>secante 
ingrese la funcion f=@(x)x^5-x-1-sin(x) 
ingrese el valor del primer punto aproximado a=4 
ingrese el valor del segundo punto aproximado b=3 
ingrese el número de repeticiones M=25 
ingrese la presicion buscada d=0.00001 
ingrese la presicion buscada 2 E=0.00001 
 k x f(x) 
1 2.694123 137.807349 
2 2.276988 57.169516 
3 1.981253 26.629911 
4 1.723379 11.490332 
5 1.527662 4.793520 
6 1.387570 1.772854 
7 1.305349 0.519619 
8 1.271258 0.093501 
9 1.263778 0.006673 
10 1.263203 0.000096 
11 1.263194 0.000000 
 1.2632 
Como podemos ver, con el método de aceleración de Aitken, el valor buscado salta con 
mayor rapidez. 
- Metodo De Newton Acelerado 
% resuelve ecuaciones por el metodo de Newton con aceleración de Aitken 
f=input('ingrese la funcion='); 
x=input('Ingrese un valor aproximado a la raiz x= '); 
M=input('Ingrese el número de iteracciones M= '); 
d=input('ingrese la derivada de la funcion = '); 
E=input('ingrese la precision buscada E='); 
r = zeros(1,m); 
u = f(a) ; v = f(b) ; 
r = zeros(1,m); 
for k=1:M 
 a=x; 
 x=x-f(x)/d(x); 
r(k)= x; 
if abs(x-a)<E 
break 
end 
if k>2 
T(k-2) =(r(k-2)*r(k)-(r(k-1)^2))/(r(k)-2*r(k-1)+r(k-2)); 
 G=T(k-2); 
if f(T(k-2))<E 
break; 
end 
fprintf('%d\t%f\n',k,G) 
end 
end 
disp('La respuesta es'); 
disp(G); 
>>newtonacelerado 
ingrese la funcion=@(x)x^5-x-1-sin(x) 
Ingrese un valor aproximado a la raiz x= 4 
Ingrese el número de iteracciones M= 20 
ingrese la derivada de la funcion = @(x)5*x^4-1-cos(x) 
ingrese la precision buscada E=0.00001 
1 3.203099 
2 2.570346 
La respuesta es 
 0.2632 
 
Como vemos la convergencia es mucho mayor al método de Newton sin aceleración. 
Veamos.>>newton 
ingrese la funcion=@(x)x^5-x-1-sin(x) 
Ingrese un valor aproximado a la raiz x= 4 
Ingrese el núemero de iteracciones M= 20 
ingrese la derivada de la funcion = @(x)5*x^4-1-cos(x) 
ingrese la precision buscada E=0.000001 
 k x f(x) x-xo 
1 3.203099 333.030799 -0.796901 
2 2.570346 108.080002 -0.632753 
3 2.074754 34.493921 -0.495593 
4 1.700352 10.521316 -0.374401 
5 1.443260 2.827009 -0.257092 
6 1.305808 0.525717 -0.137452 
7 1.266208 0.034628 -0.039600 
8 1.263211 0.000186 -0.002997 
9 1.263194 0.000000 -0.000016 
10 1.263194 -0.000000 -0.000000 
el valor de la raiz es 
 1.2632 
 
La aceleración de Aitken para los métodos iterativos es básicamente realizar algunas 
modificaciones básicas a los algoritmos. 
 
 
 
 
3.- Implemente el algoritmo el algoritmo de diferencias divididas. Aplique 
para calcular el polinomio de interpolación para f(x)=(x^5*sen(x))/(e^x-
tanh(x)) en [-5,5] 
a) usando 5 y después 25 nodos igualmente espaciados. Grafique F(x) y P(x). Comente. 
%calcula un polinomio de interpolacion por el metodo de interpolación por 
%diferencias divididas 
f=input('ingrese la función a interpolar f='); 
n=input('ingrese la cantidad de nodos n='); 
a=input('ingrese el valor del limite inferior a='); 
b=input('ingrese el valor del limite superior b='); 
d=abs((a-b)/(n-1)); 
fori=1:n 
x(i)=a+d*(i-1); 
y(i)=f(x(i)); 
end 
fori=1:n 
C(i,1)=y(i); 
end 
for j=2:n 
for k=1:(n-j+1) 
C(k,j)=(C(k+1,j-1)-C(k,j-1))/(x(k+j-1)-x(k)); 
end 
end 
disp(C); 
disp('Los coeficientes buscados son:'); 
disp(C(1,:)); 
 
>>interpolacion 
ingrese la función a interpolar f=@(x)((x^5)*sin(x))/(exp(x)+tanh(x)) 
ingrese la cantidad de nodos n=5 
ingrese el valor del limite inferior a=-5 
ingrese el valor del limite superior b=5 
 1.0e+003 * 
 3.0172 -1.2327 0.2517 -0.0342 0.0035 
 -0.0646 0.0258 -0.0048 0.0003 0 
 0 0.0018 -0.0023 0 0 
 0.0044 -0.0098 0 0 0 
 -0.0201 0 0 0 0 
 
 
Los coeficientes buscados son: 
 1.0e+003 * 
 3.0172 -1.2327 0.2517 -0.0342 0.0035 
Graficando: F(x): 
 
 
 
 
 
 
 
 
 
P(x): 
 
 
 
>>interpolacion 
ingrese la función a interpolar f=@(x)((x^5)*sin(x))/(exp(x)+tanh(x)) 
ingrese la cantidad de nodos n=25 
ingrese el valor del limite inferior a=-5 
ingrese el valor del limite superior b=5 
Los coeficientes buscados son: 
 1.0e+003 * 
 
Columns 1 through 8 
 
 3.0172 -2.3768 0.1564 0.5192 -0.2789 0.0638 -0.0034 -0.0020 
 
 Columns 9 through 16 
 
 0.0006 -0.0001 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 
 
 Columns 17 through 24 
 
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 
 
Column 25 
 
 -0.0000 
 
(en ese caso se ha producido un gran error por redondeo; pues como vemos muchos de los 
coeficientes dan como valor 0, cuando en realidad solo son próximos a dicho valor) 
b) halle el error de aproximación en algunos puntos x E[-5,5] 
%calcula el error en algunos puntos de una funcion de aproximacion 
f=input('ingrese la funcion real F='); 
p=input('ingrese la funcion de aproximación P='); 
x=input('ingrese el punto donde desea evaluar el error de interpolación 
x='); 
e=abs(p(x)-f(x)); 
disp('El error de aproximacion en el punto x es:'); 
disp(e); 
 
>>error 
ingrese la funcion real F=@(x)((x^5)*sin(x))/(exp(x)+tanh(x)) 
ingrese la funcion de aproximación P=@(x) 3017.2-1232.7*(x+5)+251.7*(x+2.5)*(x+5)-
34.2*(x)*(x+2.5)*(x+5)+3.5*x*(x+2.5)*(x+5)*(x-2.5) 
ingrese el punto donde desea evaluar el error de interpolación x=-5 
El error de aproximacion en el punto x es: 
 0.0423 
 
>>error 
ingrese la funcion real F=@(x)((x^5)*sin(x))/(exp(x)+tanh(x)) 
ingrese la funcion de aproximación P=@(x) 3017.2-1232.7*(x+5)+251.7*(x+2.5)*(x+5)-
34.2*(x)*(x+2.5)*(x+5)+3.5*x*(x+2.5)*(x+5)*(x-2.5) 
ingrese el punto donde desea evaluar el error de interpolación x=0.2 
El error de aproximacion en el punto x es: 
 22.3900 
 
>>error 
ingrese la funcion real F=@(x)((x^5)*sin(x))/(exp(x)+tanh(x)) 
ingrese la funcion de aproximación P=@(x) 3017.2-1232.7*(x+5)+251.7*(x+2.5)*(x+5)-
34.2*(x)*(x+2.5)*(x+5)+3.5*x*(x+2.5)*(x+5)*(x-2.5) 
ingrese el punto donde desea evaluar el error de interpolación x=4.9 
El error de aproximacion en el punto x es: 
 11.9957

Otros materiales