作者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