使用二分法在Matlab中找到解决方案?

时间:2015-09-30 09:23:18

标签: matlab

我正在尝试解决以下问题:

  

使用二分法在以下函数的10^−4区间内找到精确到[−5, 5]范围内的解法:

f(x)= x^5-10x^3-4

这是我的代码:

function sol=bisect(fn,a,b,tol)

%Bisection method for the Nonlinear Function
fa=feval(fn,a);fb=feval(fn,b);
if fa*fb>0;fprintf('Endpoints have same sign')
   return
end
k=0;
while abs (b - a)>tol
   c =(a+b)/2;
   fc=feval(fn,c);
   if fa*fc < 0; b=c; else a = c; 
       k=k+1;
   end
end
sol=(a+b)/2;

当我运行程序时,我会这样做:

a= -5
b=5
fn =  x^5-10x^3-4

但是最后一行返回错误:

  

未定义的函数或变量x

1 个答案:

答案 0 :(得分:1)

定义可由feval评估的等式,您需要定义为函数。

尝试将fn定义为fn=@(x)(x^5-10x^3-4)。 这样您就可以使用feval(fn,3)