- 积分
- 38420
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-20
- 最后登录
- 1970-1-1
成长值: 0
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 言深深 于 2011-10-17 09:18 编辑
闲来无事,写了一小段一维插值程序
其中二维数组x(n,2)有两列,第一列表示横坐标,第二列表示纵坐标;y(n-1,2)存放的是得到新点(蓝点)的坐标,第一列表示横坐标,第二列为纵坐标,n是数据个数;z是输出数组,共有2n-1个需要说明的是,我们插值得到的数值并不能做到完全在理想的曲线上面,只能说是比较近似
subroutine insert_point(x,n,z)
real*8 x(n,2),y(n-1,2),z(2*n-1,2)
y(1,1)=(x(1,1)+x(2,1))/2
y(1,2)=((x(1,2)+x(2,2))/2+(x(2,2)-(x(3,2)-x(2,2))/(x(3,1)-x(2,1))*((x(2,1)-x(1,1))/2.0)))/2
do i=1,n-2
y(i+1,1)=(x(i+1,1)+x(i+2,1))/2
y(i+1,2)=((x(i+1,2)+x(i+2,2))/2+(x(i+1,2)+(x(i+1,2)-x(i,2))/(x(i+1,1)-x(i,1))*((x(i+2,1)-x(i+1,1))/2.0)))/2
enddo
do i=1,n-1
z(2*i,1)=y(i,1)
z(2*i,2)=y(i,2)
z(2*i-1,1)=x(i,1)
z(2*i-1,2)=x(i,2)
enddo
z(2*n-1,1)=x(n,1)
z(2*n-1,2)=x(n,2)
end
|
|