Vous êtes sur la page 1sur 24

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,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 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,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 -3.5330 -1.7777 -0.2412

0.0890 0.0760 0.0560 0.0340 0.0970 0.0340


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.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,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 -10.3490 35.6065

123.0000 46.0000 89.0000 32.0000 5.0000 9.0000


0

0 8.7551

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

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.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 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

X
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 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

- 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.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 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

X
1008
4708
-5.993300e+002
1.511876e+003
2.055395e+002
2.557511e+003
-3.796607e+002
1.948080e+003
-2.010291e+001
2.353384e+003
-2.558124e+002
2.097267e+003
-1.062063e+002
2.263484e+003
-2.028779e+002
2.157494e+003
-1.410426e+002
2.225793e+003
-1.808161e+002
2.182034e+003
-1.553092e+002
2.210155e+003
-1.716927e+002
2.192112e+003
-1.611782e+002
2.203699e+003
-1.679292e+002
2.196262e+003
-1.635956e+002
2.201036e+003
-1.663778e+002
2.197971e+003
-1.645918e+002
2.199939e+003
-1.657383e+002
2.198676e+003
-1.650023e+002
2.199487e+003
-1.654748e+002
2.198966e+003

3425
3.138444e+003
-1.915710e+002
4.307750e+003
1.040352e+003
3.607310e+003
1.448455e+002
4.078305e+003
7.016640e+002
3.785340e+003
3.402090e+002
3.976918e+003
5.705731e+002
3.855131e+003
4.219634e+002
3.933713e+003
5.170902e+002
3.883399e+003
4.559270e+002
3.915744e+003
4.951599e+002
3.894996e+003
4.699631e+002
3.908321e+003
4.861349e+002
3.899768e+003
4.757520e+002
3.905259e+003
4.824170e+002
3.901735e+003
4.781382e+002
3.903998e+003
4.808850e+002
3.902545e+003
4.791216e+002
3.903477e+003
4.802536e+002
3.902879e+003
4.795269e+002

701
2374
1.375804e+003

2650
-7.892960e+002

2.638324e+003

4.207412e+002

1.780475e+003

-2.505329e+002

2.303187e+003

2.063335e+002

1.957048e+003

-8.240161e+001

2.175764e+003

1.039214e+002

2.034240e+003

-1.534937e+001

2.124725e+003

6.136314e+001

2.066511e+003

1.217256e+001

2.103839e+003

4.377098e+001

2.079860e+003

2.349257e+001

2.095248e+003

3.651283e+001

2.085368e+003

2.815504e+001

2.091710e+003

3.352071e+001

2.087639e+003

3.007623e+001

2.090252e+003

3.228749e+001

2.088574e+003

3.086795e+001

2.089652e+003

3.177925e+001

2.088960e+003

3.119423e+001

21

-1.651715e+002
2.199300e+003
22
-1.653662e+002
2.199086e+003
23
-1.652412e+002
2.199224e+003
24
-1.653214e+002
2.199135e+003
25
-1.652699e+002
2.199192e+003
26
-1.653030e+002
2.199156e+003
27
-1.652818e+002
2.199179e+003
28
-1.652954e+002
2.199164e+003
29
-1.652866e+002
2.199174e+003
30
-1.652923e+002
2.199167e+003
31
-1.652887e+002
2.199171e+003
32
-1.652910e+002
2.199169e+003
33
-1.652895e+002
2.199170e+003
34
-1.652904e+002
2.199169e+003
La respuesta final es
1.0e+003 *

3.903263e+003
4.799934e+002
3.903016e+003
4.796939e+002
3.903175e+003
4.798862e+002
3.903073e+003
4.797628e+002
3.903138e+003
4.798420e+002
3.903096e+003
4.797912e+002
3.903123e+003
4.798238e+002
3.903106e+003
4.798028e+002
3.903117e+003
4.798163e+002
3.903110e+003
4.798077e+002
3.903115e+003
4.798132e+002
3.903112e+003
4.798097e+002
3.903114e+003
4.798119e+002
3.903112e+003
4.798105e+002

-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

2.089404e+003

3.156979e+001

2.089119e+003

3.132869e+001

2.089302e+003

3.148347e+001

2.089184e+003

3.138411e+001

2.089260e+003

3.144789e+001

2.089211e+003

3.140695e+001

2.089243e+003

3.143323e+001

2.089223e+003

3.141636e+001

2.089235e+003

3.142719e+001

2.089227e+003

3.142024e+001

2.089232e+003

3.142470e+001

2.089229e+003

3.142183e+001

2.089231e+003

3.142367e+001

2.089230e+003

3.142249e+001

- 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.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 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
4.175442e+000

3.874490e+000
4.974002e+000

4.193548e+000

6.208534e+000

4.986266e-001
1.731324e+000
5.158387e+000
6.135386e+000
3
1.012005e+000
2.035653e+000
5.011185e+000
6.022336e+000
4
1.005947e+000
2.044326e+000
4.998307e+000
5.984247e+000
5
9.930604e-001
2.003494e+000
5.001830e+000
5.997535e+000
La respuesta final es:
0.9931 2.0035 3.0035 4.0051 5.0018 5.9975
COMPROBANDO:

2.717142e+000

4.486530e+000

2.850798e+000

3.939136e+000

2.997660e+000

3.989941e+000

3.003494e+000

4.005131e+000

>> 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.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

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
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 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
-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 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):

P(x):

0.2517 -0.0342

0.0035

>> 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

Vous aimerez peut-être aussi