當前位置:編程學習大全網 - 編程語言 - 如何用fortran用牛頓插值法插值n個數

如何用fortran用牛頓插值法插值n個數

F95。

彭的書有現成的程序。包括用sgl繪圖,函數可以自己變成多項式形式,可以參考:

模塊插值_實用程序

使用sgl

隱式無

打字點

真實的x,y

結束類型

實數,參數::PI=3.14159

實數,參數::xmin = 0.0,xmax = PI*3.0

整數,參數::N = 10,NP = 100

類型(點),保存::數據(N)

類型(點),保存::插值(NP)

real,save :: table(N,N),寬度

包含

!生成序列

子程序generated data(func)

實數,外部::func

實數r

整數I

寬度= (xmax-xmin)/(N-1)

r = 0

do i=1,N

數據(i)%x = r

數據(i)%y =函數(r)

r = r+寬度

結束do

結束子程序

!創建差異表

子程序BuildTable()

整數行,列,I

!實表(N,N)

表格= 0

do i=1,N

table(i,1) = datas(i)%y

結束do

do col=2,N

do row=1,N-col+1

表(行,列)=表(行+1,列-1) -表(行,列-1)

結束do

結束do

結束子程序

實函數牛頓(x,th,num)

真實x

整數th,num

實數、總和、系數

整數f,I,j

if(th+num-1 & gt;n)然後

寫(*,*)“數據點不足”

返回

如果…就會結束

牛頓=表(th,1)

s =(x-數據(th)% x)/寬度

f = 1

系數= 1.0

do i=1,num-1

f = f*i

coeff = coeff*(s-i+1)

牛頓=牛頓+系數*表(th,I+1)/實數(f)

結束do

結束功能

!繪圖功能

子程序顯示()

real,parameter :: size = 0.1

整數I

調用sglClearBuffer()

致電sglColor3i(255,255,255)

!用線段連接所有插值點。

do i=1,NP-1

調用sglLineV( interpolate(i)%x,interpolate(i)%y,& amp

插值(i+1)%x,插值(i+1)%y

結束do

調用sglColor3i(255,0,0)

!畫出n個數據點的位置

do i=1,N

調用sglLineV( datas(i)%x-size,datas(I)% y-size & amp;

數據(I)% x+大小,數據(I)% y+大小)

調用sglLineV( datas(i)%x+size,datas(I)% y-size & amp;

數據(i)%x大小,數據(I)% y+大小)

結束do

調用sglUpdateBuffer()

結束子程序

末端模塊

程序主

使用插值工具

隱式無

真實的、內在的::罪惡

真實xinc,x

整數I

調用GenerateData(sin)!生成數據點

調用BuildTable()

x=0

xinc = (xmax-xmin)/(NP-1)

do i=1,NP

插值(i)%x = x

插值(i)%y =牛頓(x,1,N)!插值f(x)的值

x = x+xinc

結束do

調用sglDisplaySub(顯示)

調用sglSetVirtual(xmin,2.0,xmax,-2.0)

致電sglCreateWindow(100,100,400,400,1)

調用sglMainLoop()

停止

結束程序

  • 上一篇:很黃很暴力的腦筋急轉彎與答案
  • 下一篇:告訴我golf1.8的數據
  • copyright 2024編程學習大全網