如何在 Matlab 中的 quadl 函数上使用附加变量?

How do I use an additional variable on a quadl function in Matlab?

我正在尝试将一个函数从另一个 .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

但这不起作用。

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

感谢帮助!

首先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);