matlab2013中如何求解被积函数为分段函数的二重积分?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 00:06:54
matlab2013中如何求解被积函数为分段函数的二重积分?
∫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)*i2) a=0;
本人是新手,非常着急,万分感激!
∫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)*i2) a=0;
本人是新手,非常着急,万分感激!
参考代码:
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
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