Você está na página 1de 6

CLASE NEWTON RAPHSON

La solución de ecuaciones no lineales multivariables se consigue mediante


aproximaciones sucesivas en tramos líneales usando el método de Newton
Raphson. Ejemplo resolver la ecuación:

f(x) = x2+senx = 0

Fig. 3. Aproximaciones sucesivas.

dx = F(x)/J(x) x = x - dx
Aplicaciones:
Resolver la ecuación que se muestra:

%Newton1Variable.m
dx=1; % Change in variable is set to a high value
x=input('Enter the initial estimate -> '); % Initial estimate
iter = 0; % Iteration counter
disp('iter F J dx x')% Heading for result+
while abs(dx) >= 0.001 & iter < 100 % Test for convergence
iter = iter + 1; % No. of iterations
F=x^3-6*x^2+9*x-4; % Residual
J = 3*x^2-12*x+9; % Derivative
dx=(F/J); %Change in variable
x=x-dx; % Successive solution
fprintf('%g', iter), disp([F, J, dx, x])
end

>> Newton1Variable
Enter the initial estimate -> 6
iter F J dx x
1 50.0000 45.0000 1.1111 4.8889

2 13.4431 22.0370 0.6100 4.2789

3 2.9981 12.5797 0.2383 4.0405

4 0.3748 9.4914 0.0395 4.0011

5 0.0095 9.0126 0.0011 4.0000

6 0.0000 9.0000 0.0000 4.0000

Resolver el sistema de ecuaciones mostrado


%Newton2Variables.m
iter = 0; % Iteration counter
x=input('Enter initial estimates, col. vector [x1; x2] -> ');
%prueba [0.5;-1]
dx = [1; 1];
disp('Iter F Jacobian matrix dx x');
% Heading for results
while max(abs(dx)) >= .0001 & iter < 10 %Convergence test
iter=iter+1; % Iteration counter
F = [x(1)^2+x(2)^2-4; exp(x(1))+x(2)-1]; % Functions
J = [2*x(1) 2*x(2) % Jacobian matrix
exp(x(1)) 1];
dx=J\F; % Change in variables
x=x-dx; % Successive solutions
fprintf('%g', iter), disp([F, J, dx, x]); % Results
end

>> Newton2Variables
Enter initial estimates, col. vector [x1; x2] -> [0.5;-1]
Iter F Jacobian matrix dx x
1 -2.7500 1.0000 -2.0000 -0.8034 1.3034
-0.3513 1.6487 1.0000 0.9733 -1.9733
2 1.5928 2.6068 -3.9466 0.2561 1.0473
0.7085 3.6818 1.0000 -0.2344 -1.7389
3 0.1205 2.0946 -3.4778 0.0422 1.0051
0.1111 2.8499 1.0000 -0.0092 -1.7296
4 0.0019 2.0102 -3.4593 0.0009 1.0042
0.0025 2.7321 1.0000 -0.0000 -1.7296
5 0.0000 2.0083 -3.4593 0.0000 1.0042
0.0000 2.7296 1.0000 0.0000 -1.7296
Tambien se consigue lo mismo con una codificación diferente de los programas
anteriores (usando otros recursos)
%Newton1Variable02.m
F=@(x) x^3-6*x^2+9*x-4; % Function
J = @(x) 3*x^2-12*x+9; % Jacobiano

dx=1; % Change in variable is set to a high value


x=input('Enter the initial estimate -> '); % Initial estimate
iter = 0; % Iteration counter
disp('iter F J dx x') % Heading for result
while abs(dx) >= 0.001 & iter < 100 % Test for convergence
iter = iter + 1; % No. of iterations
dx=F(x)/J(x); %Change in variable
x=x-dx; % Successive solution
fprintf('%g', iter), disp([F(x), J(x), dx, x])
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Newton1Variable03.m
F=@(x) x^3-6*x^2+9*x-4; % Function
J = @(x) 3*x^2-12*x+9; % Jacobiano
Fsolve (F,6)

Fsolve (F,2)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Newton2Variables02.m
F=@(x) [x(1)^2+x(2)^2-4; exp(x(1))+x(2)-1]; % Functions
J=@(x) [2*x(1) 2*x(2) % Jacobian matrix
exp(x(1)) 1];

iter = 0; % Iteration counter


x=input('Enter initial estimates, col. vector [x1; x2] -> ');
%prueba [0.5;-1]
dx = [1; 1];
disp('Iter F Jacobian matrix dx x');
% Heading for results
while max(abs(dx)) >= .0001 & iter < 10 %Convergence test
iter=iter+1; % Iteration counter
dx=J(x)\F(x); % Change in variables
x=x-dx; % Successive solutions
fprintf('%g', iter), disp([F(x), J(x), dx, x]); % Results
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Newton2Variables03.m
F=@(x) [x(1)^2+x(2)^2-4; exp(x(1))+x(2)-1]; % Functions
J=@(x) [2*x(1) 2*x(2); exp(x(1)) 1]; % Jacobian Matrix
fsolve(F,[0.5;-1])
fsolve(F,[-2.5;-1.5])

Você também pode gostar