%% 牛頓法主程式
clear;clc
format;
x0=[0 0]; % 迭代初始值
eps = 0.00001; % 定位精度要求
for i = 1:10
f = double(subs(fun(x0),,));
df = double(subs(dfun(x0),,)); % 得到雅克比矩陣
x = x0 - f/df;
if(abs(x-x0) < eps)
break;
endx0 = x; % 更新迭代結果
enddisp('定位座標:');
xdisp('迭代次數:');
i%% 定義非線性方程組
function f=fun(x);
%定義非線性方程組如下
%變數x1 x2
%函式f1 f2
syms x1 x2
f1 = sqrt((x1-4)^2 + x2^2)-sqrt(17);
f2 = sqrt(x1^2 + (x2-4)^2)-5;
f=[f1 f2];
end%% 定義雅克比矩陣
function df=dfun(x);
f=fun(x);
df=[diff(f,'x1');diff(f,'x2')]; %雅克比矩陣
end
執行結果如下:
定位座標:
x =0.0000 -1.0000
迭代次數:
i =
matlab利用牛頓法求解非線性方程01
在如下鏈結中,本人看到了牛頓法求解非線性方程的乙個程式,給人耳目一新的感覺。但不知何故,本人未能執行該博主寫的程式,於是我對原程式做了一定修改,程式得以執行,如下 牛頓法程式 function gen newton f,x,tol f為函式,x0為初值,tol為指定允差,如果預設,預設為1e 6 i...
matlab多變數牛頓方法求解非線性方程組
這本是個作業,但因為各種原因及出錯,這個簡單的 寫了2個多小時,內心不爽。因此寫下部落格記錄。實現如下 clear clc syms u v f1 6 u 3 u v 3 v 3 4 f2 u 2 18 u v 2 16 v 3 1 f f1 f2 df0 diff f,u diff f,v df ...
牛頓迭代法求解非線性方程 C
一 牛頓迭代法演算法 設 已知 第1步計算函式 第2步計算雅可比矩陣 第3步求線性方程組的解 第4步計算下乙個點 重複上述過程。二 牛頓迭代法c 程式 牛頓迭代解非線性方程組 include include using namespace std double f1 double x double ...