【问题标题】:How do I use an additional variable on a quadl function in Matlab?如何在 Matlab 中的 quadl 函数上使用附加变量?
【发布时间】:2018-03-01 15:56:39
【问题描述】:

我正在尝试将另一个 .m 文件中的函数传递给 quadl 调用,该调用在评估函数时也需要一个额外的变量。

我当前的通话看起来像:

fun=@fun1
min = 0;
max = 2;
y=quadl(fun, min, max, 0.00001);

我想让 fun1 从最小值到最大值进行评估。

我在 fun1.m 文件中的函数是:

function func=fun1(x)
    func = x^2+x+y

如何传入“y”变量?

我已尝试将 quad 调用更改为:

y=quadl(fun1(y), min, max, 0.00001);

和:

y=quadl(fun1(y), min, max, 0.00001);

和函数:

function func=fun1(x,y)
    func = x^2+x+y

但这不起作用。

我也尝试过声明一个全局变量,但它给了我一个未声明的变量错误。

感谢您的帮助!

【问题讨论】:

    标签: matlab integral


    【解决方案1】:

    首先quadl会在以后的版本中被移除,所以最好使用integral

    你应该使用:

    function func=fun1(x,y)
        func = x.^2+x+y;         % with .^
    

    然后在您的其他脚本中,将fun 声明为x 的函数:

    y = 5;
    fun=@(x)fun1(x,y);
    min = 0;
    max = 2;
    y=integral(fun, min, max);
    

    如果你坚持使用quadl,你完全可以这样做:

    y = 5;
    fun=@(x)fun1(x,y);
    min = 0;
    max = 2;
    y=quadl(fun, min, max, 0.00001);
    

    编辑: 要在 x 集成后保持 y 函数中的表达式,您需要使用 symsint

    syms x y z
    fun = fun1(x,y,z);
    min = 0;
    max = 2;
    expr = int(fun,  x, min, max);
    

    【讨论】:

    • 如果我想从 0 迭代到 x,然后使用 y 和 z,我将如何定义 fun1? fun@(x) = fun1(x,y,z) 和函数 fun=fun1(x,y,z) 似乎不适用于错误:“被积函数必须返回与输入向量。”
    • @obizues 我不确定你的意思。你的意思是要在积分后有yz 的表达式?
    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 2016-06-06
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多