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

时间:2018-03-01 15:56:39

标签: matlab integral

我试图将一个函数从另一个.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'变量在?

我试图将四方通话更改为:

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

但这不起作用。

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

非常感谢帮助!

1 个答案:

答案 0 :(得分: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);

编辑: 要在y的整合后x保持表达式,您需要使用symsint

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