Fortran Coder

查看: 22701|回复: 11
打印 上一主题 下一主题

[求助] 每隔不同时间段的位移量平方的总和--问题

[复制链接]

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
跳转到指定楼层
楼主
发表于 2014-4-29 10:54:35 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
我想下面数据的每隔不同时间段的位移量平方的总和,例如每隔0.01秒,找一个接近这个时间的数据求这个时间的位移和上个时间,就是0.01秒之前那个位置的位移的平方,我不知道我的逻辑对不对,然后运行出来有问题,请大神帮我看下
数据
  10.00000       10.00000      0.0000000E+00
   9.560000       12.60000      4.0826998E-03
   6.560000       10.72000      5.7680998E-03
   8.000000       10.80000      9.9683004E-03
   9.880000       9.800000      1.1211000E-02
   8.880000       10.80000      1.4416700E-02
   9.360000       11.44000      1.6414599E-02
   7.480000       11.40000      1.8196600E-02
   8.600000       10.44000      2.1517800E-02
   10.04000       9.960000      2.4316000E-02
   8.960000       10.96000      2.7926801E-02
   8.360000       10.52000      3.0301800E-02
   9.440000       10.40000      3.3982001E-02
   10.36000       10.52000      3.5854898E-02
   12.60000       11.48000      3.9078299E-02
   9.040000       9.920000      4.2032901E-02
   8.920000       10.04000      4.6360001E-02
   8.200000       10.12000      4.9344700E-02
   8.880000       8.960000      5.1477201E-02
   8.640000       9.360000      5.4022800E-02


程序
[Fortran] 纯文本查看 复制代码
program example
     implicit none
     integer :: i , o
     real :: x , y  , l , m , n , t , s ,d
     real :: x1 , x2 , y1 , y2 , t1 , t2 , t0
     d = 0
     s = 0
     x = 0
     y = 0
     open ( 13 , File = '222.txt' )
     do o = 1 , 100
         t = o * 0.01
             do i = 1 ,100
                 read ( 13 , * ) x1 , y1 , t1
                 read ( 13 , * ) x2 , y2 , t2
                 d = ( t1 - t ) * ( t1 - t ) - ( t2 - t ) * ( t2 - t )
                 if ( d < 0 ) then 
                 l = ( x1 - x ) * ( x1 - x ) + ( y1 - y ) * ( y1 - y )
                 s = s + l
                 else 
                 end if
                 x = x1
                 y = y1
             end do
     end do
     close( 13 )
     write ( * ,* ) s
     end program example

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
沙发
 楼主| 发表于 2014-4-30 05:02:46 | 显示全部楼层
chuxf 发表于 2014-4-29 13:44
1.你的数据三列各代表什么?
2.你的程序运行后有何问题?

分别是x轴坐标,y轴坐标,时间。运行后直接错误然后退出。。

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
板凳
 楼主| 发表于 2014-4-30 09:53:56 | 显示全部楼层
fcode 发表于 2014-4-30 08:42
文件结束的情况你没判断吧?

根据你的数据,我把 write(* , * ) s 移动到 if ( d < 0 ) then 里面去,输出 ...

我想要的是一个s的值,S是所有距离平方的和,比如如果要找最接近0.02秒间隔的和,就是找出最接近0.02,0.04,0.06,0.08,0.1....这些时间的位置,然后用0.02秒x轴的的位置减去0时间x轴的位置的平方,加上0.02秒y轴的的位置减去0时间y轴的位置的平方,就是每一个l, 0.04和0.02的位移平方又是一个l,类推,所有这些l的和就是s,我想得到的就是这个s,我不知道我的逻辑对不对,好像有点问题又不知道哪里有问题

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
地板
 楼主| 发表于 2014-4-30 09:54:40 | 显示全部楼层
pasuka 发表于 2014-4-30 08:07
lz先把两个do循环的次数从100变到10再看看吧

试过了,还是不对

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
5#
 楼主| 发表于 2014-5-1 05:38:20 | 显示全部楼层
fcode 发表于 2014-4-30 15:14
对不起,理解不了。建议你仅以一个数据来距离说明。不要一会 0.02,一会0.04,一会0.08 的 ...

10.00000       10.00000      0.0000000E+00
   9.560000       12.60000      4.0826998E-03
   6.560000       10.72000      5.7680998E-03
   8.000000       10.80000      9.9683004E-03
   9.880000       9.800000      1.1211000E-02
   8.880000       10.80000      1.4416700E-02
   9.360000       11.44000      1.6414599E-02
   7.480000       11.40000      1.8196600E-02
   8.600000       10.44000      2.1517800E-02
就比如以上数据,红字是我想要找出来的数据,时间间隔是0.01秒,就是最接近0.01,0.02的值,然后可以得到0.01秒,0.02秒时间的x,y轴坐标,比如 t=0 就是 (10,10),t=0.01时是(8,10.8), t=0.02时是(8.6,10.44),然后我相求的就是每一个时间的位移的平方和,比如0到0.01是(10-8)*(10-8)+(10-10.8)*(10-10.8),0.01到0.02时就是(8.6-8)*(8.6-8)+(10.44-10.8)*(10.44-10.8),以此类推,0.02到0.03,0.03到0.04。。。。我就想求这些所有的位移的平方和的和,就是 (10-8)*(10-8)+(10-10.8)*(10-10.8)+(8.6-8)*(8.6-8)+(10.44-10.8)*(10.44-10.8)+............

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
6#
 楼主| 发表于 2014-5-1 13:13:43 | 显示全部楼层
fcode 发表于 2014-5-1 08:13
另外,你确定是平方和?
s = s + (pst%x - stLastRec%x)**2 + (pst%y - stLastRec%y)**2
而不是平方和的平 ...

嗯,就是平方和,是求一个扩散系数用的,已经对了,我再好好研究下,里面有些用法还不太懂,不过结果应该对了,谢谢啦
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-11 13:34

Powered by Tencent X3.4

© 2013-2024 Tencent

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