第一章客观的分析.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章客观的分析

客观分析 拉格朗日插值 FORTRAN程序 LAGINT.F ! !根据给定点的函数值,应用拉格朗日插值公式,计算指定插值点处的 !函数值。 !在指定点的前后各取四个结点,用七次拉格朗日插值公式。 !X,Y为输入参数,各有N个点 !T为指定插入点 !Z为输出参数,是插值点T处的近似值。 SUBROUTIONE LAGINT(X,Y,N ,T,Z) DIMENSION X(N),Y(N) DOUBLE PRECISION X,Y,T,X,S Z=0.0 IF (N.LE.0) RETURN IF(N.EQ.1) THEN Z=Y(1) ENDIF IF(N.EQ.2) THEN Z=(Y(1)*(T-X(2))-Y(2)*(T-X(1)))/(X(1)-X(2)) RETURN ENDIF I=1 IF(X(1) .LT. T) I=I+1 IF(I .LE. N) GOTO 10 ENDIF K=I-4 IF(K .LT. 1) K=1 M=I+3 IF( M .GT. N) M=N DO 30 I=K,M S=1.0 DO 20 J=K,M IF(J .NE. I) THEN S=S*(T-X(J))/(X(I)-X(J)) ENDIF 20 CONTINUE Z=Z+S*Y(I) 30 CONTINUE RETURN END 样条插值 FORTRAN程序 SPLINE.F ! SPLINE.FOR -- Natural Cubic Spline ! Call SplineCalculate with the two arrays of control points (and ! the number of elements in each array). To interpolate the spline, ! Call SplineEvaluate for each X for which you want a Y along the ! splines curve. ! subroutine SplineCalculate( inx, ina, numx ) !ms$if .not. defined(LINKDIRECT) !ms$attributes dllexport :: SplineCalculate !ms$endif implicit none real*4 ina(*), inx(*) integer numx integer MAXPOINTS parameter( MAXPOINTS = 1000 ) integer nxs real*4 x(0:MAXPOINTS) real*4 a(0:MAXPOINTS), b(0:MAXPOINTS) real*4 c(0:MAXPOINTS), d(0:MAXPOINTS) common /SplineData/ a, b, c, d, nxs, x integer i real*4 alpha(0:MAXPOINTS), l(0:MAXPOINTS) real*4 mu(0:MAXPOINTS), z(0:MAXPOINTS) real*4 h(0:MAXPOINTS) ! ===== Step 1 nxs = numx-1 do i = 0, nxs x(i) = inx(i+1) a(i) = ina(i+1) end do do i = 0, nxs-1 h(i) = x(i+1) - x(i) end do x(nxs+1) = 40000 ! ===== Step 2 do i = 1, nxs-1 alpha(i) = 3.0 * (a(i+1) * h(i-1)-a(i) * (x(i+1)-x(i-1)) + a(i-1) * h(i)) / (h(i-1) * h(i)) end do ! ===== Step 3 l(0) = 1.0 mu(0) = 0.0 z(0) = 0.0 ! ===== Step 4 do i = 1, nxs-1 l(i) = 2.0 * (x(i+1)-x(i-1))-h(i-1) * mu(i-1) mu(i) = h(i) / l(i) z(i) = (alpha(i)-h(i-1) * z(i-1)) / l(i) end do ! ===== Step 5 l(nxs) = 1.0 z(n

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档