积分收敛问题
如果被积函数为NAN,但是用数学极限理论它是收敛的,并且极限为0 。在MATLAB里被视为NAN。这样一来,积分结果也为NAN 。这种情况怎么处理? 谢谢![ 本帖最后由 eight 于 2007-5-30 21:16 编辑 ] 你应该看看高数中的广义积分的概念,不要一味的用matlab,再看看数值计算中处理广义积分的方法吧.这个要自己编程. 原帖由 hunter_009 于 2007-5-30 21:07 发表 http://www.chinavib.com/forum/images/common/back.gif
你应该看看高数中的广义积分的概念,不要一味的用matlab,再看看数值计算中处理广义积分的方法吧.这个要自己编程.
你的意思是不能用MATLAB编?
我是自己编的,就是出现那种情况了!所以不行了!! 可以在matlab中编,只不过要特殊处理,不能简单的调用matlab的函数.
回复 #4 hunter_009 的帖子
我的程序:clear;
m=3.53*10^5;
EI=1.38*10^6;
K=1.7*10^8;
C=10^6;
E=1.5*10^9;
I=9.2*10^(-4);
Cs=6*10^9;
mu=16.67;
P=4.9*10^7;
n=(Cs*I)/(2*m);
e=C/(2*m);
a=2*n*e-EI/m;
b=e^2-K/m;
r1=-a/(2*n^2)-1/n*sqrt((a/(2*n))^2-b);
r2=-a/(2*n^2)+1/n*sqrt((a/(2*n))^2-b);
syms w hx t;
v1=-r2^(1/4);
v2=r2^(1/4);
u=16.67:166.7:1683.67;
v=1:10:101;
for s=1:length(u)
for j=1:length(v);
x=u(s);
t=v(j)
while(1)
n=100;
r=2;
e=1*e^-4;
Q2=vectorize(vpa(exp(-(n*w^4+e)*(t-h))*sinh(sqrt((n*w^4+e)^2-1/m*(EI*w^4+K))*(t-h))*cos(w*(x-mu*h))/sqrt((n*w^4+e)^2-1/m*(EI*w^4+K))));
B0=inf;
B1=dblquad(inline(Q2),0,t,v2,n);
while abs(B0-B1)>e
B0=B1;
n=n*r;
B1=dblquad(inline(Q2),0,t,v2,n);
end
B1
end
B1(s,j)=real(B1(s,j))
end
end
surf(u,v,B1)
hold on
grid on
xlabel('x')
ylabel('t')
zlabel('y')
title('函数图像')
还是不行!!帮忙看一下 怎么这个老问题还没有解决?
程序中存在明显问题: while(1)死循环,一定要记得用break跳出.
另:如果得到的是非数或有奇异性,可改用离散求和试试.
回复 #6 xjzuo 的帖子
对,问题是原函数弄到一定程度就是NAN,唉,我太衰了,导师都不耐烦了,郁闷死了。离散求和的原函数如果是这种得该怎么办?回复 #6 xjzuo 的帖子
谢谢大哥一直以来的帮助,今天灵感来了,运气也不错,居然出来了!!再一次感谢你!!:victory: :@P :@P
回复 #6 xjzuo 的帖子
答案出来,和结果不符合。原函数求和肯定是正数,这样直接为0 了。还有算Q2的过程中出现NAN,请高手帮我看看,程序有没有问题??clear;
m=3.53*10^5;
EI=1.38*10^6;
K=1.7*10^8;
C=10^6;
E=1.5*10^9;
I=9.2*10^(-4);
Cs=6*10^9;
mu=16.67;
P=4.9*10^7;
n=(Cs*I)/(2*m);
e=C/(2*m);
a=2*n*e-EI/m;
b=e^2-K/m;
r1=-a/(2*n^2)-1/n*sqrt((a/(2*n))^2-b);
r2=-a/(2*n^2)+1/n*sqrt((a/(2*n))^2-b);
u=16.67:166.7:1683.67;
v=1:10:101;
for s=1:length(u)
for j=1:length(v);
x=u(s);
t=v(j);
for w=1.2766:0.2:5.2766;
for h=0:0.05:t
for p=1:length(w)
for q=1:length(h)
Q2(p,q)=exp(-(n*w(p)^4+e)*(t-h(q)))*sinh(sqrt((n*w(p)^4+e)^2-1/m*(EI*w(p)^4+K))*(t-h(q)))*cos(w*(x-mu*h(q)))/sqrt((n*w(p)^4+e)^2-1/m*(EI*w(p)^4+K))
end
end
end
end
B1(s,j)=sum(Q2(:))*0.2*0.05
end
end 思路对了,不过程序还是有明显问题,请仔细检查.
-------还需要自己多调节一下步长,积分限什么的......
另: 建议计算前最好画一下被积函数的图形,以便了解什么地方存在奇异性.
[ 本帖最后由 xjzuo 于 2007-6-5 15:06 编辑 ]
回复 #10 xjzuo 的帖子
思路对了就好,谢谢了!!我再整整回复 #10 xjzuo 的帖子
麻烦你,再问一个问题:原函数求和是NAN了,看你的帖子的意思是用调积分限的办法。积分限是定了的,这样也可以调它的积分限?计算结果没问题吗??谢谢了! 我只是举个例子,调节步长什么的; 既然积分限已定,自然不要调了.
你的这个问题实在让人很怀疑是否可积-----调试发现相当古怪.
另: 去掉多余的 "for w=1.2766:0.2:5.2766; for h=0:0.05:t" 两个循环,
直接用"w=1.2766:0.2:5.2766; h=0:0.05:t" 向量式即可. ---自己试试,看能否得到结果.
我估计要寻求特殊的积分方法(奇异积分), 才能计算该问题.
回复 #13 xjzuo 的帖子
奇异积分??我又得整几天了,看看相关的!不过还是谢谢你,每次给我提供新的思路和想法!!
页:
[1]