当前位置:文档之家› 《计算方法》实验报告

《计算方法》实验报告

《计算方法》实验报告 学号
姓名 班级
实验项目名称
计算方法实验 一、实验名称 实验一 插值与拟合
二、实验目的:
(1)明确插值多项式和分段插值多项式各自的优缺点;
(2)编程实现拉格朗日插值算法,分析实验结果体会高次插值产生的龙格现象;
(3)运用牛顿插值方法解决数学问题。

三、实验内容及要求
(1) 对于55,11)(2≤≤-+=x x
x f 要求选取11个等距插值节点,分别采用拉格朗日插值和分段线性插值,计算x 为0.5, 4.5处的函数值并将结果与精确值进行比较。

输入:区间长度,n(即n+1个节点),预测点
输出:预测点的近似函数值,精确值,及误差
(2)已知,,,392411===用牛顿插值公式求5的近似值。

输入:数据点集,预测点。

输出:预测点的近似函数值
四、实验原理及算法描述
算法基本原理:
(1)拉格朗日插值法
(2)牛顿插值法
算法流程
五、程序代码及实验结果
(1)输出:
A.拉格朗日插值法
B.分段线性插值
X y(精确) y(拉格朗日) y(分段线性) 误差(拉) 误差(分)
0.500000 0.800000 0.843407 0.750000 -0.054259 0.050000
4.500000 0.047059 1.578720 0.0486425 -32.547674 -0.033649
(2)输出:
X y(精确) y(牛顿插值) 误差(牛顿插值)
5.00000 2.236068 2.266670 -0.013686
源码:
(1)A.拉格朗日插值法
#include<iostream>
#include<string>
#include<vector>
using namespace std;
double Lagrange(int N,vector<double>&X,vector<double>&Y,double x); int main(){
double p,b,c;
char a='n';
do{
cout<<"请输入差值次数n的值:"<<endl;
int N;
cin>>N;
vector<double>X(N,0);
vector<double>Y(N,0);
cout<<"请输入区间长度(a,b):"<<endl;
cin>>p;
cin>>b;
c=b-p;
c=c/(N-1);
for(int i=0;i<N;i++){
X[i]=p;
Y[i]=1/(1+p*p);
p=p+c;
}
cout<<"请输入要求值x的值:"<<endl;
double x;
cin>>x;。

相关主题