首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab中的错误:输入参数未定义,尽管变量已存在

Matlab中的错误:输入参数未定义,尽管变量已存在
EN

Stack Overflow用户
提问于 2012-08-23 22:07:53
回答 1查看 855关注 0票数 0

我已经编写了这个函数,并且已经为rg和Lp定义了值,但是当我运行这个函数时,它仍然返回错误:(输入参数"Lr“未定义。

如果f(Lr,rg,Xo)*f(Lr,rg,Xf)>0,则==> Bis在12处出错

下面是函数:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-23 22:20:44

除了我没有PlotLpFunction之外,代码可以在最新版本的Matlab上执行。

我最初的印象是忘记将Lr (和所有其他参数)发送到内联f函数中,通过将它们作为参数添加到内联函数中很容易修复。您将在the official documentation中找到完整的用法。

相关的部分是

inline(expr,arg1,arg2,...)构造一个内联函数,其输入参数由字符串arg1,arg2,...指定可以使用多字符符号名称。

但从上下文来看,它似乎在Matlab2011b和2008b上都能很好地形成内联。答案现在已经被接受了,所以这可能就是问题所在。其他人能重现他的问题吗?如果是这样,请提供您的Matlab版本或其他情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12093550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档