这段代码给了我;使用inline/subsref时出错(第12行(内联函数的输入不足。
%MATLAB 中的二分法
%我们有5kg的盒子m=5,摩擦系数k=0.4,未知力F=x,
%箱子没有移动(g=9.81(
m=5;
k=0.4;
g=9.81;
G=m*g;
N=G;
a='x-(k.*N)';
f=inline(a);
xl=input('Enter the left hand side of interval:') ;
xu=input('Enter the right hand side of interval:');
tol=input('Enter the tolerance:');
if f(xu)*f(xl)<0
else
fprintf('The guess is incorrect! Enter new guessesn');
xl=input('Enter the left hand side of interval:n') ;
xu=input('Enter the right hand side of interval:n');
end
for i=2:12
xr=(xu+xl)/2;
if f(xu)*f(xr)<0
xl=xr;
else
xu=xr;
end
if f(xl)*f(xr)<0
xu=xr;
else
xl=xr;
end
xnew(1)=0;
xnew(i)=xr;
if abs((xnew(i)-xnew(i-1))/xnew(i))<tol,break,end
end
str = ['The required root of the equation is: ', num2str(xr), ''],
问题是inline
对a
中的变量感到困惑。我的Matlab版本(可能还有你的版本(认为x
、k
和N
都是变量,它正在生成一个有三个参数的函数。
与其使用inline
,我建议只显式地编写所需的函数:
f=@(x)(x-(k.*N));