在Matlab上集成两个变量的函数

时间:2014-08-04 06:16:43

标签: matlab

我正在尝试让MATLAB集成两个变量的函数,例如fun=@(x,y)x+y; 对一个变量。我可以定义,说fun2=@(y)quad(@(x)fun(x,y),1,2);,它会给我fun2(1),比方说没问题。但是当我尝试评估一个矩阵的fun2时,它给了我错误。当我尝试使用fun2集成quad()时,这就是我需要做的事情,它给了我同样的错误。

我不能只使用quad2d(),因为(a)我在几个不同的地方需要fun2之类的东西,(b)我需要计算的积分是4D。

还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

因此,您希望将fun2用于数组的每个元素。您可以使用arrayfun并定义fun2来完成此操作。

您可以在http://www.mathworks.com/help/matlab/ref/arrayfun.html上看到有关arrayfun的信息。

答案 1 :(得分:0)

而不是quad,请将integral与' ArrayValued'一起使用。属性设置为true。

fun2 = @(y)integral(@(x)fun(x,y),1,2,'ArrayValued',true);

对于您的四维问题,您可以使用integral(@(x)integral3(…))arrayfun。请参阅我对this question的答案如何准确地完成此操作。

无论如何,您应该使用integral代替quad,因为Matlab quad documentation说:

quad will be removed in a future release. Use integral instead.

documentation of integral中,您还可以找到指定结果准确性的选项(' AbsTol'' RelTol')。