需要求解一个二重积分,但因为被积函数带有未知参数a,所以最后的结果是一个关于a的表达式.

需要求解一个二重积分,但因为被积函数带有未知参数a,所以最后的结果是一个关于a的表达式.
被积函数是y=-0.004*x*(1-(z/6.25)^2)*exp(0.05*z*sec(a)).*(cos(0.05*x.*(sec(a)))+i*sin(0.05*x.*sec(a)));积分区间是x(0,100),z(-6.25,0),请问怎样求解出一个关于a的表达式,或者求出在不同a值下的积分值?
皈衣 1年前 已收到1个回答 举报

狂喷 花朵

共回答了16个问题采纳率:87.5% 举报

f = @(a) dblquad(@(x,z) -0.004*x.*(1-(z/6.25).^2).*exp(0.05*z*sec(a)).*(cos(0.05*x.*(sec(a)))+i*sin(0.05*x.*sec(a))),0,100,-6.25,0);
>> a=1;
>> f(a)
ans =
0.6541 -14.6963i
>> a = 3;
>> f(a)
ans =
40.0774 -19.3193i

1年前 追问

6

皈衣 举报

请问有没有什么办法可以直接求出一个关于a的表达式呢?因为后续还要用到这个表达式。 这么快给出解答,一定是高手,能不能告诉我你的QQ我好进一步请教。。?

举报 狂喷

那就得用符号计算了,最后结果表达式比较复杂。 >> syms a x z >> int(-0.004*x*(1-(z/6.25)^2)*exp(0.05*z*sec(a)).*(cos(0.05*x.*(sec(a)))+i*sin(0.05*x.*sec(a))),x,0,100) ans = (8*exp(z/(20*cos(a)))*cos(a)*(16*z^2 - 625)*(5*sin(5/cos(a)) - 5*cos(5/cos(a))*i - cos(a) + cos(a)*cos(5/cos(a)) + cos(a)*sin(5/cos(a))*i))/3125 >> int(ans,z,-6.25,0) ans = 32*cos(a)^3 - (16384*cos(a)^5)/25 + 160*cos(a)^2*cos(5/cos(a))*i - 32*cos(a)^3*cos(5/cos(a)) - (16384*cos(a)^4*cos(5/cos(a))*i)/5 + (16384*cos(a)^5*cos(5/cos(a)))/25 + (1024*cos(a)^4)/(5*exp(5/(16*cos(a)))) + (16384*cos(a)^5)/(25*exp(5/(16*cos(a)))) - 160*cos(a)^2*sin(5/cos(a)) - 32*cos(a)^3*sin(5/cos(a))*i + (16384*cos(a)^4*sin(5/cos(a)))/5 + (16384*cos(a)^5*sin(5/cos(a))*i)/25 + (1024*cos(a)^3*cos(5/cos(a))*i)/exp(5/(16*cos(a))) + (cos(a)^4*cos(5/cos(a))*((16384*i)/5 - 1024/5))/exp(5/(16*cos(a))) - (16384*cos(a)^5*cos(5/cos(a)))/(25*exp(5/(16*cos(a)))) - (1024*cos(a)^3*sin(5/cos(a)))/exp(5/(16*cos(a))) + (cos(a)^4*sin(5/cos(a))*(- (1024*i)/5 - 16384/5))/exp(5/(16*cos(a))) - (16384*cos(a)^5*sin(5/cos(a))*i)/(25*exp(5/(16*cos(a)))) 就按我说的那样做吧,这个题比较特殊能得到关于a的表达式,但很多复杂的情况下,是得不到a的表达式的。由于在计算机内部,函数都是接受输入得到输出,我们说的关于a的表达式和给定a之后在编程计算并无本质区别。 另外QQ就算了吧,不习惯在QQ上回答问题,那样不利于知识传播。推荐你去这个论坛看看:http://www.***.com/forum.php 里面有很多高手哦

皈衣 举报

假如由上面的二重积分求得的值表示为I+i*J(那么I和J都与a有关),接下来要对a计算一次积分,被积函数为(I^2+J^2).*((sec(a))^3),积分区间是-pi/2到pi/2,该怎么实现呢? 我之所以想要求出关于a的表达式,就是为了方便后面的对a积分。 感激不尽!

举报 狂喷

你看看你的被积函数,如果a达到pi/2的话,sec(a)为无穷,这样y中那个exp(0.05*z*sec(a))也会导致无穷。被积函数是奇异的。所以,我没有按你给的上下限计算。我按-1.5到1.5计算的。给你写了函数你参考下: function r = ForLenism(low,up) r = quadgk(@(a) arrayfun(@myfun,a).*((sec(a)).^3) ,low,up); %关于a的被积函数 function y = myfun(a) f = quad2d(@(x,z) -0.004*x.*(1-(z/6.25).^2).*exp(0.05*z*sec(a)).*(cos(0.05*x.*(sec(a)))+1i*sin(0.05*x.*sec(a))),0,100,-6.25,0); y = f*f';%f和f的共轭复数相乘,即I^2+J^2 用法说明: low是a的积分下限,up是上限。r是返回的最终积分结果。譬如下面, >> low = -1.5; >> up = 1.5; >> r = ForLenism(low,up) r = 4.059230653321597e+003 函数中quadgk还有quad2d需要比较新的MATLAB才有,起码应该是2009a以后的吧。 另外上面的代码如果有疑问请参考我的书http://baike.baidu.com/view/3858506.htm 积分的相关章节 当当上面有卖。
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.010 s. - webmaster@yulucn.com