源码

首页 » 归档 » 源码 » python – 从UnivariateSpline对象获取样条方程

python – 从UnivariateSpline对象获取样条方程


我正在使用UnivariateSpline为我拥有的某些数据构建分段多项式.然后我想在其他程序中使用这些样条(在C或FORTRAN中),因此我想了解生成样条函数背后的等式.

这是我的代码:

import numpy as np
import scipy as sp
from  scipy.interpolate import UnivariateSpline
import matplotlib.pyplot as plt
import bisect

data = np.loadtxt('test_C12H26.dat')
Tmid = 800.0
print "Tmid", Tmid
nmid = bisect.bisect(data[:,0],Tmid)
fig = plt.figure()
plt.plot(data[:,0], data[:,7],ls='',marker='o',markevery=20)
npts = len(data[:,0])
#print "npts", npts
w = np.ones(npts)
w[0] = 100
w[nmid] = 100
w[npts-1] = 100
spline1 = UnivariateSpline(data[:nmid,0],data[:nmid,7],s=1,w=w[:nmid])
coeffs = spline1.get_coeffs()
print coeffs
print spline1.get_knots()
print spline1.get_residual()
print coeffs[0] + coeffs[1] * (data[0,0] - data[0,0]) /
                + coeffs[2] * (data[0,0] - data[0,0])**2 /
                + coeffs[3] * (data[0,0] - data[0,0])**3, /
      data[0,7]
print coeffs[0] + coeffs[1] * (data[nmid,0] - data[0,0]) /
                + coeffs[2] * (data[nmid,0] - data[0,0])**2 /
                + coeffs[3] * (data[nmid,0] - data[0,0])**3, /
      data[nmid,7]

print Tmid,data[-1,0]
spline2 = UnivariateSpline(data[nmid-1:,0],data[nmid-1:,7],s=1,w=w[nmid-1:])
print spline2.get_coeffs()
print spline2.get_knots()
print spline2.get_residual()
plt.plot(data[:,0],spline1(data[:,0]))
plt.plot(data[:,0],spline2(data[:,0]))
plt.savefig('test.png')

这是由此产生的情节.我相信每个区间都有有效的样条线,但看起来我的样条方程不正确…我找不到任何关于scipy文档中应该是什么的引用.有人知道吗?谢谢 !

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/python-congunivariatesplineduixianghuoquyangtiaofangcheng.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9 月 20, 2019 at 05:41 上午

热评文章