[問題] 關於Newton's Method程式碼的問題

看板MATLAB作者 (◎鑫羽=公民◎)時間13年前 (2013/05/12 16:49), 編輯推噓0(111)
留言3則, 3人參與, 最新討論串1/1
如標題 因為小弟是半路出家 自己學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)

05/12 17:23, , 1F
為什麼總是有人想把版友當interpreter用呢?
05/12 17:23, 1F

05/12 17:38, , 2F
人肉debug嗎
05/12 17:38, 2F

05/13 09:17, , 3F
其實我一直覺得用程式輸出中文字很不好XD
05/13 09:17, 3F
文章代碼(AID): #1HZrU061 (MATLAB)
文章代碼(AID): #1HZrU061 (MATLAB)