如何用matlab中的单积分表示双积分?

时间:2016-07-26 14:50:32

标签: matlab

我想在matlab中计算int[0,10]int[0,y] f(x,y) dxdy。当然,我可以使用integral2或quad2d来完成它:integral2(f,0,10,0,@(x)x)。但是,我也可以处理g(y)=nt[0,y] f(x,y) dx并执行积分int[0,10] g(y) dy。而不是使用integral2,我想只使用积分来进行计算。我写的代码是:

g=@(y)integral(@(x)f(x,y),0,y)

integral(g,0,10)

但是,它会显示错误消息

Error using integral (line 85) A and B must be floating point scalars.

我的问题是:是否可以用单个积分表示双积分?怎么做?此外,我想对积分进行矢量化,以便我可以输入将数字10更改为矢量,比如0:1:10?

1 个答案:

答案 0 :(得分:0)

首先,一个小小的评论:符号集成和解析求解不是Matlab的核心。虽然支持有限,但如果你想进行分析,有更好的解决方案,例如Mupad,Matlab内部的分析环境。

话虽如此,你试图用integrate做的是一个数值积分。然而,如果存在未知边界,则数值积分非常困难。更好的方法是使用方法int的符号集成。

回答你的第二个问题:我担心带符号整合的矢量化是不可能的。

我将您的代码重新编写为以下内容:

syms x
f = @(x,y) x+y
g = @(y) int(f(x,y), x, 0, y)
h = int(g(y), y, 0, 10)

相应的Matlab文档:intintegral