matlab中利用二分法编程求方程x^3-3*x^2-x+3=0在[0,3]内的根

程序已有,但第四行中f=@(x)x^3-3*x^2-x+3的“@(x)”作用是什么?我在书上都没有见过这个符号,但不用这个符号的话程序是错误的,到底为什么?a=0;b=3... 程序已有,但第四行中f =@(x)x^3-3*x^2-x+3的 “@(x)”作用是什么?
我在书上都没有见过这个符号,但不用这个符号的话程序是错误的,到底为什么?

a=0;
b=3;
x=a:b;
f =@(x)x^3-3*x^2-x+3;
c=(a+b)./2;
while abs(b-a)>1e-6
if f(c)*f(b)<0
a=c;
else
b=c;
end
c=(a+b)./2;
x=c;
end
>> fprintf('\n x = %.5f, f(x) = %.5f \n', x, f(x));

答案是1
展开
 我来答
wacs5
推荐于2018-04-18 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2809万
展开全部
这个定义一个函数。

f =@(x)x^3-3*x^2-x+3;
的意思是说定义一个函数f(x),它只有一个自变量。

使用时,直接可以用f(1)它就是x=1时的函数值。

另外多参数可以是:
f=@(x,y)sqrt(x.^2+y.^2),求点到原点的距离。
登笑容舒璞
2019-05-01 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:677万
展开全部
先建立二分法的fun.m文件,代码如下:
function
fun(a,b,e)
%f是自定义的函数
%a为隔根区间左端点,b为隔根区间右端点,e为绝对误差限
if
nargin==2
e=1.0e-6;
elseif
nargin<2
input('变量输入错误!');
return;
end
if
a>=b
input('隔根区间输入错误!');
return;
end
a1=a;
b1=b;
c1=(a1+b1)/2;
n=0;
%迭代计数器,初值为0
while
(b-a)/(2^(n))
>=
1/2*e
c1
if
f(c1)==0
c1
elseif
f(a1)*f(c1)>0
a1=c1;
c1=(a1+b1)/2;
n=n+1;
elseif
f(b1)*f(c1)>0
b1=c1;
c1=(a1+b1)/2;
n=n+1;
end
end
n
再建立所要求函数的f.m文件:
function
y=f(x)
y=x^3-3*x-1;
运行:fun(-100,100,10^(-4))
-100
100
为根所在该区间,10^(-4)表示精度要求。
结果:c1
=
0
c1
=
50
c1
=
25
c1
=
25/2
c1
=
25/4
c1
=
25/8
c1
=
25/16
c1
=
75/32
c1
=
125/64
c1
=
225/128
c1
=
475/256
c1
=
975/512
c1
=
1925/1024
c1
=
988/529
c1
=
2494/1331
c1
=
640/341
c1
=
1189/633
c1
=
171/91
c1
=
1357/722
c1
=
109/58
c1
=
1013/539
c1
=
701/373
n
=
22
最后结果为
701/373
欢迎指错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ooowhgtb
2012-04-01
知道答主
回答量:5
采纳率:0%
帮助的人:7471
展开全部
楼主QQ多少?我也正在编写这个程序!有些地方不太懂!望指教 比如x=a:b是什么意思?
matlab中利用二分法编程求方程x^3-3*x^2-x+3=0在[0,3]内的根 要求误差小于0.005时怎么做呢 能不能用for循环语句?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式