• 大小: 2KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-06
  • 语言: Python
  • 标签: python  

资源简介

使用python实现自然样条插值,并绘出图像

资源截图

代码片段和文件信息

__author__ = ‘xlluffy‘
import numpy as np
from matplotlib.pylab import *

point = []
#point = [(0 1) (1 2) (3 4) (4 5) (5 6) (6 7)]
n = 5
x = arange(0 5 0.01)
y a b c d h s  = [] [] [] [] [] [] []

def foo(x):
    return 2*sin(2*x) + 1

def getPoint():
    tmpX = [0 1.5 2.1 2.8 3.9 4.9]
    for i in tmpX:
        point.append((i foo(i)))

def init():
    for i in range(n+1):
        a.append(0)
        b.append(0)
        c.append(0)
        d.append(0)
        h.append(0)
        s.append(0)

def Hermite():
    init()
    for i in range(n):
        h[i] = point[i+1][0] - point[i][0]

    a[1] = 2*(h[0] + h[1])
    for i in range(2 n):
        a[i] = 2*(h[i-1] + h[i]) - h[i-1]*h[i-1]/a[i-1]

    for i in range(1 n+1):
        c[i] = (point[i][1] - point[i-1][1]) / h[i-1]

    for i in range(1 n):
        d[i] = 6*(c[i+1] - c[i])

    b[1] = d[1]
    for i in range(2 n):
        b[i] = d[i] - b[i-1]*h[i-1]/a[i]

    s[n-1] = b[n-1]/a[n-1]
  

评论

共有 条评论