计算方法-解线性方程组的直接法实验报告

2019-02-20 22:35

计算方法实验二实验报告

专业班级: 姓名: 学号: 实验成绩: 1.【实验题目】 解线性方程组的直接法 2.【实验目的】

? 掌握高斯消元法及选列主元素的技术 ? 掌握三角分解法与追赶法

? 掌握向量与矩阵的三种范数及其计算方法 ? 理解方程组的性态、条件数及误差分析 3.【实验内容】

求解方程组,AX=b 其中

4. 【实验要求】

(1)分别列选主元消去法与不选主元消去法分别对以上两个方程组求解

(2)观察小主元并分析对计算结果的影响。

(3)用追赶法求下述三对角线性方程组的解

5. 【算法描述】

6. 【源程序(带注释)】 (1)一:列主元素消去法

#include #include #define N 20

using namespace std; void load(); float a[N][N]; int m; int main() { int i,j;

int c,k,n,p,r; float x[N],l[N][N],s,d; cout<<\下面请输入未知数的个数m=\ cin>>m; cout<fabs(a[i][i]))?j:i; /*找列最大元素*/ for(n=0;n

/*将列最大数防在对角线上*/ for(p=0;p

system(\ return 0; }

void load() { int i,j; for(i=0; i>a[i][j]; }

一般消去法

#include

void solve(float l[][100],float u[][100],float b[],float x[],int n) { int i,j; float t,s1,s2; float y[100]; for(i=1;i<=n;i++) /* 第一次回代过程开始 */ { s1=0; for(j=1;j=1;i--) /* 第二次回代过程开始 */ { s2=0; for(j=n;j>i;j--) { t=-u[i][j]; s2=s2+t*x[j]; } x[i]=(y[i]+s2)/u[i][i]; } }

void main() { float a[100][100],l[100][100],u[100][100],x[100],b[100];

int i,j,n,r,k; float s1,s2;

for(i=1;i<=99;i++)/*将所有的数组置零,同时将L矩阵的对角值设为1*/ for(j=1;j<=99;j++) { l[i][j]=0,u[i][j]=0; if(j==i) l[i][j]=1; } printf (\输入方程组的个数*/ scanf(\ printf (\读取原矩阵A*/ for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf(\ printf (\读取列矩阵B*/ for(i=1;i<=n;i++) scanf(\ for(r=1;r<=n;r++)/*求解矩阵L和U*/ { for(i=r;i<=n;i++) { s1=0; for(k=1;k<=r-1;k++) s1=s1+l[r][k]*u[k][i]; u[r][i]=a[r][i]-s1; } for(i=r+1;i<=n;i++) { s2=0; for(k=1;k<=r-1;k++) s2=s2+l[i][k]*u[k][r]; l[i][r]=(a[i][r]-s2)/u[r][r]; } } printf(\输出矩阵L*/ for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf(\ \ printf(\ } printf(\输出矩阵U*/ for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf(\ \ printf(\


计算方法-解线性方程组的直接法实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:矿山救护工种竞赛理论题库知识

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: