拉格朗日插值
来源:互联网 发布:获取二维码扫描枪数据 编辑:程序博客网 时间:2024/04/24 21:15
//Lagrange.h//Lagrange.h#ifndef LAGRANGE_H#define LAGRANGE_H#define INITSIZE 20#define APPENEDSIZE 20typedef struct{ double x; double y;}Point;class Lagrange{private: int pointNum; //节点数 int arrLength; //数组长度 Point *pointArr; void appened(); //追加空间public: Lagrange(); ~Lagrange(); void clear(); inline int getPointNum()const{return pointNum;} inline void getPoint(int pos,double &x,double &y)const { x=pointArr[pos].x; y=pointArr[pos].y; } bool insertPoint(double x,double y); double Pn(double x)const;};#endif // LAGRANGE_H
//Lagrange.cpp#include"Lagrange.h"#include<cstring>Lagrange::Lagrange(){ pointNum=0; arrLength=INITSIZE; pointArr=new Point[arrLength];}Lagrange::~Lagrange(){ delete []pointArr;}void Lagrange::appened(){ int lt=arrLength; Point *tmp=pointArr; arrLength+=APPENEDSIZE; pointArr=new Point[arrLength]; memcpy(pointArr,tmp,lt*sizeof(Point)); delete tmp;}void Lagrange::clear(){ delete []pointArr; pointNum=0; arrLength=INITSIZE; pointArr=new Point[arrLength];}bool Lagrange::insertPoint(double x,double y){ for(int i=0;i<pointNum;i++) if(pointArr[i].x==x) return false; pointArr[pointNum].x=x; pointArr[pointNum].y=y; pointNum++; if(pointNum==arrLength) appened(); return true;}double Lagrange::Pn(double x)const{ double ans=0.0; double X,Y; for(int k=0; k<pointNum; k++) { X=Y=1.0; for(int j=0; j<pointNum; j++) { if(j==k)continue; X*=x-pointArr[j].x; Y*=pointArr[k].x-pointArr[j].x; } ans+=X/Y*pointArr[k].y; } return ans;}//实例main.cpp,对fx=sin(x)进行插值#include<stdio.h>#include<math.h>#include"Lagrange.h"int main(){ Lagrange l; for(double i=0.0;i<=1.0;i+=0.2) l.insertPoint(i,sin(i)); for(double i=0.0;i<1.0;i+=0.05) printf("%-5f:%-5f\n",i,l.Pn(i)); return 0;}
0 0
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值
- 拉格朗日插值公式
- 拉格朗日插值算法
- 拉格朗日插值计算器
- MATLAB拉格朗日插值
- 拉格朗日插值曲线
- 拉格朗日插值拟合
- 拉格朗日插值函数
- 拉格朗日插值函数
- 拉格朗日插值讲解和程序
- Spring的IOC容器—Bean的自动装配
- 10_Android中通过HttpUrlConnection访问网络,Handler和多线程使用,读取网络html代码并显示在界面上,ScrollView组件的使用
- 黑马程序员-java基础-面向对象总结
- java集合
- Oracle 11.2.0.2 安装条件检查之pdksh 包
- 拉格朗日插值
- .Net配置文件——反射+配置文件存储类型实例
- 常见小问题(待更新)
- Unity 粒子系统
- 欢迎使用CSDN-markdown编辑器
- 6.30
- Longest Substring Without Repeating Characters(leetcode 3)
- Set Matrix Zeroes算法详解
- java构造器小结