matlab2013中如何求解被积函数为分段函数的二重积分?

∫010∫020f(x,y,1)*f(x,y,2)*f(x,y,....10)dxdy,(0,10),(0,20)分别为积分上下限。被积函数为的i从1到10f(x,y,i... ∫0 10∫0 20 f(x,y,1)*f(x,y,2)*f(x,y,....10) dxdy,(0,10),(0,20)分别为积分上下限。
被积函数为的i从1到10 f(x,y,i)的求积,
且function a=f(x,y,i)
if(sqrt(x^2+y^2)*i<=2) a=1;
if(sqrt(x^2+y^2)*i>2) a=0;
本人是新手,请高手指点迷津,非常着急,万分感激!
展开
 我来答
匿名用户
2014-07-06
展开全部

参考代码:

function zd1766370457469573620
dblquad(@f10,0,10,0,20)

function b=f10(x,y)
b = 1;
for i=1:10
    b = b .* f(x,y,i);
end

function a=f(x,y,i)
a = sqrt(x.^2+y.^2)*i <= 2;

求得结果:

ans =
    0.0314
追问
谢谢您的回答,
要是:
if(sqrt(x^2+y^2)*i2) a=0;

修改为:
if(sqrt(x^2+y^2)*i2) a=20;
您这样的解法就不适用的!还有别的解法吗?
追答

像这种二值的函数都是可以的,例如,对你举的例子,可以改成:

a = 20 - 10*(sqrt(x.^2+y.^2)*i <= 2);

当然,这种做法对于多值的情况就不太适用了,那种情况下可以用判断语句处理,或者类似下面这样:

a = (x+y)*0 + 20;
a(sqrt(x.^2+y.^2)*i <= 2) = 10;

应该指出的是,这个例子的函数值太大(超过10^10),用默认的设置计算会导致迭代超过10000次,导致大量的警告信息。可通过设置较大的误差限来避免:

dblquad(@f10,0,10,0,20,1e5,@quadl)

求得结果大约为

ans =
   2.0293e+15
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式