插值多项式 简单例子 BIT数值分析5.9

本文介绍了一种使用多项式插值进行数值计算的方法,通过构建差分表并利用正插法和反插法计算未知点的值,实现对复杂函数的逼近。代码示例展示了如何使用Python实现这一过程,包括计算精度的控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

思路

按部就班

然后用数组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]
		t.append( tsum )
		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)

main()

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值