Está en la página 1de 25

1.

- Escriba en Matlab que implementen los siguientes algoritmos y


pngalos a prueba con matrices apropiadas 6x6
a) El de sustitucin progresiva y sustitucin regresiva para sistemas triangulares
- Sustitucin regresiva
%resuelve un sistema de ecuaciones a traves de la sustitucin 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);
for i=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 SOLUCIN:
>> A\(b')
ans =
1
2
3
4
5
6

- Sustitucin 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);
for i=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,3
4,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 eliminacin de Gauss simple y el de eliminacin 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
for i=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 eliminacin 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
for i=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,5
4,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.0890

0 -3.5330 -1.7777 -0.2412

0.0760

0.0560

0.0064

0.0005

0.0340

0 -0.0042

0.0031

0.0059

0.0839
0

0.0970
0.1343

0.0107

0.0417
0

0.0340

0.0139

0.0052

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 eliminacin 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];
for i=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 permutacin de manera adecuada
a=max(T);
for k=r:n
if T(k)==a
d=k;
end
end
%permuta el vector permutacin
q=P(r);
P(r)=P(d);
P(d)=q;
%matriz de gauss
for i=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 permutacin) 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,5
4,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

0 -10.3490 35.6065

123.0000 46.0000 89.0000 32.0000


0

6.0214

5.0000

0 89.9446 43.9535 18.0815

9.0000

8.7551

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

Las soluciones(en el orden del vector permutacin) 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 mtodos iterativos de Richardson, Jacobi y Gauss-Seidel. Incluya ms de un


criterio para detener el algoritmo.
- Mtodo 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 trminos 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
for i=1:n
sum=0;
for j=1:n
sum=sum+A(i,j)*x(j);
end
r(i)=b(i)-sum;
end
for i=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.1
2;0.098,0.034,0.032,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 trminos 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

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-001 1.960959e+000 2.954867e+000 3.961840e+000
4.966049e+000
5.952576e+000
11
1.019787e+000 2.025080e+000 3.028957e+000 4.024505e+000
5.021806e+000
6.030433e+000
12
9.872943e-001 1.983905e+000 2.981405e+000 3.984271e+000
4.986005e+000
5.980459e+000
13
1.008155e+000 2.010334e+000 3.011936e+000 4.010098e+000
5.008986e+000
6.012543e+000
14
9.947641e-001 1.993367e+000 2.992337e+000 3.993518e+000
4.994232e+000
5.991947e+000
15
1.003361e+000 2.004259e+000 3.004919e+000 4.004162e+000
5.003703e+000
6.005169e+000
16
9.978422e-001 1.997266e+000 2.996842e+000 3.997328e+000
4.997623e+000
5.996681e+000
17
1.001385e+000 2.001755e+000 3.002027e+000 4.001715e+000
5.001526e+000

6.002130e+000
18
9.991107e-001 1.998873e+000 2.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-001 1.999809e+000 2.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+000 4.000049e+000
5.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

COMPROBANDO:

3.0000

4.0000

5.0000

6.0000

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

- Mtodo 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 trminos 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
for i=1:n
sum=0;
for j=1:n
if i~=j
sum=sum+A(i,j)*x(j);
end
end
U(i)=(b(i)-sum)/A(i,i);

end
for i=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.1
2;0.098,0.034,0.032,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 trminos 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

1
1008
4708
3425
701
2374
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

2650

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

-1.410426e+002
6.136314e+001
-1.808161e+002
1.217256e+001
-1.553092e+002
4.377098e+001
-1.716927e+002
2.349257e+001
-1.611782e+002
3.651283e+001
-1.679292e+002
2.815504e+001
-1.635956e+002
3.352071e+001
-1.663778e+002
3.007623e+001
-1.645918e+002
3.228749e+001
-1.657383e+002
3.086795e+001
-1.650023e+002
3.177925e+001
-1.654748e+002
3.119423e+001
-1.651715e+002
3.156979e+001
-1.653662e+002
3.132869e+001
-1.652412e+002
3.148347e+001
-1.653214e+002
3.138411e+001
-1.652699e+002
3.144789e+001
-1.653030e+002
3.140695e+001
-1.652818e+002
3.143323e+001
-1.652954e+002
3.141636e+001
-1.652866e+002
3.142719e+001
-1.652923e+002
3.142024e+001

3.933713e+003
2.225793e+003
3.883399e+003
2.182034e+003
3.915744e+003
2.210155e+003
3.894996e+003
2.192112e+003
3.908321e+003
2.203699e+003
3.899768e+003
2.196262e+003
3.905259e+003
2.201036e+003
3.901735e+003
2.197971e+003
3.903998e+003
2.199939e+003
3.902545e+003
2.198676e+003
3.903477e+003
2.199487e+003
3.902879e+003
2.198966e+003
3.903263e+003
2.199300e+003
3.903016e+003
2.199086e+003
3.903175e+003
2.199224e+003
3.903073e+003
2.199135e+003
3.903138e+003
2.199192e+003
3.903096e+003
2.199156e+003
3.903123e+003
2.199179e+003
3.903106e+003
2.199164e+003
3.903117e+003
2.199174e+003
3.903110e+003
2.199167e+003

