在微分方程计算过程中,结果中出现NaN,是怎么回事
解微分方程运行后,出现的结果先是逐渐变大的数据,然后是变为无穷大Inf,接着就是NaN,这是怎么回事?有哪位知道啊?其中一段的结果如下:
-6.577334937091747730665057507568065230549384834272368050884038839567853*10^273,
-5.139195757419310323174537703330917750350843564381075360877238710618581*10^291,
-Inf
NaN
NaN
NaN
是用龙格-库塔方法计算微分方程组得出的结果,程序如下:
function R = wffcz(f,g,a,b,xa,ya,N,I)
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
%x'=f(t,x,y) y'=g(t,x,y)
%N为迭代次数
%h为步长
%ya,xa为初值
B1=2.652e+005;A1=2.922;
B2=2.233e+005;A2=1.442;
R1=94.25;
C=6.897e-11;
L1=21.75e-6;
%f=@(t,x,y)((25079999999999999898935095034332140556544638976*t^9 - 3116000000000000083537608917399754195861504*t^8 + 164799999999999990698756673337884147712*t^7 - 4823999999999999755901658355204096*t^6 + 83320000000000003537039785984*t^5 - 770099999999999994757120*t^4 + 3330000000000000000*t^3 - 94230000000000*t^2 + 1885000000*t + 1847/50-(x-((x-B1)/A1-y)*R1-B2)/A2-(x-B1)/A1)/C);
f=@(t,x,y)((I-(x-((x-B1)/A1-y)*R1-B2)/A2-(x-B1)/A1)/C);
g=@(t,x,y)(((x-((x-B1)/A1-y)*R1-B2)/A2-y)*R1/L1);
h=(b-a)/N;
T=zeros(1,N+1);
X=zeros(1,N+1);
Y=zeros(1,N+1);
T=a:h:b;
X(1)=xa;
Y(1)=ya;
for j=1:N
f1=vpa(feval(f,T(j),X(j),Y(j)),90);
g1=vpa(feval(g,T(j),X(j),Y(j)),90);
f2=vpa(feval(f,T(j)+h/2,X(j)+h/2*f1,Y(j)+g1/2),90);
g2=vpa(feval(g,T(j)+h/2,X(j)+h/2*f1,Y(j)+h/2*g1),90);
f3=vpa(feval(f,T(j)+h/2,X(j)+h/2*f2,Y(j)+h*g2/2),90);
g3=vpa(feval(g,T(j)+h/2,X(j)+h/2*f2,Y(j)+h/2*g2),90);
f4=vpa(feval(f,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
g4=vpa(feval(g,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
X(j+1)=vpa(X(j)+h*(f1+2*f2+2*f3+f4)/6,90);
Y(j+1)=vpa(Y(j)+h*(g1+2*g2+2*g3+g4)/6,90);
R=;
end
就不知道是程序问题还是硬件问题 执行程序之前写一句“format long”,有可能是初值设的不好,另外为什么方程的系数这样大呢 支持楼主~~~
页:
[1]