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

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

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

[复制链接]

该用户从未签到

尚未签到

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

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

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

×
解微分方程运行后,出现的结果先是逐渐变大的数据,然后是变为无穷大Inf,接着就是NaN,这是怎么回事?有哪位知道啊?
! p9 V+ N( Q, V. K% U! j" t6 W其中一段的结果如下:* v2 M0 D& _7 {+ x$ e
/ N2 w: k, X( Z
-6.577334937091747730665057507568065230549384834272368050884038839567853*10^273,6 v* y9 \! ]  J2 E6 T0 F" q/ W
-5.139195757419310323174537703330917750350843564381075360877238710618581*10^291,! [" Q4 w* E. e3 ^, U6 ]8 x5 g
-Inf
* n! F7 c& R, S2 W6 Q. ?. hNaN% ^! j/ ?5 d  Z; E1 n9 E0 P1 h
NaN( w9 U2 X$ m' Y' j* ~0 U- x
NaN* J5 Y" m/ y6 S1 V. k

; f. S& p$ U1 B
9 d" w, z! _! y8 f% c! w是用龙格-库塔方法计算微分方程组得出的结果,程序如下:9 O  m0 Q! B! Q- Z& n$ g7 S
function R = wffcz(f,g,a,b,xa,ya,N,I)
4 {$ y) }& N8 t! Y. h) C%UNTITLED2 Summary of this function goes here
( G- d: ]  R/ |! Q9 Q2 u% Detailed explanation goes here' }0 D6 U/ o' M  O7 {
%x'=f(t,x,y) y'=g(t,x,y)9 X: L3 a. I; ?
%N为迭代次数6 n/ u5 B) M/ `: [) n
%h为步长. E/ d3 N) @. u# v' w. v
%ya,xa为初值
5 H0 q& J! Y! Q4 d# ~) @B1=2.652e+005;A1=2.922;+ W# k+ M6 I& Q" Q4 E& @. e
B2=2.233e+005;A2=1.442;( s5 H) F( Z2 @2 |7 r) \
R1=94.25;
4 Q' G8 R" _" v( I2 z" OC=6.897e-11;
7 v0 j! O0 F' C" [- H1 L, |+ cL1=21.75e-6;& C/ p! c0 l5 v  d
%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);
9 t  p: ~5 Y0 F4 ^& h- w( z8 af=@(t,x,y)((I-(x-((x-B1)/A1-y)*R1-B2)/A2-(x-B1)/A1)/C);" S% b7 f8 e  R
g=@(t,x,y)(((x-((x-B1)/A1-y)*R1-B2)/A2-y)*R1/L1);
0 \9 w4 {6 e: K. S. \4 m) ~h=(b-a)/N;8 ?' _8 W' c; B2 N
T=zeros(1,N+1);
- C( ~# S7 a  V- TX=zeros(1,N+1);
0 {( z& G0 K4 t) Z8 NY=zeros(1,N+1);
6 q* H( K  P% \4 _; k' wT=a:h:b;
' w# ]' m  [" G: T1 ~/ E. ?8 \X(1)=xa;0 n9 Q' D! X0 n! O; \$ a: v' e
Y(1)=ya;2 \. T0 R& M5 H% }- a' p. o1 V
for j=1:N) {0 w/ d! K' a& T- A% \
f1=vpa(feval(f,T(j),X(j),Y(j)),90);* _! t* ?6 V. ~, M
g1=vpa(feval(g,T(j),X(j),Y(j)),90);  |7 j- a/ _2 i& K2 f
f2=vpa(feval(f,T(j)+h/2,X(j)+h/2*f1,Y(j)+g1/2),90);
5 z- H6 X  b+ gg2=vpa(feval(g,T(j)+h/2,X(j)+h/2*f1,Y(j)+h/2*g1),90);0 M' _+ J( J8 o, z' `( J
f3=vpa(feval(f,T(j)+h/2,X(j)+h/2*f2,Y(j)+h*g2/2),90);% x; }- G* d" q
g3=vpa(feval(g,T(j)+h/2,X(j)+h/2*f2,Y(j)+h/2*g2),90);6 s1 G- M2 W9 J: L) T3 O8 `! j
f4=vpa(feval(f,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);
" s" ]/ F$ l& n& B* N8 Ug4=vpa(feval(g,T(j)+h,X(j)+h*f3,Y(j)+h*g3),90);( U/ ^& ]+ a. O) P: S; E
X(j+1)=vpa(X(j)+h*(f1+2*f2+2*f3+f4)/6,90);  V/ S0 ^% l) \# U
Y(j+1)=vpa(Y(j)+h*(g1+2*g2+2*g3+g4)/6,90);2 ]: o3 r& x* @3 }$ `
R=[T' X' Y'];
: ^# |, r" T+ k" P4 r2 f) ^0 Mend) |) Y0 ~4 r8 l
就不知道是程序问题还是硬件问题
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
  • TA的每日心情
    愤怒
    2021-6-12 00:00
  • 签到天数: 1657 天

    连续签到: 28 天

    [LV.Master]伴坛终老

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

    该用户从未签到

    尚未签到

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

    本版积分规则

    招聘斑竹

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

    GMT+8, 2026-4-30 13:35

    Powered by Discuz! X3.5 Licensed

    © 2001-2026 Discuz! Team.

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