matlab解非线性方程
%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;
但是运行的时候显示出错
求大神指导为什么出错了怎么改...悬赏还可以再加 展开
问题主要出在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 广告