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;
本人是新手,请高手指点迷津,非常着急,万分感激! 展开
被积函数为的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;
本人是新手,请高手指点迷津,非常着急,万分感激! 展开
1个回答
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询