《计算方法》实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算方法》实验报告 学号
姓名 班级
实验项目名称
计算方法实验 一、实验名称 实验一 插值与拟合
二、实验目的:
(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
#include
#include
using namespace std;
double Lagrange(int N,vector
double p,b,c;
char a='n';
do{
cout<<"请输入差值次数n的值:"< int N; cin>>N; vector vector cout<<"请输入区间长度(a,b):"< cin>>p; cin>>b; c=b-p; c=c/(N-1); for(int i=0;i X[i]=p; Y[i]=1/(1+p*p); p=p+c; } cout<<"请输入要求值x的值:"< double x; cin>>x;