C代码牛顿插值

C代码牛顿插值,第1张

C代码牛顿插值

1、牛顿插值的作用

        牛顿插值是用于拟合曲线--在有限个点的条件下,拟合出一条平滑的曲线

        这里有个前提条件-输入的点必须无错误,也就是说牛顿插值并不能解决误差的问题

        插值有两个,一个叫拉格朗日插值,一个是牛顿插值,牛顿插值优胜于拉格朗日插值法

2、一些事项

2.1、笔者认为,牛顿插值可以分成两:1、磋商,2、计算某个点对应的坐标值;考虑到提升CPU的性能,所以应当先进行磋商,把磋商后的结果储存起来,然后计算点时就用磋商值直接计算

2.2、注意:插值次数不能大于等于已知点的个数,但是与所查数列长度有关,因此最佳值应是已知点个数减一。

3、话不多说-代码:

3.1、算法函数

#define pointMax 6 //已知点的个数

//牛顿插值第一步计算-差商 输入 x轴数据,y轴数据,ff储存数组,num插值次数
void Newton1(float xx[],float yy[],float ff[pointMax][pointMax],int num)
{
    unsigned char i,j;
    if(pointMax <= num + 1)
        num = pointMax - 1;
	
	for(i=0;i 

3.2、调用算法函数计算

void main(void)
{
    float x_aim;//任意x轴上的坐标点
    float y_aim;//x轴上某点对应的Y轴的坐标点 - 计算结果
    float x[pointMax] = {1,2,3,4,5,6};//已知x轴的坐标点-最好递增,不要有相等值
    float y[pointMax] = {1,2,3,4,5,6};//已知y轴点,与上一行x轴要对应
    float f[pointMax][pointMax];//储存磋商的值 其有效值在主对角线上
    //如:一节磋商值 f[1][1] ,二姐磋商值 f[2][2] 等
    Newton1(x,y,f,(pointMax-1));//磋商结果计算
    while(1)
    {
        x_aim = 4.25;//输入要计算的x轴坐标值
        y_aim = Newton2(x,f,x_aim,(pointMax-1));//计算:x_aim对应下的Y轴坐标
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5698363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存