基础算法学习(03)-插值计算(拉格朗日插值法和牛顿插值法)
2017-10-12 21:30
316 查看
插值问题
1、算法作用
插值问题是一种软件开发中较为常见的问题,比如已知三个电流输出时采集到的三个采样电流,用软件的方法尽量精确地求出第四个输出时的采样电流。本质上,就是多项式的求解。多项式求解有很多数学上的方法,这里主要研究的是两种数学上的经典算法得出的计算机算法-拉格朗日插值法和牛顿插值法。最近工作中用到了,记下来作为笔记。2、C++实现
2.1.拉格朗日插值法
关于数学原理,维基百科讲得很不错https://zh.wikipedia.org/wiki/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E6%8F%92%E5%80%BC%E6%B3%95
简单来说就是把一种拆分多项式的方法,很便于计算机实现。
C++代码实现如下
//N是已知的,X是已知所有点的横坐标数组,Y是纵坐标数组,x是待求点的横坐标,返回值为待求点的纵坐标 double Lagrange(int N,double &X,double &Y,double x) { double result=0; for(int i=0;i<N;i++) { double temp=Y[i]; { if(i!=j) { temp = temp*(x-X[j]); temp = temp/(X[i]-X[j]); } } result += temp; } return result; }
2.2.牛顿插值算法
C++实现 4个值求第5个值double Newton4(double F1, double F2, double F3, double F4, double x1, double x2,double x3, double x4, double t ) { double f; f = F1 * (t - x2) * (t - x3) * (t - x4) / ((x1 - x2) * (x1 - x3) * (x1 - x4)); f = f + F2 * (t - x1) * (t - x3) * (t - x4) / ((x2 - x1) * (x2 - x3) * (x2 - x4)); f = f + F3 * (t - x1) * (t - x2) * (t - x4) / ((x3 - x1) * (x3 - x2) * (x3 - x4)); f = f + F4 * (t - x1) * (t - x2) * (t - x3) / ((x4 - x1) * (x4 - x2) * (x4 - x3)); return f; }
–本文仅供本人学习笔记之用,如有错误,望请指正。谢谢。
相关文章推荐
- 基础算法学习(04)-算法的时间复杂度计算简明笔记
- jQuery mobile 学习03 按钮基础
- JAVA基础day04 数组学习 排序和查找基本算法
- 【算法学习笔记】75. 动态规划 棋盘型 期望计算 1390 畅畅的牙签盒(改)
- 【算法学习笔记】11.数据结构基础 二叉树初步练习4
- 顺序程序设计03 - 零基础入门学习C语言09
- 基础算法学习之穷举
- 第三天03 JAVA基础语法(类型)(学习笔记)
- 寄存器(CPU工作原理)03 - 零基础入门学习汇编语言08
- C++基础算法学习——猜假币
- 深度学习基础模型算法原理及编程实现--06.循环神经网络
- #大学#SQL基础学习笔记(03)
- 机器学习&深度学习基础(机器学习基础的算法概述及代码)
- Dart基础学习03--方法的使用
- CUDA系列学习(五)GPU基础算法: Reduce, Scan, Histogram
- [算法学习]斐波那契数计算
- 神经网络和深度学习-第二周神经网络基础-第七节:计算图
- 直接定址表03 - 零基础入门学习汇编语言74
- 了不起的分支和循环03 - 零基础入门学习Python009
- 【Bootstrap基础学习】03 Bootstrap插件示例