| 查看: 2551 | 回复: 10 | ||
[求助]
matlab和fortran语言计算结果差别很大 已有1人参与
|
|
求助呀~ 同一个程序同一套数据为什么用fortran和用matlab计算的结果差很多? 第一次计算的结果基本一致,当迭代5000次以后结果竟然差了将近5倍。 这该怎么办呀?为什么会这样啊。。。要相信哪套结果? [ 发自手机版 http://muchong.com/3g ] |
» 猜你喜欢
基金申报
已经有5人回复
基金委咋了?2026年的指南还没有出来?
已经有7人回复
国自然申请面上模板最新2026版出了吗?
已经有17人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复
Materials Today Chemistry审稿周期
已经有5人回复
溴的反应液脱色
已经有7人回复
推荐一本书
已经有12人回复
常年博士招收(双一流,工科)
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:
大家有没有遇到过用同样方法算同一个东西,两次结果不一样的?
已经有12人回复
MATLAB并行运算提示出错
已经有4人回复
高分求将我的MATLAB程序改写为FORTRAN程序(1000BB)
已经有13人回复
为什么同样的设置,计算出的结果有时会相差很大呢?
已经有8人回复
matlab和内部工具箱使用有什么区别
已经有4人回复
科学计算首选语言是C++
已经有20人回复
Fortran输出二进制数据,用matlab读出,结果出错,求助问题何在?
已经有4人回复
Matlab与Fortran的科学计数法
已经有8人回复
fortran中如何调用matlab中求解特征值函数?
已经有9人回复
fortran程序运行结果输出及绘图
已经有9人回复
在不同服务器上运行Fortran程序得到不同的结果
已经有6人回复
编一个fortran程序
已经有17人回复
Fortran 求解复数矩阵SVD时,用到cgesvd,结果与matlab不同,为什么?
已经有15人回复
用Fortran编写程序输出的数据一般用什么程序作图比较好?
已经有28人回复
fortran 程序有write和没有write两种情况计算的结果为什么会不一样?
已经有14人回复
fortran数组输出,行与列请教
已经有7人回复
关于Fortran中的乘法和求逆比较
已经有10人回复
想学fortran语言,会点MATlab基础
已经有5人回复
一百个FORTRAN任务怎么能一次提交SSH计算
已经有3人回复
matlab 32位和64位 区别
已经有7人回复
大家帮我看一个fortran的程序,我总是计算不出正确的结果
已经有20人回复
如何改变fortran的浮点精度
已经有28人回复
【求助】Fortran语言赋值问题?
已经有3人回复
【求助】同样一个问题用matlab和fortran编程计算,结果相差比较大,不知道为什么
已经有4人回复
【求助】matlab读取fortran输出的txt文件【已解决】
已经有3人回复
2楼2015-04-20 09:20:56
|
matlab程序如下 function Lambda_1 = Wolf_lyap_timeseries(data,N,m,tau,DT,LMX,LMN,EVOLV) global LE; global ITS; % 该函数根据Alan Wolf 1985年发表的文章中附录B给出的fortran代码进行翻译 % Determining lyapunov exponents from a time series,Physica 16D,1985 % data:所求实验系统的时间序列 % N:data数据的长度 % m:相空间重构时的嵌入维数 % tau:相空间重构时的时间延迟(s) % DT:数据的采样间隔(s) % EVOLV:替换步之间的演化时间(s) % LE:时间序列的最大Lyapunov指数(bits/s) Y = reconstitution(data,N,m,tau); IND = 1; SUM = 0.0; ITS = 0; N = N - m * tau - EVOLV; % 寻找初始点的最近点,并计算最短距离DI DI = 1e+38; for i = 11 : N D = 0.0; for j = 1 : m D = D + (Y(j,IND)-Y(j,i))*(Y(j,IND)-Y(j,i)); end D = sqrt(D); if D > DI || D < LMN continue; else DI = D; IND2 = i; continue; end end % 确定演化后的坐标点 Lock = 1; while ( Lock ) for j = 1 : m PT1(j) = Y(j,IND+EVOLV); PT2(j) = Y(j,IND2+EVOLV); end % 计算演化后的距离DF DF = 0.0; for j = 1 : m DF = DF + (PT1(j)-PT2(j))*(PT1(j)-PT2(j)); end DF = sqrt(DF); ITS = ITS + 1; SUM = SUM + log(DF/DI)/(EVOLV*DT*log(2)); LE(ITS) = SUM/ITS; % 寻找替换点 INDOLD = IND2; Lock1 = 1; ZMULT = 1.0; ANGLMX = 0.3; while ( Lock1 ) THMIN = 3.14; for i = 1 : N iii = abs(i-(IND+EVOLV)); if iii > 10 DNEW = 0.0; for j = 1 : m DNEW = DNEW + (PT1(j)-Y(j,i))*(PT1(j)-Y(j,i)); end DNEW = sqrt(DNEW); if DNEW < ZMULT*LMX && DNEW > LMN DOT = 0.0; for j = 1 : m DOT = DOT + (PT1(j)-Y(j,i)*(PT1(j)-PT2(j))); end CTH = abs(DOT/DNEW*DF); if CTH > 1 CTH = 1; end TH = acos(CTH); if TH < THMIN THMIN = TH; DII = DNEW; IND2 = i; end end end end if THMIN > ANGLMX ZMULT = ZMULT + 1; if ZMULT > 5 ZMULT = 1.0; ANGLMX = ANGLMX*2; if ANGLMX > 3.14 IND2 = INDOLD + EVOLV; DII = DF; Lock1 = 0; end end else Lock1 = 0; end end IND = IND + EVOLV; if IND >= N Lambda_1 = LE(end); Lock = 0; else DI = DII; end end |
3楼2015-04-20 19:33:33
|
fortran程序如下: 这是Wolf文献中的,没有进行任何改变。 PROGRAM FET1 INTEGER DIM,TAU,EVOLV DIMENSION X(50000),PT1(30),PT2(30) ! ! **DEFINE DELAY COORDINATES WITH A STATEMENT FUNCTION** ! **Z(I,J)=JTH COMPONENT OF ITH RECONSTRUCTED ATTRACTOR POINT** ! Z(I,J) = X(I+(J-1)*TAU) ! OPEN (UNIT=1,FILE='a.txt',STATUS='OLD') OPEN (UNIT=20,FILE='result.txt',STATUS='OLD') ! TYPE*,'PLEASE INPUT NPT,DIM,TAU,DT,SCALMX,SCALMN,EVOLV' ACCEPT*,NPT,DIM,TAU,DT,SCALMX,SCALMN,EVOLV ! ! **IND POINTS TO FIDUCIAL TRAJECTORY** ! **IND2 POINTS TO SECOND TRAJECTORY** ! **SUM HOLDS RUNNING EXPONENT ESTIMATE SANS 1/TIME** ! **ITS IS TOTAL NUMBER OF PROPAGATION STEPS** ! IND = 1 SUM = 0.0 ITS = 0 ! ! **READ IN TIME SERIES** ! DO 10 I = 1,NPT READ (1,*) X(I) 10 CONTINUE ! ! **CALCULATE USEFUL SIZE OF DATAFILE ! NPT = NPT - DIM*TAU - EVOLV ! ! **FIND NEAREST NEIGHBOR TO FIRST DATA POINT** ! DI = 1.E38 ! ! **DONT TAKE POINT TOO CLOSE TO FIDUCIAL POINT** ! DO 30 I = 11,NPT ! ! **COMPUTE SEPARATION BETWEEN FIDUCIAL POINT AND CANDIDATE** ! D = 0.0 DO 20 J = 1,DIM D = D + (Z(IND,J)-Z(I,J))**2 20 CONTINUE D = SQRT(D) ! ! **STORE THE BEST POINT SO FAR BUT NO CLOSER THAN NOISE SCALE** ! IF (D.GT.DI.OR.D.LT.SCALMN) GO TO 30 DI = D IND2 = I 30 CONTINUE ! ! **GET COORDINATES OF EVOLVED POINTS** ! 40 DO 50 J = 1,DIM PT1(J) = Z(IND+EVOLV,J) PT2(J) = Z(IND2+EVOLV,J) 50 CONTINUE ! ! **COMPUTE FINAL SEPARTION BETWEEN PAIR,UPDATE EXPONENT** ! DF = 0.0 DO 60 J = 1,DIM DF = DF+(PT1(J)-PT2(J))**2 60 CONTINUE DF = SQRT(DF) ITS = ITS + 1 SUM = SUM + ALOG(DF/DI)/(FLOAT(EVOLV)*DT*ALOG(2.)) ZLYAP = SUM/FLOAT(ITS) TYPE*,ZLYAP,EVOLV*ITS,DI,DF WRITE(20,*) ZLYAP ! ! **LOOK FOR REPLACEMENT POINT** ! **ZMULT IS MULTIPLIER OF SCALMX WHEN GO TO LONGER DISTANCES** ! INDOLD = IND2 ZMULT = 1.0 ANGLMX = 0.3 70 THMIN = 3.14 ! ! **SEARCH OVER ALL POINTS** ! DO 100 I = 1,NPT ! ! **DONT TAKE POINTS TOO CLOSE IN TIME TO FIDUCIAL POINT** ! III = IABS(I-(IND+EVOLV)) IF (III.LT.10) GO TO 100 ! ! **COMPUTE DISTANCE BETWEEN FIDUCIAL POINT AND CANDIDATE** ! DNEW = 0.0 DO 80 J = 1,DIM DNEW = DNEW + (PT1(J)-Z(I,J))**2 80 CONTINUE DNEW = SQRT(DNEW) ! ! **LOOK FURTHER AWAY THAN NOISE SCALE,CLOSER THAN ZMULT*SCALMX** ! IF (DNEW.GT.ZMULT*SCALMX.OR.DNEW.LT.SCALMN) GO TO 100 ! ! **FIND ANGULAR CHANGE OLD TO NEW VECTOR** ! DOT = 0.0 DO 90 J = 1,DIM DOT = DOT + (PT1(J)-Z(I,J))*(PT1(J)-PT2(J)) 90 CONTINUE CTH = ABS(DOT/(DNEW*DF)) IF (CTH.GT.1.0) CTH = 1.0 TH = ACOS(CTH) ! ! **SAVE POINT WITH SMALLEST ANGULAR CHANGE SO FAR** ! IF (TH.GT.THMIN) GO TO 100 THMIN = TH DII = DNEW IND2 = I 100 CONTINUE IF (THMIN.LT.ANGLMX) GO TO 110 ! ! **CANT FIND A REPLACEMENT - LOOK AT LONGER DISTANCES** ! ZMULT = ZMULT + 1. IF (ZMULT.LE.5.) GO TO 70 ! ! **NO REPLACEMENT AT 5*SCALE,DOUBLE SEARCH ANGLE,RESET DISTANCE** ! ZMULT = 1.0 ANGLMX = 2.*ANGLMX IF (ANGLMX.LT.3.14) GO TO 70 IND2 = INDOLD + EVOLV DII = DE 110 CONTINUE IND = IND + EVOLV ! ! **LEAVE PROGRAM WHEN FIDUCIAL TRAJECTORY HITS END OF FILE** ! IF (IND.GE.NPT) GO TO 120 DI = DII GO TO 40 120 CALL EXIT END |
4楼2015-04-20 19:34:28
5楼2015-04-20 19:39:44
6楼2015-04-20 19:40:10
1120110239
银虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 686.6
- 红花: 4
- 帖子: 112
- 在线: 43.1小时
- 虫号: 2738470
- 注册: 2013-10-20
- 性别: GG
- 专业: 固体力学

7楼2015-04-20 19:50:29
8楼2015-04-20 19:58:34
9楼2015-04-20 20:01:50
thomas2011
铁杆木虫 (正式写手)
- 应助: 4 (幼儿园)
- 金币: 6696.9
- 散金: 241
- 红花: 7
- 帖子: 493
- 在线: 101.2小时
- 虫号: 1418471
- 注册: 2011-09-26
- 性别: GG
- 专业: 动力学与控制

10楼2015-11-05 10:38:36











回复此楼
