作者povertytrap (povertytrap)
看板MATLAB
标题[讨论] 想请各位大大帮我看我写的牛顿法程式
时间Mon Mar 19 19:23:20 2012
这题是书上经典的自由落体题目改过求cd的
--> t=4;
--> v=36;
--> g=9.81;
--> m=80;
--> xo=0.25;
--> Ea=0.001;
--> f=@(cd) sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t)-v;
--> df=@(cd) -1/2*sqrt(g*m)*cd^(-3/2)*tanh(sqrt(g*cd/m)*t)+1/2*sqrt(g*m/cd)*
sqrt(g/m)*t*(sech(sqrt(g*cd/m)*t))^2;
[root,ea,iter]=newtraph(f,df,0.25,0.001,100)
--> root =
0.1401
ea =
8.1853e-004
iter =
35
请问我iter为甚麽会是35正确答案应该是4才对
因为我是用freemat所以微分是我自己算的
牛顿程式在这
function [root,ea,iter]=newtraph(func,dfunc,xr,es,maxit,varargin)
% newtraph: Newton-Raphson root location zeroes
% [root,ea,iter]=newtraph(func,dfunc,xr,es,maxit,p1,p2,...):
% uses Newton-Raphson method to find the root of func
% input:
% func = name of function
% dfunc = name of derivative of function
% xr = initial guess
% es = desired relative error (default = 0.0001%)
% maxit = maximum allowable iterations (default = 50)
% p1,p2,... = additional parameters used by function
% output:
% root = real root
% ea = approximate relative error (%)
% iter = number of iterations
if nargin<3,error('at least 3 input arguments required'),end
if nargin<4|isempty(es),es=0.0001;end
if nargin<5|isempty(maxit),maxit=50;end
iter = 0;
while (1)
xrold = xr;
xr = xr - func(xr)/dfunc(xr);
iter = iter + 1;
if xr ~= 0, ea = abs((xr - xrold)/xr) * 100; end
if ea <= es | iter >= maxit, break, end
end
root = xr;
另外想请问各位大大有关matlab的书
我的专题老师要我用matlab写出一个使用者介面
请问各位前辈可以介绍哪本书有这方面的资讯吗?(最好是中文本小弟英文很差)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.25.118.145
1F:→ H45:经典的MATLAB 7程式设计就有教,如果你要进阶的介面最好找其他 03/19 19:55
2F:→ povertytrap:请问那本书是中文本吗? 我们学校matlab只教数值分析 03/19 21:27