matlab解非线性方程

用二分法求f(x)=x3+4x2-10%erfen.mfunctiony=erfen(fun,a,b,esp)ifnargin<4esp=1e-4;endiffeval(... 用二分法求 f(x)=x3+4x2-10
%erfen.mfunction y=erfen(fun,a,b,esp)
if nargin<4 esp=1e-4;end
if feval (fun,a)*feval (fun,b)<0;
n=1;
c=(a+b)/2;
while c>esp if feval (fun,a)*feval(fun,c)<0;
b=c;
c=(a+b)/2;
elseif feval (fun,c)*feval (fun,b)<0
a=c;c=(a+b)/2; else y=c;
esp=10000; end n=n+1;
end
format long y=c;
elseif feval (fun,a)==0 y=a;
elseif feval (fun,b)==0 y=b;
else disp ('may not be a root');
end
n

%fc.m
function y=fc(x);
y=x^3+4*x^2-10;

但是运行的时候显示出错
求大神指导为什么出错了怎么改...悬赏还可以再加
展开
 我来答
lhmhz
高粉答主

2016-06-01 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17014

向TA提问 私信TA
展开全部

问题主要出在erfen()函数上。

根据你的程序,作了适当调整。修改后代码如下

%erfen.m

function y=erfen(fun,a,b,esp)

if nargin<4

 esp=1e-4;

end

n=1; 

 if feval(fun,a)*feval(fun,b)<0;

 %n=1; 

 c=(a+b)/2;

%while c>esp if feval (fun,a)*feval(fun,c)<0;

while (abs(b-c)>esp) && (abs(feval(fun,c))>esp) 

if feval(fun,c)*feval(fun,a)>0

 a=c;

 c=(a+b)/2; 

 %elseif feval (fun,c)*feval (fun,b)<0

elseif feval(fun,c)*feval(fun,a)<0;

 b=c;

 c=(a+b)/2;

else 

y=c;

esp=10000;

end 

n=n+1; 

end

format long

y=c; 

elseif feval (fun,a)==0

 y=a;

 elseif feval (fun,b)==0

 y=b;

else

 disp ('may not be a root'); 

end

n

修改后运行结果

富港检测技术(东莞)有限公司_
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式