我已经编写了这个函数,并且已经为rg和Lp定义了值,但是当我运行这个函数时,它仍然返回错误:(输入参数"Lr“未定义。
如果f(Lr,rg,Xo)*f(Lr,rg,Xf)>0,则==> Bis在12处出错
下面是函数:
function[Lp,Xo,Xf]=Bis(Lr,rg)
Xo=0;
Xf=10;
Err=0.01;
syms x;
f=inline('(sqrt((2/3)*(((x*Lr)/3)-(x*x)+((2*x*x*x)/Lr)-((2*x*x*x*x)/(Lr*Lr))+(((2*x*x*x*x)/(Lr*Lr))*exp(-Lr/x))))-rg)');
if f(Lr,rg,Xo)*f(Lr,rg,Xf)>0
disp('The values you entered are not apropriate !')
PlotLpFunction;
Lp='unknown';
elseif f(Lr,rg,Xo)*f(Lr,rg,Xf)==0
if f(Lr,rg,Xo)==0
Lp=Xo;
elseif f(Lr,rg,Xf)==0
Lp=Xf;
end
elseif f(Lr,rg,Xo)*f(Lr,rg,Xf)<0
xi=(Xf-Xo)/2;
while abs(f(Lr,rg,xi))>Err
if f(Lr,rg,xi)*f(Lr,rg,Xf)<0
Xo=xi;
xi=(Xo+Xf)/2;
elseif f(Lr,rg,xi)*f(Lr,rg,Xf)>0
Xf=xi;
xi=(Xo+Xf)/2;
end
end
Lp=xi;
end发布于 2012-08-23 22:20:44
除了我没有PlotLpFunction之外,代码可以在最新版本的Matlab上执行。
我最初的印象是忘记将Lr (和所有其他参数)发送到内联f函数中,通过将它们作为参数添加到内联函数中很容易修复。您将在the official documentation中找到完整的用法。
相关的部分是
inline(expr,arg1,arg2,...)构造一个内联函数,其输入参数由字符串arg1,arg2,...指定可以使用多字符符号名称。
但从上下文来看,它似乎在Matlab2011b和2008b上都能很好地形成内联。答案现在已经被接受了,所以这可能就是问题所在。其他人能重现他的问题吗?如果是这样,请提供您的Matlab版本或其他情况。
https://stackoverflow.com/questions/12093550
复制相似问题