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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
解微分方程运行后,出现的结果先是逐渐变大的数据,然后是变为无穷大Inf,接着就是NaN,这是怎么回事?有哪位知道啊?
6 U$ l8 D' r7 ^+ A8 m7 f( d/ ~1 G5 c9 E# t其中一段的结果如下:" ^# ^" h0 W: t" [% S) }
' K' A; c% H3 T& x, R1 N
-6.577334937091747730665057507568065230549384834272368050884038839567853*10^273,
* y; \) i* X# Z0 T-5.139195757419310323174537703330917750350843564381075360877238710618581*10^291,; g1 y7 F+ G; B" W/ x9 K
-Inf
$ n. `) c' {7 r9 `, TNaN- `& g1 l; A& w6 P
NaN) L. S. K4 |' ]- H  y* ~4 G
NaN( I) v! Y# M( d2 ^! h9 s

/ _' g6 n: N) w" z
7 ]7 W. U( n: o3 w5 [是用龙格-库塔方法计算微分方程组得出的结果,程序如下:/ J, `' l% \. ]1 y
function R = wffcz(f,g,a,b,xa,ya,N,I)
; h+ y" v5 }' A& R%UNTITLED2 Summary of this function goes here) b# N) k) n& F3 C; ]
% Detailed explanation goes here, e8 l; h2 U6 ], ^; ^+ p1 B; }
%x'=f(t,x,y) y'=g(t,x,y)$ O- r$ `3 Y3 f8 C
%N为迭代次数
0 E+ O! S& b, d%h为步长
! d5 s# @: }4 w( a6 K' _: d+ C%ya,xa为初值- l! `. J- J0 P0 R
B1=2.652e+005;A1=2.922;
6 i6 x+ k0 `# T* NB2=2.233e+005;A2=1.442;& s  j+ s  `- U$ P/ v+ E
R1=94.25;
" ^- O. `) p. ]& u) }& R/ Z" XC=6.897e-11;
2 p. D& ?# _9 [) R6 Y" ]L1=21.75e-6;
7 j. `+ o: e3 a* |3 ~%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);
) A" @& Y+ J. ]3 j# kf=@(t,x,y)((I-(x-((x-B1)/A1-y)*R1-B2)/A2-(x-B1)/A1)/C);
2 `. }4 K- R/ n: k" G; J5 Q) Xg=@(t,x,y)(((x-((x-B1)/A1-y)*R1-B2)/A2-y)*R1/L1);
) z: L; o: m4 T; ^$ Dh=(b-a)/N;
" v$ c# n3 Z7 F* m( dT=zeros(1,N+1);$ J; b2 p, ]/ _; @" c2 s7 I" }
X=zeros(1,N+1);. Y2 q( ^! {# |" l# U% @; k3 m9 n
Y=zeros(1,N+1);
0 K8 G/ X& Z% L0 Y6 {( F' {& }" S* F% nT=a:h:b;$ T; E" Q7 L0 z' e8 i7 e$ [
X(1)=xa;
! ~9 e9 e& o8 \# s' zY(1)=ya;# B0 n1 Q$ j$ ?$ h- M. a
for j=1:N; l& t8 `2 E* Y' t
f1=vpa(feval(f,T(j),X(j),Y(j)),90);0 q/ ]' R& Z: l8 Q2 g/ k" {6 ^
g1=vpa(feval(g,T(j),X(j),Y(j)),90);
, _# s  @, v3 [" N9 of2=vpa(feval(f,T(j)+h/2,X(j)+h/2*f1,Y(j)+g1/2),90);0 m  B5 J, P" {2 g
g2=vpa(feval(g,T(j)+h/2,X(j)+h/2*f1,Y(j)+h/2*g1),90);
, f+ k" u# f: g% [, m! T! D1 Bf3=vpa(feval(f,T(j)+h/2,X(j)+h/2*f2,Y(j)+h*g2/2),90);
. b" E, V) n3 e$ A/ H1 S& Sg3=vpa(feval(g,T(j)+h/2,X(j)+h/2*f2,Y(j)+h/2*g2),90);9 X+ a7 r* z& I2 x  z
f4=vpa(feval(f,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);3 b# `" m+ D4 I3 |% ^. ^
g4=vpa(feval(g,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
' i" T5 N& j1 ^  V$ l" b9 }7 QX(j+1)=vpa(X(j)+h*(f1+2*f2+2*f3+f4)/6,90);1 T7 e- j' X8 H* \: O2 `+ Q* f
Y(j+1)=vpa(Y(j)+h*(g1+2*g2+2*g3+g4)/6,90);7 j2 c1 F& k0 U! }
R=[T' X' Y'];
; k- L& w) C& ^* D8 j+ Dend
+ ~  w$ e" P5 b3 f就不知道是程序问题还是硬件问题
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    愤怒
    2021-6-12 00:00
  • 签到天数: 1657 天

    连续签到: 28 天

    [LV.Master]伴坛终老

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2025-6-7 03:08

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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