Newton methods for solving nonlinear
이전 댓글 표시
Please help me fix this code programe
main()
function main()
X0 = [25; 20; 4; 1];
% Áp dụng phương pháp Newton
X = newtons_method(X0)
% Hiển thị kết quả
disp('Kết quả:')
disp(['Nhiệt độ nước lớn nhất là: ', num2str(X(1))]);
end
function F = equations(X)
F = [X(1) - (X(2) + 0.5 * X(3) - 0.2 * X(4));
X(2) - 20;
X(3) - 5;
X(4) - 2];
end
function J = jacobian(X)
J = [1, -0.5, -0.1, 0.2;
0, 1, 0, 0;
0, 0, 1, 0;
0, 0, 0, 1];
end
function X = newtons_method(X0)
% Phương pháp Newton
max_iterations = 100;
tolerance = 1e-6;
X = X0;
for i = 1:max_iterations
F = equations(X);
J = jacobian(X);
delta_X = -J \ F;
X = X + delta_X;
if norm(delta_X, inf) < tolerance
break;
end
end
end
댓글 수: 8
Torsten
2023년 11월 15일
Ok, the first row of your Jacobian is wrong and your system of equations is a linear one so that you could have solved it easier than with Newton's method, but the iteration converges. So what exactly is your question ?
Khai
2023년 11월 15일
Khai
2023년 11월 15일
Torsten
2023년 11월 15일
We have enough problems in the world - why inventing a new one ?
John D'Errico
2023년 11월 15일
Your "solver" works. At least it does on the trivial example problem you chose, which is purely linear, so it will "converge" in one iteration. So where is the problem?
Khai
2023년 11월 16일
Khai
2023년 11월 16일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Contrast Adjustment에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
