全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2429 11
2013-07-01
悬赏 100 个论坛币 已解决
QQ截图20130701004739.png


画图我会,题目里德epsilon_a公式如下:图中(5.5) photo.jpg
matlab里有bisection这个function吗?为什么我每次用bisect都说undefined function?
好像要自己倒入?
我根据这一页导入的 photo.jpg

我的code是:

[size=12.800002098083496px]function [root,fx,ea,iter]=bisect(func,x1,xu,es,maxit,varargin)
[size=12.800002098083496px]if nargin<3,error('at least 3 input arguments required'),end
[size=12.800002098083496px]test = func(x1,varargin{:})*func(xu,varargin{:});
[size=12.800002098083496px]if test>0,error('no sign change'),end
[size=12.800002098083496px]if nargin<4|isempty(es),es=0.0001;end
[size=12.800002098083496px]if nargin<5|isempty(maxit),maxit=50;end
[size=12.800002098083496px]iter=0;xr=x1;ea=100;
[size=12.800002098083496px]while(1)
[size=12.800002098083496px]    xrold=xr;
[size=12.800002098083496px]    xr=(x1+xu)/2;
[size=12.800002098083496px]    iter=iter+1;
[size=12.800002098083496px]    if xr ~=0,ea=abs((xr-xrold)/xr)*100;end
[size=12.800002098083496px]    test=func(x1,varargin{:})*func(xr,varargin{:});
[size=12.800002098083496px]    if test<0
[size=12.800002098083496px]        xu=xr;
[size=12.800002098083496px]    elseif test>0
[size=12.800002098083496px]        x1=xr;
[size=12.800002098083496px]    else
[size=12.800002098083496px]        ea=0;
[size=12.800002098083496px]    end
[size=12.800002098083496px]    if ea<=es | iter >=maxit,break,end
[size=12.800002098083496px]end
[size=12.800002098083496px]root = xr; fx=func(xr,varargin{:});

[size=12.800002098083496px]fm=sin(m)-m.^3;
[size=12.800002098083496px][~, fx ea iter]=bisect(fm,0.5,1);[size=12.727272033691406px]

[size=12.727272033691406px]然后怎么操作?把这个M-file保存后再编辑另一个即可?
我试着模仿下面这个例题,未遂。。。 photo.jpg


求高手解答!
我从网上看的很多地方用abs(b-a)/2<2%作为停止的标准,a,b是初始区间断点。虽然code中间已经重置了a,b,但我还是看不出为什么abs(b-a)/2和abs((x_new-x_old)/x_new)的联系。


谢谢!

最佳答案

24578901 查看完整内容

针对你的问题,这样就可以啦 fm=@(m)sin(m)-m^3; [mass, fx ea iter]=bisect(fm,0.5,1) 结果是: mass = 0.9286 fx = -4.5446e-007 ea = 5.1349e-005 iter =20
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-7-1 14:14:00
hrbatanu 发表于 2013-7-2 00:16
I am with you, but I need to fit the code into my question: sin(x)-x^3,  thx anyway~
针对你的问题,这样就可以啦
fm=@(m)sin(m)-m^3;
[mass, fx ea iter]=bisect(fm,0.5,1)
结果是:
mass = 0.9286
fx = -4.5446e-007
ea = 5.1349e-005
iter =20
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-1 14:28:09
新建一个bisect.m就可以啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-1 14:41:44
fm=@(m)sin(m)-m^3;[mass, fx ea iter]=bisect(fm,0.5,1)
mass = 0.9286
fx = -4.5446e-007
ea = 5.1349e-005
iter =20

fm=@(m)sqrt(9.81*m/0.25)*tanh(sqrt(9.81*0.25/m)*4)-36;
[mass, fx ea iter]=bisect(fm,40,200)
mass =142.7377
fx =4.6089e-007
ea =5.3450e-005
iter =21

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-1 23:18:42
24578901 发表于 2013-7-1 14:41
fm=@(m)sin(m)-m^3;[mass, fx ea iter]=bisect(fm,0.5,1)
mass = 0.9286
fx = -4.5446e-007
Undefined function 'bisect' for input arguments of type 'function_handle'.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-1 23:19:53
24578901 发表于 2013-7-1 14:41
fm=@(m)sin(m)-m^3;[mass, fx ea iter]=bisect(fm,0.5,1)
mass = 0.9286
fx = -4.5446e-007
is bisection built in matlab? or we should implement by ourself?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群