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 获赞数:17019

向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

修改后运行结果

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式