点积误差的Matlab二重积分

5kgi1eie  于 2023-10-23  发布在  Matlab
关注(0)|答案(1)|浏览(139)

假设我想整合

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,但对于二维积分则不行。如何对一个包含点积的函数进行二重积分?

h9vpoimq

h9vpoimq1#

虽然你的问题提供了错误的代码,但类似这样的代码会重现你的错误:

integral2( @(x,y) f(x)*f(y)' ,0,1,0,1 );

这个错误仅仅是因为你的积分函数不是integral2接受的格式。你的函数需要接受数组输入,并返回相应值的数组输出。

fun=@(x,y) f(x)*f(y)'
size(fun(0,1)) % returns 1, should return 1
size(fun([0,0],[1,1])) % returns 1, should return 2, because it has 2 inputs

% in other words, this must hold for it to be a valid function for integral2:
fun([0,0],[1,1]) == [fun(0,1), fun(0,1)]

只需重写你的函数,使它可以同时在多个[x,y]对中求值,使它成为一个向量化函数。请记住,输入不需要是在一行中定义的announcement函数,您可以自由地在单独的文件中编写完整的函数,并将其用于integral2

相关问题