假设我想整合
f=@(x) [1,0];
integral2( @(x,y) f(x)*f(y)' ,0,1,0,1 );
但这给出了
Integrand output size does not match the input size.
即使f是一个向量,我也取点积,所以输入大小是1x1。理想情况下,我想用向量表示法来计算被积函数中的点积,因为我有一个更复杂的内积,用手写出来会很痛苦。对于一维积分,可以将arrayvalued
设置为true
,但对于二维积分则不行。如何对一个包含点积的函数进行二重积分?
1条答案
按热度按时间h9vpoimq1#
虽然你的问题提供了错误的代码,但类似这样的代码会重现你的错误:
这个错误仅仅是因为你的积分函数不是
integral2
接受的格式。你的函数需要接受数组输入,并返回相应值的数组输出。即
只需重写你的函数,使它可以同时在多个
[x,y]
对中求值,使它成为一个向量化函数。请记住,输入不需要是在一行中定义的announcement函数,您可以自由地在单独的文件中编写完整的函数,并将其用于integral2
。