Matlab 积分3和积分2内积分

Matlab 积分3和积分2内积分,matlab,nan,integral,Matlab,Nan,Integral,在为自定义函数编写数值积分时发现了一个奇怪的问题。 MATLAB手册上说: integral3调用integral对xmin进行积分≤ x≤ xmax。它使用“平铺”方法调用integral2来计算二重积分 我已经对我的函数进行了适当的(我认为是)矢量化,所以它从integral3中获取一个平铺输入,并返回一个适当的值数组。积分传递时没有错误,但NaN值由积分返回(尽管积分函数本身总是返回复数数组) 此外,如果我使用相同函数的integral2(平铺方法)的integral(使用“ArrayVa

在为自定义函数编写数值积分时发现了一个奇怪的问题。 MATLAB手册上说:

integral3调用integral对xmin进行积分≤ x≤ xmax。它使用“平铺”方法调用integral2来计算二重积分

我已经对我的函数进行了适当的(我认为是)矢量化,所以它从integral3中获取一个平铺输入,并返回一个适当的值数组。积分传递时没有错误,但NaN值由积分返回(尽管积分函数本身总是返回复数数组)

此外,如果我使用相同函数的integral2(平铺方法)的integral(使用“ArrayValued”方法),就像手册中说的integral3一样,返回的值不是NaN,而是复数


有什么想法,NaN的可能来自哪里吗?

不确定它是如何计算出来的,但将积分顺序从
积分3(@(x,y,z)F(x,y,z),x1,x2,y1,y2,z2)
改为
积分3(@(z,x,y)F(x,y,z),z1,z2,x1,x2,y1,y2)
解决了这个问题。

复数积分有点棘手。我能看看你的功能和你的尝试吗?如果您认为函数太长,无法在此处写入,请不要担心,它不会造成任何伤害。如果你的函数真的很长,我会用一个简单但仍然具有代表性的函数重新进行相同的积分,以确认积分是否正确。谢谢,但这几乎是不可能的-函数使用了一系列其他子函数,但基本上归结为两个复指数的倍数,不管怎么说,我已经克服了这个问题(这又有点让人困惑),从:
integral3(@(x,y,z)F(x,y,z),x1,x2,y1,y2,z1,z2)
integral3(@(z,x,y)F(x,y,z),z1,z2,x1,x2,y1,y2)
我明白了,很好,你能让它工作了,我投票结束这个问题可以吗?你也可以考虑提交一个答案并接受它,只是为了表明问题已经解决了。