24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1574  |  回复: 5

li_qun

铜虫 (著名写手)

[求助] 求助被积函数有绝对值号的问题。

f=@(z1,z2)exp(abs(z1-z2));%对该函数进行积分,积分范围0<z1<3,1<z2<3

quad2d(@(z1,z2)f(z1,z2),0,3,1,3)

ans =

   19.7563

>> %去掉绝对值号计算,对f函数的积分转化成对f1,f2两个函数的积分
f1=@(z1,z2)exp(z1-z2);%积分范围0<z1<3,1<z2<z1
f2=@(z2,z1)exp(z2-z1);%积分范围1<z2<3,0<z1<z1

c=@(z1)z1;
d=@(z2)z2;
quad2d(@(z1,z2)f1(z1,z2),0,3,1,c)+quad2d(@(z2,z1)f2(z2,z1),1,3,0,d)

ans =

   19.3884
末学已经确定第二种方法是错误的,因为对f1的积分quad2d(@(z1,z2)f1(z1,z2),0,3,1,c)来说,并不表示1<z2<c,c有可能小于1
但不知道第一种方法是否正确?
如果要去掉绝对值号,应该怎么改写这个函数?

==================================================
还有一个问题,对函数f4积分

f4=@(z1,z2)exp(z1-z2);
quad2d(@(z1,z2)f4(z1,z2),2,5,3,8)

ans =

    6.9739

但我用分段求和的方法来积分这个函数,结果如下
sum1=0;      
N=1000;       %分段数
d1=(5-2)/N;  %变量z1的步长
d2=(8-3)/N;  %变量z2的步长
for i=1:N
sum2=0;      
z1=(2+(i-1)*d1+2+i*d1)/2;   %先固定z1,对z2积分,sum2表示对z2的积分结果,sum1表示对z1的积分结果
for j=1:1000   
z2=(3+(i-1)*d2+3+i*d2)/2;
sum2=sum2+f4(z1,z2)*d2;
end
sum1=sum1+sum2*d1;
end
>> sum1

sum1 =

    2.3857
这是什么原因,哪里有错误吗,还是精度产生的误差?末学对matlab非常外行,请大贤指点,感激涕零!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tgvictor99

木虫 (知名作家)

迷糊领域荣誉领主

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+2, 谢谢参与! 2013-08-24 21:53:02
楼主,你分段搞错了。
f2=@(z2,z1)exp(z2-z1);%积分范围1<z2<3,0<z1<z1
f2的积分范围应该是1<z2<3,0<z1<z2
每个人的人生都是时代的产物。每个人的血统、命运和梦想组成了现在这个时代。
2楼2013-08-19 14:44:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li_qun

铜虫 (著名写手)

引用回帖:
2楼: Originally posted by tgvictor99 at 2013-08-19 14:44:48
楼主,你分段搞错了。
f2=@(z2,z1)exp(z2-z1);%积分范围1<z2<3,0<z1<z1
f2的积分范围应该是1<z2<3,0<z1<z2

谢谢,注释错了,程序里没错
3楼2013-08-19 14:53:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tgvictor99

木虫 (知名作家)

迷糊领域荣誉领主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
li_qun: 金币+10, ★★★很有帮助, 谢谢,的确错了 2013-08-19 18:00:54
li_qun: 金币+10, ★★★很有帮助 2013-08-23 08:48:58
xiegangmai: 金币+2, 鼓励讨论交流! 2013-08-24 21:53:09
引用回帖:
3楼: Originally posted by li_qun at 2013-08-19 14:53:48
谢谢,注释错了,程序里没错...

-5+exp(2)+exp(3)-exp(1)

ans =

   19.7563

已经手算出来,楼主第一种方法是对的。
第二种方法分块错了,要分成3块。
每个人的人生都是时代的产物。每个人的血统、命运和梦想组成了现在这个时代。
4楼2013-08-19 15:25:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

abacus

至尊木虫 (著名写手)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+2, 谢谢参与! 2013-08-24 21:53:16
如图所示,将积分区域分为两部分即可。
代码如下:
CODE:
%% Method 1
f=@(z1,z2)exp(abs(z1-z2));%对该函数进行积分,积分范围0<z1<3,1<z2<3 an=quad2d(f,0,3,1,3)
%% Method 2
% 积分区域分为 两部分
bn=quad2d(@(z1,z2)exp(z1-z2),1,3,1,@(z1)z1); % z1>z2 cn=quad2d(@(z2,z1)exp(z2-z1),1,3,0,@(z2)z2); % z2<z1
dn=bn+cn %最终结果

求助被积函数有绝对值号的问题。
无标题.png

5楼2013-08-19 16:20:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

abacus

至尊木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
li_qun: 金币+20, ★★★★★最佳答案, 谢谢,受益匪浅 2013-08-19 18:01:18
li_qun: 金币+10 2013-08-23 08:49:04
xiegangmai: 金币+2, 谢谢参与! 2013-08-24 21:53:23
看来还不太会用小木虫的 插入代码。
再发一次吧。结果说明,你的第一次计算是正确的。

%% Method 1
f=@(z1,z2)exp(abs(z1-z2));%对该函数进行积分,积分范围0<z1<3,1<z2<3
an=quad2d(f,0,3,1,3)

%% Method 2
% 积分区域分为 两部分
bn=quad2d(@(z1,z2)exp(z1-z2),1,3,1,@(z1)z1);  % z1>z2
cn=quad2d(@(z2,z1)exp(z2-z1),1,3,0,@(z2)z2);  % z2<z1

dn=bn+cn   %最终结果
6楼2013-08-19 16:25:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 li_qun 的主题更新
信息提示
请填处理意见