没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
2页
题目 思路 部分思路见注释 代码 # 三次样条插值 import sympy as sp # x = [-3, -1, 0, 3, 4] # y = [7, 11, 26, 56, 29] x = [0.25, 0.30, 0.39, 0.45, 0.53] y = [0.5000, 0.5477, 0.6245, 0.6708, 0.7280] lenx = len(x) num = [i for i in range(lenx)] h = [None] lamda = [None] * lenx miu = [None] * lenx d = [None] * lenx M = []
资源详情
资源评论
资源推荐
三次样条插值三次样条插值 简单例子简单例子 曲线拟合曲线拟合 BIT数值分析数值分析5.7
题目题目
思路思路
部分思路见注释
代码代码
# 三次样条插值
import sympy as sp
# x = [-3, -1, 0, 3, 4] # y = [7, 11, 26, 56, 29] x = [0.25, 0.30, 0.39, 0.45, 0.53] y = [0.5000, 0.5477, 0.6245, 0.6708, 0.7280] lenx = len(x)
num = [i for i in range(lenx)]
h = [None] lamda = [None] * lenx
miu = [None] * lenx
d = [None] * lenx
M = [] ans = [['*' for i in range(lenx)] for i in range(lenx)] ans[0] = ["*", "x**3系数", "2次方系数", "1次方系数", "常数项"] # for j in range(lenx):
# print(ans[j])
# 存放差商
cs1 = [] cs2 = [] cs3 = [] csetc = []
def save( l , y ):
if (l == 1 and y not in cs1):
cs1.append(y)
elif (l == 2 and y not in cs2):
cs2.append(y)
elif (l == 3 and y not in cs3):
cs3.append(y)
elif (y not in csetc):
csetc.append(y)
def chsh(n):
lenn = len(n)
# print('------', lenn, '-----,n:',n)
try:
if( lenn n)
for i in range(1, lenx):
ans[i][0] = "S"+ str(i) + "(x) "
ans[i][1] = ( M[i] - M[i-1] ) / ( 6 * h[i])
ans[i][2] = - ( M[i] * x[i-1] - M[i-1] * x[i] ) / (2 * h[i])
ans[i][3] = ( ( M[i] * x[i-1]**2 - M[i-1] * x[i]**2 ) / 2*h[i] \
- ( y[i-1] / h[i] - M[i-1] * h[i] / 6 ) \
+ ( y[i] /h[i] - M[i] * h[i] / 6 ))
ans[i][4] = (M[i-1] * x[i]**3 - M[i] * x[i-1]**3) / ( 6 * h[i]) \
+ ( y[i-1] /h[i] - M[i-1] * h[i] / 6 ) * x[i] \
- ( y[i] / h[i] - M[i] * h[i] /6) * x[i-1]
for j in range(lenx):
print(ans[j])
def main():
while(True):
try:
global mode
mode = eval(input("选择端点条件类型:1 二阶导数 2 一阶导数 --------"))
# 端点条件,自然样条也需要输入0
global dy0, dyn
dy0, dyn = eval(input("输入两端导数值dy0,dyn(用,分开):"))
print(f" dy0 = {dy0}, dyn = {dyn}")
# 准备 求差商表,存到二阶就行
print("准备 求差商表,存到二阶就行")
chsh(num)
print("--1阶", cs1)
print("--2阶", cs2)
# print("--3阶", cs3)
# print("--3+阶", csetc)
print(" 1&2 计算h、d、lamda、miu")
# 优先计算h,d和lamda、miu在后面
# 1 计算h
cal_h()
# 2 计算d、lamda、miu
cal_lamda_miu()
cal_d()
print(" hi:", h)
print(" λi: ", lamda)
weixin_38731239
- 粉丝: 5
- 资源: 895
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0