合肥工业大学计算机专业计算方法实验报告Word格式文档下载.docx
- 文档编号:14036253
- 上传时间:2022-10-17
- 格式:DOCX
- 页数:38
- 大小:271.90KB
合肥工业大学计算机专业计算方法实验报告Word格式文档下载.docx
《合肥工业大学计算机专业计算方法实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《合肥工业大学计算机专业计算方法实验报告Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。
165
123
150
141
yj
187
126
172
125
148
三、基本原理(计算公式)
(1)三次样条插值在每个内节点上具有2阶导数。
⑵最小二乘法拟合直线为y=a+bx,而a,b有如下等式(N为给出的数据点的总个数)
aNb^^yi;
a'
Xib'
x27Xiyi
四、算法设计与实现(流程图,关键点)
a,b。
用得到的拟合直线计算预测点的
最小二乘法直线拟合:
输入数据后,按照公式计算近似函数值。
五、输入与输出
(1)三次样条插值
输入:
区间长度,n+1个数据点,预测点输出:
预测点的近似函数值,精确值,及误差
(2)最小二乘法直线拟合
n个数据点,预测点
输出:
预测点的近似函数值
六、结果讨论和分析
■E:
\计算右⅛∖屋小二祠苗直戋拟⅛),exe
1.5138U⅛⅛S⅛⅛⅛y--60^392*t-51381x睛输入插値节点略112⅛×
=ιi2.y=108-θ08请输入插值节点X=134
⅛x=134,y=141.912蒂输入插值节点壮152⅛χ-lS3,⅛=1691lt请输人J⅛紅节点×
≈13?
⅛x=137,y=146.453请诙入皤值节点K=咛
⅛x=77f⅛=85.9006*輪入插值节点
代码
三次样条插值
#inClUdeVioStream>
#include<
fstream>
#defineN10
USingnamespacestd;
doubleu0(doublex){
return(x-1)*(x-1)*(2*x+1);
}
doubleu1(doublex){
returnx*x*(3-2*x);
doublev0(doublex){
returnx*(x-1)*(x-1);
doublev1(doublex){
returnx*x*(x-1);
doubles3(doublex,doubley,doubley1,doublem,doublem1,doubleh){returnuθ(x)*y+u1(x)*y1+h*vθ(x)*m+h*v1(x)*m1;
doublef(doublex){
return1∕(1+x*x);
intmain(){
ifstreamfin;
fin.open("
E:
\\t.txt"
);
if(!
fin){
cout<
<
"
erroropeninginPUtStream"
endl;
SyStem("
pause"
return0;
doublex[N+1],y[N+1],m[N+1],A[N],B[N],C[N];
doubleh[N];
doublea[N],b[N];
doublef0,fn;
doubletemp;
inti;
for(i=0;
i<
=N;
i++){
fin>
>
x[i]>
y[i];
fin>
fθ>
fn;
h[0]=x[1]-x[0];
for(i=1;
N;
h[i]=x[i+1]-x[i];
a[i]=h[i-1]∕(h[i-1]+h[i]);
b[i]=3*((1-a[i])*(y[i]-y[i-1])∕h[i-1]+a[i]*(y[i+1]-y[i])∕h[i]);
m[1]=b[1]-(1-a[1])*f0;
m[N-1]=b[N-1]-a[N-1]*fn;
for(i=2;
N-1;
m[i]=b[i];
B[i]=2;
C[i]=a[i];
A[i]=1-a[i];
C[1]=C[1]∕B[1];
m[1]=m[1]∕B[1];
doublet;
i!
=N-2;
t=B[i]-C[i-1]*A[i];
C[i]=C[i]∕t;
m[i]=(m[i]-m[i-1]*A[i])∕t;
m[N-1]=(m[N-1]-m[N-2]*A[N-1])∕(B[N-1]-C[N-2]*A[N-1]);
for(i=N-2;
i>
0;
i--){
m[i]=m[i]-C[i]*m[i+1];
please:
(输入插值节点在"
x[0]<
到"
x[N]<
范围内)"
endl;
WhiIe(Cin>
>
temp){
doublett=temp;
if(temp<
x[O]∣∣temp>
x[N]){
插值节点为"
tt<
超出插值范围"
Continue;
x[i])break;
temp=(temp-x[i-1])∕h[i-1];
temp=s3(temp,y[i-1],y[i],m[i-1],m[i],h[i-1]);
插值节点为"
精确值为"
f(tt)<
插值结果为"
temp<
误差为
f(tt)-temp<
fin.close();
最小二乘法的直线拟合
iostream>
#definen5
doublesum(doublex[],intk){
doublesum=0;
k;
i++)
SUm=SUm+x[i];
returnsum;
doublesum2(doublex[],intk){
SUm=SUm+x[i]*x[i];
doublesumxy(doublex[],doubley[],intk){
SUm=SUm+x[i]*y[i];
doublex[n],y[n],a,b;
doublex0,y0;
n;
i++){
b=(n*sumxy(x,y,n)-sum(x,n)*sum(y,n))∕(n*sum2(x,n)-sum(x,n)*sum(x,n));
a=(sum(y,n)-b*sum(x,n))/n;
最小二乘法直线拟合得到a:
"
a<
b:
b<
拟合直线为
y="
+"
x"
请输入插值节点x:
;
xθ){
y0=a+b*x0;
当x="
xθ<
y="
yθ<
请输入插值节点x:
实验二数值积分
、实验目的
(1)熟悉复化梯形方法、复化SimPSOn方法、梯形递推算法、龙贝格算法;
(2)能编程实现龙贝格算法和中点加速;
(3)理解并掌握自适应算法和收敛加速算法的基本思想;
(4)分析实验结果体会各种方法的精确度,建立计算机求解定积分问题的感性认识
(1)用龙贝格算法计算ISin^dX
LOX
⑵用中点加速方法计算ex的一阶导数
(1)龙贝格算法
梯形递推公式
hnj
2lf(χkI)
22k卫
加权平均公式:
4T2n-Tn
4-1
4S2n-Sn
42-1
40U
43-1
IfriA-StIaf
bfHT.
*■h2*(Γ∣igftbl
U'
-∖r-tTl—
hi≠(hA}+fr¼
))k-1
图2.3龙贝格算法流程图
⑵中点加速
中点公式:
G(h)=(f(a+h)-f(a-h))∕2∕h加权平均:
G1(h)=4*G(h∕2)∕3-G(h)∕3
G2(h)=16*G1(h∕2)∕15-G1(h)∕15
G3(h)=64*G2(h∕2)∕63-G2(h)∕63
中点加速:
输入数据后根据公式计算导数值
图2.2梯形递推算法流程图
1SinX
(1)用龙贝格算法计算fdx
0X
积分区间,误差限
序列Tn,Sn,Cn,Rn及积分结果⑵用中点加速方法计算ex的一阶导数输入:
求导节点,步长
求得的导数值,精确值
E⅛+≡⅛i⅛∖中点;
]口速.exE
龙贝格算法
cmath>
if(x==O)return1;
returnSin(x)/x;
fin.open("
doublea,b,e,t1,t2,s1,s2,c1,c2,r1,r2;
doublex,h,s;
a>
b>
e;
积分区间为["
"
],要求精度为"
e<
kT2S2C2R2"
h=b-a;
t1=(f(a)+f(b))*h∕2;
0<
t1<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 合肥 工业大学 计算机专业 计算方法 实验 报告