2019年2月22日 星期五

Julia語言 例題1-9 已知六點的座標值 使用牛頓內插法求差除表?

Julia語言 例題1-9 已知六點的座標值 使用牛頓內插法求差除表?

多項式內插法
x        f(x)
=============
0.0      -6.0
0.1      -5.89483
0.3      -5.65014
0.6      -5.17788
1.0      -4.28172
1.1      -3.99583
=============

程式
using Printf
x= [0.0 , 0.1 , 0.3 ,0.6 , 1.0  , 1.1]
f= [[-6.0     ,     0.0   ,0.0  ,0.0 ,0.0 ,0.0 ],
    [-5.89483 ,     0.0   ,0.0  ,0.0 ,0.0 ,0.0 ],
    [-5.65014 ,     0.0   ,0.0  ,0.0 ,0.0 ,0.0 ],
    [-5.17788 ,     0.0   ,0.0  ,0.0 ,0.0 ,0.0 ],
    [-4.28172 ,     0.0   ,0.0  ,0.0 ,0.0 ,0.0 ],
    [-3.99583 ,     0.0   ,0.0  ,0.0 ,0.0 ,0.0 ]]

n=length(x)
println("  Divided Difference Table: ")
println("=============================")
for j=2:n
    for i=1:n-j+1
        f[i][j]=(f[i+1][j-1]-f[i][j-1])/(x[i+j-1]-x[i])
    end
end   

print("i\tx(i)\t\tf(i)\t\tf(i,i+1)\tf(i,i+1.i+2),  ......................\n")
for i=1:n
    s=@sprintf("%d\t%8.5f",i,x[i])
    print(s)
    for j=1:n-i+1
        s=@sprintf("\t%8.5f",f[i][j])
        print(s)
    end
    println()
 
end




輸出畫面
  Divided Difference Table: 
=============================
i x(i)  f(i)  f(i,i+1) f(i,i+1.i+2),  ......................
1  0.00000 -6.00000  1.05170  0.57250  0.21500  0.06302  0.01416
2  0.10000 -5.89483  1.22345  0.70150  0.27802  0.07859
3  0.30000 -5.65014  1.57420  0.95171  0.35661
4  0.60000 -5.17788  2.24040  1.23700
5  1.00000 -4.28172  2.85890
6  1.10000 -3.99583

沒有留言:

張貼留言

WOKWI DHT22 & LED , Node-Red + SQLite database

 WOKWI DHT22 & LED , Node-Red + SQLite database Node-Red程式 [{"id":"6f0240353e534bbd","type":"comment&...