作者frank930218 (◎鑫羽=公民◎)
看板MATLAB
標題[問題] 關於Newton's Method程式碼的問題
時間Sun May 12 16:49:00 2013
如標題
因為小弟是半路出家 自己學MATLAB的
所以 對於一些相關知識沒有相當完備QQ...
以下是我自己打出來的Newton's Method程式碼
還望版上大大告訴我問題出在哪裡>"<
---
function main()
fprintf('利用牛頓法[Newton`s Method]求函數解:\n');
x=input('你的起始點,x=');
Tol=input('你的預設誤差值,Tol=');
if Tol>=0,Tol=1.0e-4;end
Max_N=input('你的最大運算次數,Max_N=');
if Max_N<1,Max_N=10;end
fun1(x);fun2(x);fun3(x);
fprintf('\n ----- 計算開始 -----\n');
fprintf('=========================================================\n');
fprintf(' n\t\t x\t\t fun1(x)\t\t fun2(x)\t\t ans\t\t \n');
fprintf('=========================================================\n');
x0=x;fun1(x0)=fun1(x);fun2(x0)=fun2(x);fun3(x0)=fun3(x);
Tol_x=1.0;Tol_fun=1.0;N=1;
fprintf('%2d\t %f\t %f\t %f\t \n',0,x,fun1(x),fun2(x));
fprintf('%2d\t %f\t %f\t %f\t %10.7f\t \n',N,x0,fun1(x0),fun2(x0),fun3(x0));
while (Tol_x>Tol) && (N<Max_N) && (Tol_fun>Tol)
N = N+1;
fprintf('%2d\t %f\t %f\t %f\t %10.7f\t \n',N,x1,fun1(x1),fun2(x1),fun3(x1));
Tol_x = abs(x1-x0);
Tol_fun = abs(fun3(x1));
x0=x1;fun1(x0)=fun1(x1);fun2(x0)=fun2(x1);fun3(x0)=fun3(x1);
end
fprintf('\n ----- 計算結束 -----\n');
if (iter==Max_iter) && ( Tol_p1>Tol )
fprintf('\n已達最大迭代次數 %d,無法達到要求精確度\n',Max_N);
fprintf('p%d =%10.7f,f(p%d) =%10.7f,相對精度:%7.4e\n',N,x0,N,h(x0),Tol_x1);
else
fprintf('p%d =%10.7f,f(p%d) =%10.7f,相對精度:%7.4e\n',N,x0,N,h(x0),Tol_x1);
end
end
function v=fun3(x)
v=x-fun1(x)/fun2(x);
end
function y=fun1(x)
y=x^2-6;
end
function z=fun2(x)
z=2*x;
end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.196.50
※ 編輯: frank930218 來自: 125.230.196.50 (05/12 16:49)
※ 編輯: frank930218 來自: 125.230.196.50 (05/12 16:50)
1F:推 sunev:為什麼總是有人想把版友當interpreter用呢? 05/12 17:23
2F:噓 Steven0422:人肉debug嗎 05/12 17:38
3F:→ rex0707:其實我一直覺得用程式輸出中文字很不好XD 05/13 09:17