数值计算实验三——拉格朗日插值和牛顿插值

简介: 数值计算实验三——拉格朗日插值和牛顿插值
//拉格朗日插值
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100;
double x[maxn],y[maxn];
double l[maxn];
int main(){
  x[0]=0.56160;x[1]=0.56280;
  x[2]=0.56401;x[3]=0.56521;
  y[0]=0.82741;y[1]=0.82659;
  y[2]=0.82577;y[3]=0.82495;
  double resx=0.56350,resy=0;
  double cnt1=1,cnt2=1;
  int n=3;
  for(int i=0;i<=n;i++){
    cnt1=1,cnt2=1;
    for(int j=0;j<=n;j++){
      if(i==j) continue;
      cnt1=cnt1*(resx-x[j]);
      cnt2=cnt2*(x[i]-x[j]);
    }
    l[i]=cnt1/cnt2;
    resy=resy+y[i]*l[i];
  }
  cout<<resy<<endl;
  return 0;
}
//牛顿插值
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100;
double x[maxn],y[maxn];
double a[maxn][maxn];
int main(){
  x[0]=0.56160;x[1]=0.56280;
  x[2]=0.56401;x[3]=0.56521;
  y[0]=0.82741;y[1]=0.82659;
  y[2]=0.82577;y[3]=0.82495;
  double resx=0.56350,resy=0;
  double cnt1=1,cnt2=1;
  int n=4;
  for(int j=0;j<=n-1;j++)///列
    for(int i=j;i<=n-1;i++)
      if(!j) a[i][j]=y[i];
      else a[i][j]=(a[i][j-1]-a[i-1][j-1])/(x[i]-x[i-j]);  
  double tmp=1;
  for(int i=0;i<=n;i++){
    if(i) tmp=tmp*(resx-x[i]);
    resy=resy+a[0][i]*tmp;
  }
  cout<<resy<<endl;
  return 0;
}
目录
相关文章
|
6月前
|
资源调度 算法 机器人
图像处理之高斯一阶及二阶导数计算
图像处理之高斯一阶及二阶导数计算
84 6
|
6月前
高等数学II-知识点(3)——广义积分、定积分几何应用、定积分求曲线弧长、常微分方程、可分离变量的微分方程、一阶微分方程-齐次方程、一阶线性微分方程
高等数学II-知识点(3)——广义积分、定积分几何应用、定积分求曲线弧长、常微分方程、可分离变量的微分方程、一阶微分方程-齐次方程、一阶线性微分方程
47 0
|
7月前
R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数
R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数
|
7月前
|
数据可视化
R语言最优化问题中的共轭函数
R语言最优化问题中的共轭函数
|
7月前
matlab使用样条插值重采样估计INR数据研究
matlab使用样条插值重采样估计INR数据研究
线性代数(方程组的几何解释)
线性代数(方程组的几何解释)
77 0
|
算法 图形学
计算机图形学 之 DDA直线算法(数值微分法)
计算机图形学 之 DDA直线算法(数值微分法)
413 0
|
数据采集 算法 Python
[模型]拉格朗日插值法
[模型]拉格朗日插值法
数值计算方法-曲线拟合问题-最小二乘法
数值计算方法-曲线拟合问题-最小二乘法
92 1
|
机器学习/深度学习 传感器 算法
【光学】基于GS算法实现高斯光转换成高阶高斯光,一阶空心高斯光,贝塞尔高斯光附matlab代码
【光学】基于GS算法实现高斯光转换成高阶高斯光,一阶空心高斯光,贝塞尔高斯光附matlab代码