2.124725e+003
5.170902e+002
2.066511e+003
4.559270e+002
2.103839e+003
4.951599e+002
2.079860e+003
4.699631e+002
2.095248e+003
4.861349e+002
2.085368e+003
4.757520e+002
2.091710e+003
4.824170e+002
2.087639e+003
4.781382e+002
2.090252e+003
4.808850e+002
2.088574e+003
4.791216e+002
2.089652e+003
4.802536e+002
2.088960e+003
4.795269e+002
2.089404e+003
4.799934e+002
2.089119e+003
4.796939e+002
2.089302e+003
4.798862e+002
2.089184e+003
4.797628e+002
2.089260e+003
4.798420e+002
2.089211e+003
4.797912e+002
2.089243e+003
4.798238e+002
2.089223e+003
4.798028e+002
2.089235e+003
4.798163e+002
2.089227e+003
4.798077e+002

31

-1.652887e+002
3.142470e+001
32
-1.652910e+002
3.142183e+001
33
-1.652895e+002
3.142367e+001
34
-1.652904e+002
3.142249e+001
La respuesta final es
1.0e+003 *
-0.1653 3.9031
COMPROBANDO:
>> A\b'
ans =
1.0e+003 *
-0.1653
3.9031
2.0892
0.0314
2.1992
0.4798

3.903115e+003
2.199171e+003
3.903112e+003
2.199169e+003
3.903114e+003
2.199170e+003
3.903112e+003
2.199169e+003

2.0892

0.0314

2.089232e+003
4.798132e+002
2.089229e+003
4.798097e+002
2.089231e+003
4.798119e+002
2.089230e+003
4.798105e+002

2.1992

0.4798

- Mtodo 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 trminos 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
for i=1:n
sum=0;
for j=1:n
if i~=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.1
2;0.098,0.034,0.032,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 trminos 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

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 mtodo 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.1
2;0.098,0.034,0.032,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

1.546207e+000

1.579544e+000

1.602046e+000

1.616658e+000

1.625959e+000

1.631826e+000

1.635520e+000

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.6420
0
0
1.1012
0
0
0
0
0
0
0
0

0
0
0.8730 + 0.1543i
0
0
0.8730 - 0.1543i
0
0
0
0

2.- Aplique la aceleracin de Aitken a algunos mtodos iterativos para


calcular races:
- Metodo De La Secante Acelerado
% resuelve ecuaciones por el metodo de la secante con aceleracin 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 compracin con la convergencia del mtodo de la secante sin aceleracin
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 nmero 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 mtodo de aceleracin de Aitken, el valor buscado salta con
mayor rapidez.

- Metodo De Newton Acelerado


% resuelve ecuaciones por el metodo de Newton con aceleracin de Aitken
f=input('ingrese la funcion=');
x=input('Ingrese un valor aproximado a la raiz x= ');
M=input('Ingrese el nmero 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 nmero 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 mtodo de Newton sin aceleracin.
Veamos.
>> newton
ingrese la funcion=@(x)x^5-x-1-sin(x)
Ingrese un valor aproximado a la raiz x= 4
Ingrese el nemero 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
2
2.570346
108.080002
3
2.074754
34.493921
4
1.700352
10.521316
5
1.443260
2.827009
6
1.305808
0.525717
7
1.266208
0.034628
8
1.263211
0.000186
9
1.263194
0.000000
10
1.263194
-0.000000
el valor de la raiz es
1.2632

-0.796901
-0.632753
-0.495593
-0.374401
-0.257092
-0.137452
-0.039600
-0.002997
-0.000016
-0.000000

La aceleracin de Aitken para los mtodos iterativos es bsicamente realizar algunas


modificaciones bsicas a los algoritmos.

3.- Implemente el algoritmo el algoritmo de diferencias divididas. Aplique


para calcular el polinomio de interpolacin para f(x)=(x^5*sen(x))/(e^xtanh(x)) en [-5,5]
a) usando 5 y despus 25 nodos igualmente espaciados. Grafique F(x) y P(x). Comente.
%calcula un polinomio de interpolacion por el metodo de interpolacin por
%diferencias divididas
f=input('ingrese la funcin 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));
for i=1:n
x(i)=a+d*(i-1);
y(i)=f(x(i));
end
for i=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 funcin 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.0646
0

0.2517 -0.0342

0.0258 -0.0048

0.0003

0.0018 -0.0023

0.0044 -0.0098
-0.0201

0
0

0.0035

0
0

Los coeficientes buscados son:


1.0e+003 *
3.0172 -1.2327
Graficando: F(x):

0.2517 -0.0342

0.0035

P(x):

>> interpolacion
ingrese la funcin 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

0.0000 -0.0000

0.0000 -0.0000

0.0000

0.0000 -0.0000

0.0000 -0.0000

0.0000

Columns 9 through 16
0.0006 -0.0001 -0.0000
Columns 17 through 24
-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 prximos a dicho valor)
b) halle el error de aproximacin 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 aproximacin P=');
x=input('ingrese el punto donde desea evaluar el error de interpolacin
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 aproximacin 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 interpolacin 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 aproximacin 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 interpolacin 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 aproximacin 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 interpolacin x=4.9
El error de aproximacion en el punto x es:
11.9957

También podría gustarte