插值多項式 簡單例子 BIT數值分析5 9

2021-10-04 21:59:14 字數 1715 閱讀 9310

按部就班

然後用陣列t儲存 t 的多項式的係數,再計算每一項然後累加

精度要求只需要delta(t) < 0.5*10**( - 小數點位數),即可

import numpy as np

# 5.9

xs = [2.4, 2.5, 2.6]

ys = [[ '*' for i in range(len(xs)) ] for j in range(len(xs))]

ys[0] = [0.0025, -0.0484, -0.0968]

# ys 每行就是行序號階的差分

# 差分

def chf(y):

l = len(xs)

for i in range( 1 , l ):

for j in range( 0 , l-i ):

# print("i,j:",i,',',j,)

y[i][j] = y[i-1][j+1] - y[i-1][j]

def jiech(n):

ans = 1

for i in range(1, n+1):

ans *= i

return ans

def cal_t(c):

t[0] = ( c-ys[0][0] ) / ys[1][0]

for i in range(1, len(xs)-1):

temp = ys[i+1][0] / ( jiech(i+1) * ys[1][0] )

t[i] = temp

print(" t :", t)

def cal_t(lim):

yu = 999

t[0] = t[0]

i = 1

while( yu >= lim ):

tsum = t[0]

temp = t[i-1]

for j in range(1, len(t)):

for k in range(1, len(t)):

temp *= (temp - k)

tsum -= temp * t[j]

yu = abs(t[i] - t[i-1])

print(" delta t : ", yu)

i += 1

print(" t : ", t)

# 正插xs,反插ys

def main():

chf(ys)

for i in range(len(ys[0])):

print(ys[i])

print("差分表:\n", np.transpose(ys))

# c = eval(input("輸入c:"))

c = 0

global t,t

t = ['*'] * (len(xs) - 1)

t = [0]

cal_t(c)

cal_t(0.0005)

h = xs[1] - xs[0]

ans = xs[0] + t[-1] * h

print(" 結果 x 約等於 => ", ans)

插值多項式例子

給定函式 ex 在區間 1,1 上的資料表如下 x 101 f x 0.3679 1.0000 2.7182f x 0.3679 1.0000 2.7182 給出 hermite 插值多項式,並計算其誤差。mathematica code create by zzw clear f,f1,a her...

lagrange插值多項式

簡潔版 hanshu input 請輸入函式f x s fprintf 請輸入差值區間最小值 n xmin input fprintf 請輸入差值區間最大值 n xmax input fprintf 請輸入等分份數 n n input fprintf 請輸入自變數x n xin input h xm...

實驗三 牛頓插值多項式

實驗三 牛頓插值多項式 實驗內容 天安門廣場公升旗的時間是日出的時刻,而降旗的時間是日落時分,根據天安門廣場管理委員會的公告,某年10月份公升降旗的時間如下 日期 1 15 22 公升旗 6 09 6 23 6 31 降旗 17 58 17 36 17 26 根據上述資料構造newton插值多項式,...