Newton Raphson method for a system of non-linear equations?
148 次查看(过去 30 天)
显示 更早的评论
If I have a non-linear system of two equations that are each in terms of two variables x and y:
eqn1(x,y) = 0
eqn2(x,y) = 0
How will I go about solving those two equations using Newton-Raphson in MATLAB? I know how to solve this system using the MATLAB's Solve function but not Newton-Raphson.
0 个评论
采纳的回答
Alan Stevens
2023-2-12
Here's a simple example for you to follow:
% Functions
f = @(x,y) x^2 + y - 5.94; % i.e. the equation is x^2+y=5.94
g = @(x,y) x + y^2 - 3.41; % similarly this represents equation x+y^2=3.41
F = @(x,y)[f(x,y); g(x,y)];
% Jacobian
% J = [df/dx, df/dy;
% dg/dx, dg/dy];
J = @(x,y) [2*x 1; 1 2*y];
% Initial guess
xy = [1; 1];
% Tolerance
tol = 10^-6;
err = 1;
while err>tol
xynew = xy - J(xy(1),xy(2))\F(xy(1),xy(2));
err = abs(xynew-xy);
xy = xynew;
end
disp(xy)
3 个评论
Alan Stevens
2023-2-12
Since Newton-Raphson is essentially numerical it seems pointless to use symbolics at all!
However, you might try J = @(x,y) j(x,y)
I don't have the symbolic toolbox, so can't actually check!
Torsten
2023-2-12
% Functions
syms x y
f = x^2 + y - 5.94; % i.e. the equation is x^2+y=5.94
g = x + y^2 - 3.41; % similarly this represents equation x+y^2=3.41
F = [f; g];
% Jacobian
% J = [df/dx, df/dy;
% dg/dx, dg/dy];
J = jacobian(F);
F = matlabFunction(F)
J = matlabFunction(J)
% Initial guess
xy = [1; 1];
% Tolerance
tol = 10^-6;
err = 1;
while err>tol
xynew = xy - J(xy(1),xy(2))\F(xy(1),xy(2));
err = abs(xynew-xy);
xy = xynew;
end
disp(xy)
disp(F(xy(1),xy(2)))
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!