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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
解微分方程运行后,出现的结果先是逐渐变大的数据,然后是变为无穷大Inf,接着就是NaN,这是怎么回事?有哪位知道啊?% {$ V( j+ |' {/ Q
其中一段的结果如下:+ r' a2 v+ w1 q+ Q' L
- u# n: C/ P9 d0 w# k
-6.577334937091747730665057507568065230549384834272368050884038839567853*10^273,( ^& e3 R7 `+ g2 x; |' o' I
-5.139195757419310323174537703330917750350843564381075360877238710618581*10^291,7 `% c, l! L  A% H+ g4 Y3 Z$ p
-Inf
  D6 C! C7 Z) u# n8 M; X) y; u: I0 gNaN
- u8 K% }9 {3 c/ t/ ]: H2 zNaN
" b2 G3 D# K& _* T0 e+ ?; `$ wNaN
# s* F. \8 M3 H8 M$ j* t" G" D' X. u+ T
: r; e( d8 L) D3 p( @
是用龙格-库塔方法计算微分方程组得出的结果,程序如下:
6 a, Q: R1 ?6 |. |function R = wffcz(f,g,a,b,xa,ya,N,I)
) P* b! T6 j) J; s" p  C$ P6 D%UNTITLED2 Summary of this function goes here
6 d; x3 w; T! K8 I" v% Detailed explanation goes here
7 O/ E! Y+ a- ]( j' s' F' I2 y4 Z%x'=f(t,x,y) y'=g(t,x,y)
! a, [+ Z2 [& l9 w' c* S7 E%N为迭代次数4 e$ K3 Z9 h- J* q( J! D: d; d
%h为步长; s5 n1 K- }5 ~$ ]5 d$ x
%ya,xa为初值" H2 r5 E+ l- u
B1=2.652e+005;A1=2.922;
4 m$ u# A1 q3 \4 UB2=2.233e+005;A2=1.442;# W( {: `' w- ^) G) [; j
R1=94.25;
9 J5 K* T: S* u  {: S" SC=6.897e-11;
8 o4 C/ G: |( P2 L$ Z& T* wL1=21.75e-6;
% U% v& ^# z" @( Y5 d; R/ n%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);
% y6 ?$ y  h* W% N5 V* Zf=@(t,x,y)((I-(x-((x-B1)/A1-y)*R1-B2)/A2-(x-B1)/A1)/C);; {! E- C8 `/ j# D
g=@(t,x,y)(((x-((x-B1)/A1-y)*R1-B2)/A2-y)*R1/L1);
  f5 O( Q9 H8 m  j3 th=(b-a)/N;
6 R2 {6 a  j& `T=zeros(1,N+1);
! `* K5 u! y2 E: w. ^X=zeros(1,N+1);
) A! f& o" S4 u$ T5 e9 ^3 K0 `Y=zeros(1,N+1);
! G9 F  e" p* |( f( S$ AT=a:h:b;
5 W( y7 o6 m+ W: E- x4 F+ f" vX(1)=xa;5 M1 {& u. U; E: H9 ]+ ?2 x
Y(1)=ya;# N1 k" Y3 V8 w3 W+ O' N" [/ s8 c
for j=1:N
) d0 }9 N1 Q/ G1 ^7 Q( x. K+ ff1=vpa(feval(f,T(j),X(j),Y(j)),90);
6 u# v: m2 g4 t0 u. n# Vg1=vpa(feval(g,T(j),X(j),Y(j)),90);
/ w( N9 \) I& k# Lf2=vpa(feval(f,T(j)+h/2,X(j)+h/2*f1,Y(j)+g1/2),90);
& u, S/ o" S7 L0 ]g2=vpa(feval(g,T(j)+h/2,X(j)+h/2*f1,Y(j)+h/2*g1),90);
" C# K; Z0 j3 ff3=vpa(feval(f,T(j)+h/2,X(j)+h/2*f2,Y(j)+h*g2/2),90);$ m% [) P/ l# q6 L
g3=vpa(feval(g,T(j)+h/2,X(j)+h/2*f2,Y(j)+h/2*g2),90);
1 Y! b: Y; E' L4 I! X" Sf4=vpa(feval(f,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
0 `' D+ x4 o/ B5 @& T) H3 T" Bg4=vpa(feval(g,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
6 S7 S2 L* b* c$ W7 T" c+ rX(j+1)=vpa(X(j)+h*(f1+2*f2+2*f3+f4)/6,90);( `2 B. ]; K* i9 n: n
Y(j+1)=vpa(Y(j)+h*(g1+2*g2+2*g3+g4)/6,90);
1 U- g3 t0 b3 l2 T6 H2 BR=[T' X' Y'];
+ F/ r9 `' F4 w# x2 `. Mend
" d) d! i4 M( d8 H' v就不知道是程序问题还是硬件问题
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    愤怒
    2021-6-12 00:00
  • 签到天数: 1657 天

    连续签到: 28 天

    [LV.Master]伴坛终老

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2025-8-18 03:43

    Powered by Discuz! X3.5 Licensed

    © 2001-2025 Discuz! Team.

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