根据给定的公式创建三次样条

如何解决根据给定的公式创建三次样条

因此,我首先尝试使用以下公式从头开始编写三次样条曲线 主要问题是如何正确实施mk的公式

https://i.stack.imgur.com/4oxTH.png [2]:https://i.stack.imgur.com/klqLc.png

a0-a3是多项式的系数

我的代码看起来像这样:

a0=[]
    a1=[]
    a2=[]
    a3=[]

    hk=[]
    dk=[]
    ro=[]
    lam=[]
    
    mk=np.zeros(len(x))

    for p in range(len(x)-1):
        hk.append(x[p+1]-x[p])
        dk.append(y[p+1]-y[p])
       
    for i in range(len(x)-1):  
            if i == 0:
                ro.append(hk[i-1]/(hk[i-1]+hk[i]))
                lam.append(hk[i]/(hk[i-1]+hk[i]))
                mk[0]=dk[0]/hk[0]-(mk[i-1]*ro[i]/2)
            else:
                ro.append(hk[i-1]/(hk[i-1]+hk[i]))
                lam.append(hk[i]/(hk[i-1]+hk[i]))
                w=(3*(dk[i]-dk[i-1])/(hk[i-1]+hk[i]))
                mk[i]=w-(mk[i-1]*ro[i]/2)
            
    for h in range(len(x)-2,-1,-1):
    
        mk[h]=mk[h]-(mk[h+1]*lam[h]/2)

    i=0        
    for i in range(len(x)-1):
        b0=(y[i])

        g=(hk[i]*(2*mk[i]+mk[i+1])/6)

        b1=dk[i]-g
        b2=(mk[i]/2)
        
        b3=(mk[i+1]-mk[i])/(6*hk[i])

        a0.append(b0-(b1*x[i])+(b2*x[i]*x[i])-(b3*x[i]*x[i]*x[i]))
        a1.append(b1-(2*b2*x[i])+(3*b3*x[i]*x[i]))
        a2.append(b2-(3*b3*x[i]))

        a3.append(b3)


    return (a0,a1,a2,a3)

根据公式,我几乎可以确定所有实现(不计算mk变量)都是正确的 所以主要问题是如何正确实施mk的公式

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?