设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 1066|回复: 2

[讨论] 在微分方程计算过程中,结果中出现NaN,是怎么回事

[复制链接]

该用户从未签到

尚未签到

发表于 2013-2-28 17:14:03 | 显示全部楼层 |阅读模式

马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

您需要 登录 才可以下载或查看,没有账号?立即加入

×
解微分方程运行后,出现的结果先是逐渐变大的数据,然后是变为无穷大Inf,接着就是NaN,这是怎么回事?有哪位知道啊?
7 S# N4 u. l9 t: ~: E$ P* u( E其中一段的结果如下:
& e. ]$ O( q$ k& T& Z
( Y( s$ N- U6 j& `+ ?-6.577334937091747730665057507568065230549384834272368050884038839567853*10^273,
- y; X1 u6 z, |' F* J8 P. g6 F-5.139195757419310323174537703330917750350843564381075360877238710618581*10^291,9 K. R& j! W8 u; d5 v) f" ~2 u' _
-Inf7 i, ^+ q* f  _
NaN
: O% E/ R5 \) W* D% S# INaN2 O$ h3 H- c# P- ?- e2 `
NaN* L/ k6 O9 ?+ A

  b: N4 L* w; v! [. u! {7 B6 b6 y2 e% z. L6 d2 l
是用龙格-库塔方法计算微分方程组得出的结果,程序如下:( d, f+ E& R. r7 w( W
function R = wffcz(f,g,a,b,xa,ya,N,I)
/ P4 L% x8 S. q( N2 _; w3 F%UNTITLED2 Summary of this function goes here1 E) R4 x" I4 Q9 Y$ i- h
% Detailed explanation goes here
$ r- m* w8 X3 ~%x'=f(t,x,y) y'=g(t,x,y)7 i9 e) I1 K' L. B7 t2 E
%N为迭代次数
; t* L5 `- |6 v) E/ `+ z; {! Q  X%h为步长
- e8 }" V' m# y, ^* A%ya,xa为初值
$ q6 A6 y* Q7 E' |  E* YB1=2.652e+005;A1=2.922;2 A$ l- m. B& M+ s8 p) E
B2=2.233e+005;A2=1.442;
# q/ C4 ^$ ~/ W6 _2 BR1=94.25;  q; ~2 v6 L1 A7 Q1 Z7 s% z
C=6.897e-11;
' |/ Z2 ]4 W/ k5 Z) m* a6 ML1=21.75e-6;
2 m1 K0 f/ [' y7 p( P%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);! j" I$ W$ \. Y7 O6 c* o
f=@(t,x,y)((I-(x-((x-B1)/A1-y)*R1-B2)/A2-(x-B1)/A1)/C);
; T6 s5 r: x5 F4 v) z7 Ug=@(t,x,y)(((x-((x-B1)/A1-y)*R1-B2)/A2-y)*R1/L1);/ u* k+ o" @. q
h=(b-a)/N;* Y4 C2 K) i& a/ |+ v
T=zeros(1,N+1);1 X7 G$ z2 w: |; u' s/ E
X=zeros(1,N+1);3 _& u# p0 W2 _* e% y" t! k" y2 X
Y=zeros(1,N+1);1 B& S5 j- ?. ]9 D* k
T=a:h:b;
6 E, L- }; w( ]4 k+ mX(1)=xa;
' o: I. F8 o+ a- ?( @Y(1)=ya;5 d  E) q9 v# Q8 t( G
for j=1:N) n- R" f- D5 A8 ?
f1=vpa(feval(f,T(j),X(j),Y(j)),90);) f0 R/ J6 f1 r8 m9 x% p. [  d
g1=vpa(feval(g,T(j),X(j),Y(j)),90);4 d5 I& h4 X8 x. X$ W2 P. B
f2=vpa(feval(f,T(j)+h/2,X(j)+h/2*f1,Y(j)+g1/2),90);5 E/ _$ B3 L% f  B! V: S: v
g2=vpa(feval(g,T(j)+h/2,X(j)+h/2*f1,Y(j)+h/2*g1),90);
# X+ Z6 x, X* \8 V) Y, Sf3=vpa(feval(f,T(j)+h/2,X(j)+h/2*f2,Y(j)+h*g2/2),90);
, `7 `0 d( M9 k0 G4 lg3=vpa(feval(g,T(j)+h/2,X(j)+h/2*f2,Y(j)+h/2*g2),90);
( w6 M7 N4 V# ^3 I. i* }, _f4=vpa(feval(f,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
. @; [3 a4 P# h$ _g4=vpa(feval(g,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
! p6 c, B% O6 EX(j+1)=vpa(X(j)+h*(f1+2*f2+2*f3+f4)/6,90);
' C6 f1 d* P9 Q. P6 LY(j+1)=vpa(Y(j)+h*(g1+2*g2+2*g3+g4)/6,90);
& ^, A5 y- b. V1 gR=[T' X' Y'];+ X8 V) I/ d8 j% H% c* N- B
end" i7 p1 G. e: z/ s2 u6 O+ O
就不知道是程序问题还是硬件问题
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    愤怒
    2021-6-12 00:00
  • 签到天数: 1657 天

    连续签到: 28 天

    [LV.Master]伴坛终老

    累计签到:3031 天
    连续签到:9 天
    发表于 2013-3-1 00:36:11 | 显示全部楼层
    执行程序之前写一句“format long”,有可能是初值设的不好,另外为什么方程的系数这样大呢
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

    该用户从未签到

    尚未签到

    发表于 2013-3-1 08:23:30 | 显示全部楼层
    支持楼主~~~
    "真诚赞赏,手留余香"
    还没有人打赏,支持一下
    帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
    您需要登录后才可以回帖 登录 | 立即加入

    本版积分规则

    招聘斑竹

    小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

    GMT+8, 2026-3-19 19:26

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表