Descarga la aplicación para disfrutar aún más
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
Compartir