Académique Documents
Professionnel Documents
Culture Documents
El Mtodo NewtonRaphson se utiliz empleando la derivada (al evaluar, es la pendiente de la recta tangente) de un funcin, para calcular su interseccin con el eje de la variable independiente; esto es, la raz. Dicho clculo se bas en la expansin de la serie de Taylor de primer orden
Donde
Que es la forma del mtodo de Newton-Raphson para una sola ecuacin. La forma para mltiples ecuaciones se obtiene en forma idntica. Sin embargo, se debe usar una serie de Taylor de mltiples variables para tomar en cuenta el hecho de que ms de una variable independiente contribuye a la determinacin de la raz. En el caso de dos variables, una serie de Taylor de primer orden se escribe para cada ecuacin no lineal como
De la misma manera como en la versin para una sola ecuacin, la raz aproximada corresponde a los valores de x y y, donde situacin, se reordena la ecuacin (6.19) como: son iguales a cero. En tal
Debido a que se conocen todos los valores con subndice i (corresponde al ultimo valor estimado), las nicas incgnitas son y Entonces, la ecuacin (6.20) es un conjunto de dos ecuaciones lineales con dos incgnitas. En consecuencia, se pueden usar manipulaciones algebraicas (por ejemplo, la regla de Cramer) para resolverlo:
El denominador de cada una de estas ecuaciones se conoce formalmente como el determinante Jacobiano del sistema. La ecuacin (6.21) es la versin para dos ecuaciones del Mtodo de Newton-Raphson. Como en el siguiente ejemplo, se puede emplear en forma iterativa para determinar las races de dos ecuaciones simultaneas. Newton-Raphson para un sistema no lineal.
P0=input('P0= '); x=P0(1); y=P0(2); disp(' ') %clculo de los incrementos jf1=jacobian(f1); jf2=jacobian(f2); disp('Nmero de iteraciones N') %n=5; n=input('n= '); disp(' ') disp('Digite la tolerancia') %tol=0.0001; tol=input('tol= '); disp(' ') disp('Tabla de resultados:') disp('_________________________________________________________________ ') disp('Iteracion x y f1 f2 dx dy Tol') disp('_________________________________________________________________ ') for i=[1:n] x1=x; y1=y;
jf1e=eval(jf1); jf2e=eval(jf2); f1e=eval(f1); f2e=eval(f2); %sistema de ecuaciones para calcular dx y dy [dx dy]=solve(jf1e(1)*dx+jf1e(2)*dy+f1e, jf2e(1)*dx+jf2e(2)*dy+f2e); dx=eval(dx); dy=eval(dy); x=x+dx; y=y+dy; x2=x; y2=y; tole=max(abs([x2-x1 y2-y1])); disp(sprintf(' %d %.5f %.5f %.5f %.4f %.3f %.3f %.3f',i,x,y,f1e,f2e,dx,dy,tole ));
clear dx dy syms dx dy if tole<=tol tole=tol; break end end disp('_________________________________________________________________ ') disp('Resultado') disp(x) disp(y) if tole~=tol disp('Excedido el nmero mximo de iteraciones') end
BISECCIN
Mtodo de la Biseccin
El mtodo de la biseccin o corte binario es un mtodo de bsqueda incremental que divide el intervalo siempre en 2. Si la funcin cambia de signo sobre un intervalo, se evala el valor de la funcin en el punto medio. La posicin de la raz se determina situndola en el punto medio del subintervalo donde exista cambio de signo. El proceso se repite hasta mejorar la aproximacin. Algoritmo Paso 1 Elegir los valores iniciales Xa y Xb, de tal forma de que la funcin cambie de signo: f(Xa)f(Xb) < 0 Paso 2 La primera aproximacin a la raz se determina con la frmula del punto medio de esta forma:
Paso 3 Realizar las siguientes evaluaciones para determinar el intervalo de la raz: a. Si f(Xa)f(Xb) < 0, entonces la solucin o raz est entre Xa y Xpm, y Xb pasa a ser el punto medio (Xpm). b. Si f(Xa)f(Xb) > 0, entonces la solucin o raz est fuera del intervalo entre Xa y el punto medio, y Xa pasa a ser el punto medio (Xpm).
Paso 4 Si f(Xa)f(Xb) = 0 Error = | Xpm Xpm 1 | < Tolerancia Donde Xpm es el punto medio de la iteracin actual y Xpm 1 es el punto medio de la iteracin anterior. Al cumplirse la condicin del Paso 4, la raz o solucin es el ltimo punto medio que se obtuvo. Para el error relativo porcentual se tiene la siguiente frmula:
break end i=i+1; if FA*FP>0 fprintf('%7i %5.4f %5.4f %5.4f %5.4f %5.4f %5.4f %2s',Ni,a,FA,b,p,FP,(b-a)/2,'+') a=p; else fprintf('%7i %5.4f %5.4f %5.4f %5.4f %5.4f %5.4f %2s',Ni,a,FA,b,p,FP,(b-a)/2,'-') b=p; end end if sw==0 disp('') disp('Excedio numero de iteracciones')
End
ELIMINACION GAUSIANA
% Programa que aproxima una raz de la forma f(x)=0, dado el intervalo que a la raiz % % VARIABLES, SIMBOLOS, PRAMETROS % clc clear sw=0; %%Captura de datos cont=0; A=input('Digite la Matriz de orden (N*N) (A) : '); B=input('Digite Matriz de orden B(N,1) en forma de vector : '); if length(A)==length(B) N=length(A); x = 1:N; else fprintf('Las matrices deben tener el mismo tamao en las columnas') break; end factor=0; for k=1:N-1 for i=k+1:N if A(k,k)==0 for j=1:N aux=A(k,j); A(k,j)=A(i,j);
A(i,j)=aux; end aux=B(i); B(i)=B(k); B(k)=aux; else factor=A(i,k)/A(k,k); for j=k:N A(i,j)=A(i,j)-factor*A(k,j); end B(i)=B(i)-factor*B(k); end
end end fprintf('La Matriz resultante A \n'); A fprintf('La Matriz resultante A \n'); B fprintf('\n') x(N)=B(N)/A(N,N); for i=N-1:-1:1 aux=0; for j=i+1:N aux=aux+A(i,j)*x(j); end x(i)=(B(i)-aux)/A(i,i); end %x(i)=(A(i,n+1)-aux)/A(i,i); %end fprintf('La x resultantes son : \n') x' fprintf('\n') End