我在Matlab中使用quad2d
时遇到问题。要计算的表达式是:
$\frac{8}{pi^2}\sum_{k=1}^{n}(\frac{sin(\frac{k*pi}{2}){k^2}e^-(k*pi)^2 sin(k*pi*x)$
我写了以下代码:
fun = @(x,y) (8/(pi^2))*((sin(y.*pi/2))/(y.^2))*exp(-(((y.*pi)^2)*0.1))*sin(y.*pi*x.*1)
ca=quad2d(fun,0,1,1,200)
我想用两个不同的变量计算上面表达式的数值积分。当我在Matlab中写这个时,我得到的错误信息是:
警告:Matrix的工作精度非常高。
有很多错误消息。有没有人知道应该采取哪些不同的做法?
答案 0 :(得分:2)
您遇到的问题是*
和.*
的使用不一致且部分错误。您必须知道quad2d
使用x
和y
的矩阵或向量来进行整合。说清楚:
.*
表示逐元素乘法。同样,./
和.^
表示元素划分或权力。*
是标量的乘法,如果两个输入都是向量或矩阵,则为矩阵乘法。在您的问题中,据我所知,您不需要任何矩阵乘法。因此,您必须替换所有*
,/
,^
,其中元素包含两个矩阵(即x
,y
)操作。您仍然可以使用*
等将矩阵与标量相乘。我在这里完成了这个:
fun = @(x,y) (8/(pi^2))*((sin(y*pi/2))./(y.^2)).*exp(-(((y*pi).^2)*0.1)).*sin(pi*y.*x);
请注意y*pi/2
,例如,不需要点,因为pi/2
是标量,y
是矢量矩阵。你可以在那里使用.*
,两者都可以。
现在整合工作没有错误:
ca=quad2d(fun,0,1,1,200)
ca =
0.0318