[問題] 牛頓法的程式一直找不出錯...已回收
以下是我寫的小程式,也在command window 試過了,可是還是有錯:
這是一個寫牛頓法的程式,為了懶得動筆化簡微分,所以順便也寫了偏微的程式。
syms v1 v2 f1 f2 M;
tol = 0.0001; //容忍值
m = .07592; //初始值
n = .07546;
for L = 1:1:1000
f1 = exp(40*v1)+v1-v2-2; //函數f2,f2
f2 = -v1+v2+exp(40*v2)-1;
M = [diff(f1,v1) diff(f1,v2);diff(f2,v1) diff(f2,v2)]; //偏微(矩陣形式)
v1 = m;
v2 = n;
M_val = subs(M); //用subs求M值
f1_val = subs(f1);
f2_val = subs(f2);
N = -inv(M_val)*[f1_val;f2_val]; //多變數牛頓法中心公式
if (L==1000)&&(abs(N(1,1))>tol)&&(abs(N(2,1))>tol) //判斷
print(disconvergence)
elseif abs(N(1,1))<tol&&abs(N(2,1))<tol
break
end
m = v1 + N(1,1); //新值傳給舊值
n = v2 + N(2,1);
end
m //輸出
n
??? Error using ==> diff
Difference order N must be a positive integer scalar.
Error in ==> improved_newton at 9
M = [diff(f1,v1) diff(f1,v2);diff(f2,v1) diff(f2,v2)];
實在看不懂他到底是指哪個地方錯了,矩陣這樣弄應該沒錯阿.....
--
http://www.wretch.cc/blog/sleeeve
You are welcome to browse my blog.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.170.46
→
12/18 22:38, , 1F
12/18 22:38, 1F
→
12/18 22:51, , 2F
12/18 22:51, 2F
→
12/18 22:51, , 3F
12/18 22:51, 3F
推
12/20 20:07, , 4F
12/20 20:07, 4F
→
12/20 20:47, , 5F
12/20 20:47, 5F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章