计算方法实验九 求解特殊线性方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山西大学计算机与信息技术学院
实验报告
姓 名
学 号 专业班级 课程名称
计算方法 实验日期 成 绩
指导老师 批改日期 实验名称 实验九 求解特殊线性方程组
一. 实验目的:
用追赶法解三对角方程组Ax=f,并分析计算量。
二. 实验方法:
⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣
⎡=---n n n n n n f f f f b a c b a c b a c b A 2111122211, 对三对角方程Ax=f 的系数矩阵分解程两个二对角矩阵的乘积。
设A=LU ,式中
⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=---n n n n n b a c b a c b a c b A 11122211 ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=--n n n n l a l a l a l L 11221 ⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡=-1111121n u u u U 这样,解方程组Ax=f 就化为求LUx=f,令Ux=y,则Ly=f 。
解方程组Ly=f ,即
⎩⎨⎧=+=-i i
i i i f y l y a f y l 1111(i=2,3,···,n ) 得⎩⎨⎧-==-11111/)(/l y a f y l f y i i i i
(i=2,3,···,n ) 解方程组Ux=y 即
⎩
⎨⎧==++n n i i i i y x y x u x 1(i=1,2,···,n ) 得⎩⎨⎧-==+=
1i i i i n n x u y x y x (i=n-1,···,2,1) 三. 实验内容
用追赶法解方程组
⎥⎥⎥⎥⎥⎥⎦⎤⎢
⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡--------00001211211211211254321x x x x x
四. 实验程序
#include "stdio.h"
double a[4]={-1,-1,-1,-1};
double b[5]={2,2,2,2,2};
double c[4]={-1,-1,-1,-1};
double f[5]={1,0,0,0,0};
double l[5];
double u[4];
double y[5];
double x[5];
int i,j,k;
void Cash(){
l[0]=b[0];
for(i=0;i<4;i++)
{
u[i]=c[i]/l[i];
l[i+1]=b[i+1]-a[i]*u[i];
}
y[0]=f[0]/l[0];
for(i=0;i<4;i++)
{
y[i+1]=(f[i+1]-a[i]*y[i])/l[i+1];
}
x[4]=y[4];
for(i=4;i>0;i--)
{
x[i-1]=y[i-1]-u[i-1]*x[i];
}
}
void main(){
printf("****************追赶法最终结果*****************\n");
Cash();
printf("所求u 值为:\n");
for(i=0;i<4;i++)
printf("u[%d]=%12.8f\n",i+1,u[i]);
printf("\n 所求的x 值为:\n");
for(i=0;i<5;i++)
printf("x[%d]=%12.8f\n",i+1,x[i]);
printf("\n 所求的y 值:\n");
for(i=0;i<5;i++)
printf("y[%d]=%12.8f\n",i+1,y[i]);
} 五. 实验结果
)6
1,31,21,32,65(),61,51,41,31,21(==x y
六. 结果分析
该种方法只适用于特殊性方程组--对角占有的三角矩阵。
追赶法的求解过程就是将系数矩阵分解两个简单的二对角线矩阵,从而归结为求解两个简单三角形方程组的过程。
追赶法也可由高斯消去法计算过程导出,但考虑到方程组的特点,计算时会把大量零元素撇开,从而大大节省计算量。
通过本实验的学习,掌握了三对角线性方程组的求解方法,对运用三对角线性方程组解决一些实际问题有了初步的认识,为今后学习打下基础。