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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
解微分方程运行后,出现的结果先是逐渐变大的数据,然后是变为无穷大Inf,接着就是NaN,这是怎么回事?有哪位知道啊?
; A8 c7 T. j4 q1 a2 F( Q) {4 N' F其中一段的结果如下:
' L  W% n# i0 r% z$ h3 m' ^; N5 \2 L3 U
-6.577334937091747730665057507568065230549384834272368050884038839567853*10^273,
9 J/ Q1 S/ a- r  d( Y-5.139195757419310323174537703330917750350843564381075360877238710618581*10^291,
( S' A- L; J: n0 X3 o-Inf
8 c6 L# b/ N" A( W  {NaN! Q% H) p+ T% q" P/ p
NaN
' x) O, @9 R* @0 i4 d/ }# kNaN
7 F  D/ C! Z+ J: Z) x. Q; C0 v( h! H& {, h  h. O) ~
" Q, P) A/ c% M) R6 L" p
是用龙格-库塔方法计算微分方程组得出的结果,程序如下:
8 y( o* a; i3 D5 K+ |4 w8 Vfunction R = wffcz(f,g,a,b,xa,ya,N,I)+ g; m- v, E9 L6 N
%UNTITLED2 Summary of this function goes here
& s6 b( f8 {/ X9 n) W9 _3 n: s! i5 n% Detailed explanation goes here! l5 |" w+ b, Z7 p" t
%x'=f(t,x,y) y'=g(t,x,y)7 x1 ~) H  T- ^) f/ B$ n. B2 ]
%N为迭代次数8 e( d  h# T( o$ c+ G
%h为步长
7 v' g% F2 H% U2 j+ O& z%ya,xa为初值, j; Y# d& A, k# b2 i/ A4 o; D
B1=2.652e+005;A1=2.922;
" q0 ]% C/ H2 B& P) r% K9 |, tB2=2.233e+005;A2=1.442;
0 d2 P2 H4 W/ h0 W6 v9 |5 hR1=94.25;" I4 r) R7 ?# C3 k
C=6.897e-11;
; |( Y- ~9 g+ m- y% ]! x' uL1=21.75e-6;
$ x, k8 @2 a4 E9 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);0 x& h9 c( I. U
f=@(t,x,y)((I-(x-((x-B1)/A1-y)*R1-B2)/A2-(x-B1)/A1)/C);
6 p4 N' K9 |' j" M2 R5 a& e: ug=@(t,x,y)(((x-((x-B1)/A1-y)*R1-B2)/A2-y)*R1/L1);
  f, ]/ N0 O' q; Ah=(b-a)/N;5 v0 V9 B7 X8 ~  R5 v' J/ q5 u
T=zeros(1,N+1);
: [$ K4 [7 X: y6 V; e0 zX=zeros(1,N+1);
9 x3 j1 S) M8 ?$ y' a) R: u' X( YY=zeros(1,N+1);8 V/ c- o2 W9 K2 S3 Q/ x& b9 ~+ ]
T=a:h:b;* W& d2 `, X- }6 b7 N
X(1)=xa;- B/ p1 w$ B- l+ Q
Y(1)=ya;! o! |" v( Y5 O* L3 b- b
for j=1:N3 @. t  f* a% ~8 r, y2 c4 A( M
f1=vpa(feval(f,T(j),X(j),Y(j)),90);3 {7 A- f: Q% {
g1=vpa(feval(g,T(j),X(j),Y(j)),90);; Z! F% E; t) E& q5 Z/ [8 z
f2=vpa(feval(f,T(j)+h/2,X(j)+h/2*f1,Y(j)+g1/2),90);) B9 a' x2 p- O# r1 {; @
g2=vpa(feval(g,T(j)+h/2,X(j)+h/2*f1,Y(j)+h/2*g1),90);
$ e8 U/ _/ G" n2 c3 lf3=vpa(feval(f,T(j)+h/2,X(j)+h/2*f2,Y(j)+h*g2/2),90);  ~5 l3 N- T5 e% V# y, i
g3=vpa(feval(g,T(j)+h/2,X(j)+h/2*f2,Y(j)+h/2*g2),90);) V# O! A( `+ C" @  V
f4=vpa(feval(f,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);* b. D* [5 D7 b! n, G& l$ ]
g4=vpa(feval(g,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);# Y0 X8 d7 o0 j* ^0 H& H
X(j+1)=vpa(X(j)+h*(f1+2*f2+2*f3+f4)/6,90);' |) n$ y: }+ c! b$ T
Y(j+1)=vpa(Y(j)+h*(g1+2*g2+2*g3+g4)/6,90);6 l( R7 ]+ |) ^
R=[T' X' Y'];
0 j$ a7 [. ?1 c* `6 n8 Qend. E3 y' q( |/ s" d, r% \4 ]8 Y
就不知道是程序问题还是硬件问题
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    愤怒
    2021-6-12 00:00
  • 签到天数: 1657 天

    连续签到: 28 天

    [LV.Master]伴坛终老

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2025-4-22 04:06

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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