- 积分
- 3652
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-4-22
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
下面这个是自己编写的程序,参考彭国伦的Fortran95的对雨滴谱gamma分布求最小方差法!
雨滴谱gamma分布形式为:N(D)=X1*D^(X2)*EXP(-X3*D),其中X1,X2,X3是三个参数,现需要用最小方差求三个参数,
文件“1.txt”是一条雨滴谱的数据。
现在存在问题是:拟合出的参数带回雨滴谱形式,发现和实际雨滴谱没有一点一致,不是最小方差法的拟合。
请问问大家是什么问题?
program fit
use IMSL
implicit none
integer, parameter::fileid=10
integer, parameter::rows=1
integer e,f,i,j,o,q,row,column
real,parameter::pi=3.15159
real N2(32,rows)
real :: d(32)=(/0.0625,0.1875,0.3125,0.4375,0.5625,0.6875,0.8125,& !雨滴谱直径
&0.9375,1.0625,1.1875,1.375,1.625,1.875,2.125,2.375,2.75,3.25,3.75,&
&4.25,4.75,5.5,6.5,7.5,8.5,9.5,11.0,13.0,15.0,17.0,19.0,21.5,24.5/)
integer, parameter :: INTCEP = 0 !0:是不计算函数和X轴交点;1:是计算函数和X轴的交点
integer, parameter :: NBASIS = 3 !应用函数由两个基本函数构成
integer, parameter :: NDATA = 32 !输入数据数目
integer, parameter :: IWT = 1 !使用数据N2中的值作为权重
real, external :: N !构建函数N
real P(INTCEP+NBASIS) !函数的系数
real SSE
open(fileid,file='1.txt',status="old")
open(15,file='three parameter.dat')
read(fileid,*) N2
call FNLSQ(N, INTCEP, NBASIS, NDATA, d, N2, IWT, N2, P, SSE)
write(*,"('N(d)='F5.2'*d**'F5.2'*exp('F5.2'*d)')") P
write(*,*) P
stop
end program
real function N(K, X)
implicit none
integer K
real X
select case(K)
CASE(1)
N = X
case(2) ! 第1种基本函数
N = x**x
case(3) ! 第2种基本函数
N = exp(x)
case default ! 错误的值
write(*,*) "unknown"
end select
return
end function
|
-
-
1.txt
162 Bytes, 下载次数: 23, 下载积分: 金钱 -5
雨滴谱
|