爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8060|回复: 18

fortran 求趋势系数

[复制链接]

新浪微博达人勋

发表于 2014-8-31 19:13:20 | 显示全部楼层 |阅读模式
GrADS
系统平台:
问题截图: -
问题概况: 算出来的趋势系数尽然大于1,不知道程序哪错了,哪位能耐心看下,
我看过提问的智慧: 看过
自己思考时长(天): 1

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
program main
integer i,j
integer a(662,50),p(662),q(662)                      ******** 662个站点,50年的数据,所以时间的平均是25.5
real m(662)
real d(662)
open (1,file='8.31.txt')
do i=1,662
read(1,*) (a(i,j),j=1,50)
end do
do i=1,662
do j=1,50
m(i)=m(i)+a(i,j)
end do
m(i)=m(i)/50
!print *,m(i)
end do
print *,1111
do i=1,662
do j=1,50
p(i)=p(i)+(a(i,j)-m(i))*(j-25.5)
q(i)=q(i)+(a(i,j)-m(i))*(a(i,j)-m(i))*(j-25.5)*(j-25.5)
end do
end do
do i=1,662
d(i)=p(i)/sqrt(q(i)*1.0)
end do
open (2,file='1.txt')
do i=1,662
write(2,'(662f7.2)') d(i)
end do
end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-31 19:32:10 | 显示全部楼层
求和竟然都不赋初值0的,那可不就是大于1了么
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-31 19:35:30 | 显示全部楼层
river 发表于 2014-8-31 19:32
求和竟然都不赋初值0的,那可不就是大于1了么

我以为默认为0的 那也就是要将m(i),q(i),p(i),这些数组都先赋值为0是吧?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-31 19:44:25 | 显示全部楼层
believefuture 发表于 2014-8-31 19:35
我以为默认为0的 那也就是要将m(i),q(i),p(i),这些数组都先赋值为0是吧?

你好,我把这些数组赋值为0后,值还是没变还是>1,不知道哪错了program main
integer i,j
integer a(662,50)
real p(662),q(662),m(662),d(662)
open (1,file='8.31.txt')
do i=1,662
read(1,*) (a(i,j),j=1,50)
end do
do i=1,662
m(i)=0.0
p(i)=0.0
q(i)=0.0
d(i)=0.0
end do
do i=1,662
do j=1,50
m(i)=m(i)+a(i,j)
end do
m(i)=m(i)/50
!print *,m(i)
end do
print *,1111
do i=1,662
do j=1,50
p(i)=p(i)+(a(i,j)-m(i))*(j-25.5)
q(i)=q(i)+(a(i,j)-m(i))*(a(i,j)-m(i))*(j-25.5)*(j-25.5)
end do
end do
do i=1,662
d(i)=p(i)/sqrt(q(i)*1.0)
end do
open (2,file='2.txt')
do i=1,662
write(2,'(662f7.2)') d(i)
end do
end


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-31 19:55:59 | 显示全部楼层
赋初值是你这么赋的啊·····举个例子,比如你前面求和的那个赋初值
do i=1,662
m(i)=0.0
do j=1,50
m(i)=m(i)+a(i,j)
end do
m(i)=m(i)/50
!print *,m(i)
end do
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-31 20:18:23 | 显示全部楼层
river 发表于 2014-8-31 19:55
赋初值是你这么赋的啊·····举个例子,比如你前面求和的那个赋初值
do i=1,662
m(i)=0.0

大哥不要烦我,我还是不对

program main
integer i,j
integer a(662,50)
real p(662),q(662),m(662),d(662)
open (1,file='8.31.txt')
do i=1,662
read(1,*) (a(i,j),j=1,50)
end do
do i=1,662
m(i)=0.0
do j=1,50
m(i)=m(i)+a(i,j)
end do
m(i)=m(i)/50
!print *,m(i)
end do
print *,1111
do i=1,662
p(i)=0.0
q(i)=0.0
d(i)=0.0
do j=1,50
p(i)=p(i)+(a(i,j)-m(i))*(j-25.5)
q(i)=q(i)+(a(i,j)-m(i))*(a(i,j)-m(i))*(j-25.5)*(j-25.5)
end do
end do
do i=1,662
d(i)=p(i)/sqrt(q(i)*1.0)
end do
open (2,file='3.txt')
do i=1,662
write(2,'(662f7.2)') d(i)
end do
end




密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-8-31 20:44:37 | 显示全部楼层
p(i)=p(i)+(a(i,j)-m(i))*(j-25.5)
q(i)=q(i)+(a(i,j)-m(i))*(a(i,j)-m(i))*(j-25.5)*(j-25.5)

请问这个公式是哪里找来的呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-31 21:10:52 | 显示全部楼层
言深深 发表于 2014-8-31 20:44
p(i)=p(i)+(a(i,j)-m(i))*(j-25.5)
q(i)=q(i)+(a(i,j)-m(i))*(a(i,j)-m(i))*(j-25.5)*(j-25.5)

因为我是50年的数据,所以时间的平均值是(50+1)/2=25.5,公式是看的气象家园的帖子里的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-8-31 21:54:48 | 显示全部楼层
believefuture 发表于 2014-8-31 21:10
因为我是50年的数据,所以时间的平均值是(50+1)/2=25.5,公式是看的气象家园的帖子里的

趋势,不就是最小二乘法计算斜率?貌似公式不对吧,建议找统计书籍阅读。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-31 21:55:51 | 显示全部楼层
本帖最后由 river 于 2014-9-1 09:02 编辑
believefuture 发表于 2014-8-31 20:18
大哥不要烦我,我还是不对

program main

首先还有一个赋初值的问题,d(i)=0.0为什么要放在别的循环里啊,直接放在
do i=1,662
d(i)=p(i)/sqrt(q(i)*1.0)
end do
前面就可以了。剩下的就是你的趋势系数公式很奇怪感觉,你还是看一下现代气象统计预报里面的相关公式吧
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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