我试图将一个函数从另一个.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
但这不起作用。
我也试过声明一个全局变量,但它给了我一个未声明的变量错误。
非常感谢帮助!
答案 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
保持表达式,您需要使用syms
和int
:
syms x y z
fun = fun1(x,y,z);
min = 0;
max = 2;
expr = int(fun, x, min, max);