数值计算方法某实验报告材料Word文件下载.docx
《数值计算方法某实验报告材料Word文件下载.docx》由会员分享,可在线阅读,更多相关《数值计算方法某实验报告材料Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
给定形式的LU分解,且
等于
。
这样,求解三对角阵方程组Ax=f就等价于求解两个三角形方程组
从而得到公式:
(1)计算
的递推公式
(2)求解
(3)求解
通常把计算
的过程称为追的过程,而把计算方程组的解
的过程称为赶的过程,这一方法称为解三角方程组的追赶法。
5.实验环境
C语言,C++,Windows7
6.实验过程
第一步:
将这种形式的系数矩阵进行分解,由
;
第二步:
由
得到y;
第三步:
求解
得到x即可。
7.结果分析
8.附录程序清单
functionx=Hungarian
a=[0-1-2-3];
c=[-1-2-3];
b=[2345];
d=[61-21];
n=length(b);
u0=0;
y0=0;
a
(1)=0;
L
(1)=b
(1)-a
(1)*u0;
y
(1)=(d
(1)-y0*a
(1))/L
(1);
u
(1)=c
(1)/L
(1);
fori=2:
(n-1)
L(i)=b(i)-a(i)*u(i-1);
y(i)=(d(i)-y(i-1)*a(i))/L(i);
u(i)=c(i)/L(i);
end
L(n)=b(n)-a(n)*u(n-1);
y(n)=(d(n)-y(n-1)*a(n))/L(n);
%“赶”的过程
x(n)=y(n);
fori=(n-1):
-1:
1
x(i)=y(i)-u(i)*x(i+1);
end
实验报告二
1.实验名称
Lagrange插值法与最小二乘拟合法
在某化学反应里,测得某物质的浓度y(单位:
%)随时间t(单位:
min)的变化数据如表5—7所列。
表5-7变化数据
t
y
1
4.00
5
9.22
9
10.00
13
10.50
2
6.40
6
9.50
10
10.20
14
10.55
3
8.00
7
9.70
11
10.32
15
10.58
4
8.80
8
9.86
12
10.42
16
10.60
理论上已知y与t间的关系为
为待定系数。
上式两端取对数可得
做变量替换
,
,并记
,则有
根据所测数据,利用最小二乘直线拟合法先确定系数A和B,进而给出y与t间的关系并绘图展示。
在求解的过程中,对数据进行拟合法,可以熟悉最小二乘拟合法的理论和方法;
更加理解最小二乘拟合法的原理和求解过程,达到熟能生巧的程度,牢记该方法,学以致用。
最小二乘拟合法
VisualC++语言
做变量替换z=lny,x=1/t,
记A=lna,B=b,
解方程z=A+Bx.,
第四步:
由A,B确定a,b,
第五步:
列出y与t间的关系
由运行的结果可以知道A=-1.0567,B=2.4270,
#include<
stdio.h>
#include<
math.h>
voidmain()
{
FILE*f;
int
n,i;
float
tx,ty,x[20],y[20],sum_x=0,sum_y=0,sum_x2=0,sum_xy=0,D,A,B,a;
f=fopen("
.\\FittingData.txt"
"
r"
);
fscanf(f,"
%d"
&
n);
for(i=0;
i<
n;
i++)
{
%f%f"
tx,&
ty);
x[i]=1/tx;
y[i]=log(ty);
}
fclose(f);
sum_x=sum_x+x[i];
sum_x2=sum_x2+x[i]*x[i];
sum_y=sum_y+y[i];
sum_xy=sum_xy+x[i]*y[i];
D=sum_x2*n-sum_x*sum_x;
A=(n*sum_xy-sum_x*sum_y)/D;
B=(sum_x2*sum_y-sum_x*sum_xy)/D;
a=exp(A);
printf("
A=%7.4f
B=%6.4f\ny=%7.4f*e^(%6.4f/t)\n"
A,B,a,B);
实验报告三
复化求积法
测得飞机在高度h时的上升速度
的数据如表6-4所列。
表6-4
的数据
50.0
46.0
40.0
32.2
22.5
飞机从地面上升到Hkm高度所需时间可用下式计算。
(1)用复化梯形公式计算飞机上升到8km高空所需的时间。
(2)用复化Simpson公式计算飞机上升到8km高空所需的时间。
掌握复化梯形公式和复化Simpson公式求积分的方法。
基础理论:
通过给出的数据和关系式,计算区间的数值积分。
复化梯形公式,复化Simpson公式
Matlab软件
通过给出的数据和关系式,计算0到H区间的数值积分。
两种方法计算的结果稍微有点偏差。
复化梯形公式求积分
f=inline('
5./(1/2*h+3/2)'
h=(10-0)/5;
temp=f(0);
xk=0;
fori=1:
xk=xk+h;
temp=temp+2*f(xk);
end
temp=temp+f
(1);
temp=temp*h/2;
%使用化简后的公式
fprintf('
\n复化梯形公式计算的结果:
%f'
temp);
temp=0;
复化Simpson公式求积分
h=(10-0)/2;
%对复化simpson公式分成2个小区间xk=0;
yk=f(0);
%xk-x[k]
fori=0:
xkh=xk+h/2;
ykh=f(xkh);
%xkh-x[k+1/2]
xk1=xk+h;
yk1=f(xk1);
%xk1-x[k+1]
temp=temp+h*(yk+4*ykh+yk1)/6;
%加上每个小区间上的面积xk=xk1;
yk=yk1;
%右端点是下一个小区间的左端点
\n复化simpsom公式计算的结果:
%f\n'