列主元高斯约当消去法实验.docx

上传人:b****6 文档编号:4022751 上传时间:2022-11-27 格式:DOCX 页数:18 大小:50.61KB
下载 相关 举报
列主元高斯约当消去法实验.docx_第1页
第1页 / 共18页
列主元高斯约当消去法实验.docx_第2页
第2页 / 共18页
列主元高斯约当消去法实验.docx_第3页
第3页 / 共18页
列主元高斯约当消去法实验.docx_第4页
第4页 / 共18页
列主元高斯约当消去法实验.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

列主元高斯约当消去法实验.docx

《列主元高斯约当消去法实验.docx》由会员分享,可在线阅读,更多相关《列主元高斯约当消去法实验.docx(18页珍藏版)》请在冰豆网上搜索。

列主元高斯约当消去法实验.docx

列主元高斯约当消去法实验

山西大学计算机与信息技术学院

实验报告

姓名

小超

号学

11111111

专业班级

2013级计算机科学与技术

课程名称

计算方法实验

指导教师

实验日期

2015/11/03

绩成

实验名称

用列主元高斯-约当法解方程组

一、实验目的:

nxnbAb?

Ax阶列向阶非奇异方阵,。

式中,约当法解线性方程组式为,用列主元高斯-量,并分析选主元的重要性。

二、实验内容:

解下列方程组

1.13483.4017x19.53421651.18326.3?

?

?

?

?

?

?

?

?

?

?

?

54350.5301.178752.533012x..63941?

?

?

?

?

?

?

?

?

?

?

?

?

4231.493178.x3.187********.1.3142?

?

?

?

?

?

9237x23711.4.672110.49998.0014716.?

?

?

?

?

?

三、实验程序:

源代码#include

定义控制台应用程序的入口点。

//Hello.cpp:

#includestdio.h

#includestdlib.h

#includemath.h

intmain(){

doublearr[4][5]={{1.1348,3.8326,1.1651,3.4017,9.5342},

{0.5301,1.7875,2.5330,1.5435,6.3941},

{3.4129,4.9317,8.7643,1.3142,18.4231},

{1.2371,4.9998,10.6721,0.0147,16.9237}

};

for(inti=1;i<3;i++){//确定第一列列主元if(arr[0][0]

for(intj=0;j<5;j++){

doubletemp=arr[0][j];

arr[0][j]=arr[i][j];

arr[i][j]=temp;

}

}

////////////////////////////////////////输出矩阵\n);牰湩晴尨确定第一列列主元for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

....

0将第一列除第一行外其他值变成//doubleolda;

for(inti=1;i<4;i++){

olda=arr[i][0];

for(intj=0;j<5;j++){

arr[i][j]=(arr[i][j]-(olda/arr[0][0])*arr[0][j]);

}

}

输出矩阵////////////////////////////////////////printf(\

);

printf(\

);

0\n);牰湩晴尨将第一列除第一行外其他值变成

for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

1

//把第一行第一列值变为for(intj=4;j>-1;j--){

arr[0][j]=arr[0][j]/arr[0][0];

}

输出矩阵////////////////////////////////////////printf(\

);

printf(\

);

1\n);把第一行第一列值变为牰湩晴尨for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

//确定第二列列主元

for(inti=2;i<4;i++){

if(fabs(arr[1][1])

for(intj=1;j<5;j++){

doubletemp=arr[1][j];

arr[1][j]=arr[i][j];

arr[i][j]=temp;

}

}

输出矩阵////////////////////////////////////////printf(\

);

printf(\

);

\n);确定第二列列主元牰湩晴尨

for(inti=0;i<4;i++){

....

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

0把第二列三四行变为//for(inti=2;i<4;i++){

for(intj=4;j>0;j--){

arr[i][j]=arr[i][j]-arr[i][1]/arr[1][1]*arr[1][j];

}

}

////////////////////////////////////////输出矩阵

printf(\

);

printf(\

);

0\n);牰湩晴尨把第二列三四行变为

for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

1把第二行第二列的值变为//for(intj=4;j>0;j--){

arr[1][j]=arr[1][j]/arr[1][1];

}

输出矩阵////////////////////////////////////////printf(\

);

printf(\

);

1\n);第二行第二列的值变为牰湩晴尨for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

0把第一行第二列值变为//for(intj=4;j>0;j--){

arr[0][j]=arr[0][j]-arr[1][j]*arr[0][1];

}

输出矩阵////////////////////////////////////////printf(\

);

printf(\

);

0\n);牰湩晴尨把第一行第二列值变为

for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

....

printf(\

);

}/////////////////////////////////////////////////////////////

//确定第三列列主元for(inti=3;i<4;i++){

if(fabs(arr[2][2])

for(intj=2;j<5;j++){

doubletemp=arr[2][j];

arr[2][j]=arr[i][j];

arr[i][j]=temp;

}

}

输出矩阵////////////////////////////////////////printf(\

);

printf(\

);

\n);确定第三列列主元牰湩晴尨for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

0//把第四行第三列的值变为

for(intj=4;j>1;j--){

arr[3][j]=arr[3][j]-arr[3][2]/arr[2][2]*arr[2][j];

}

////////////////////////////////////////输出矩阵

printf(\

);

printf(\

);

0\n);牰湩晴尨把第四行第三列的值变为for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

1把第三行第三列的值变为//for(intj=4;j>1;j--){

arr[2][j]=arr[2][j]/arr[2][2];

}

////////////////////////////////////////输出矩阵printf(\

);

printf(\

);

1\n);把第三行第三列的值变为牰湩晴尨for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

....

}/////////////////////////////////////////////////////////////

0//把第一、二行的第三列元素变为

for(inti=0;i<2;i++){

for(intj=4;j>1;j--){

arr[i][j]=arr[i][j]-arr[i][2]*arr[2][j];//kk

}

}

输出矩阵////////////////////////////////////////printf(\

);

printf(\

);

0\n);把第一、二行的第三列元素变为牰湩晴尨for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

1把第四行第四列的值变为//

for(intj=4;j>2;j--){

arr[3][j]=arr[3][j]/arr[3][3];

}

////////////////////////////////////////输出矩阵

printf(\

);

printf(\

);

1\n);牰湩晴尨把第四行第四列的值变为for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

0把第一、二、三行的第四列值变为//for(inti=0;i<3;i++){

for(intj=4;j>2;j--){

arr[i][j]=arr[i][j]-arr[i][3]*arr[3][j];//kk

}

}

////////////////////////////////////////输出矩阵

printf(\

);

printf(\

);

0\n);牰湩晴尨把第一、二、三行的第四列值变为for(inti=0;i<4;i++){

for(intj=0;j<5;j++){

printf(%f,arr[i][j]);

printf(\);

}

printf(\

);

}/////////////////////////////////////////////////////////////

doublex1=arr[0][4];

....

doublex2=arr[1][4];

doublex3=arr[2][4];

doublex4=arr[3][4];

牰湩晴尨?

┽屦砬?

printf(\

);

牰湩晴尨?

┽屦砬?

printf(\

);

牰湩晴尨?

┽屦砬?

printf(\

);

牰湩晴尨?

┽屦砬?

while

(1);

return0;

}

....

....

三、结果分析:

虽然两种方法得出的结果均正确,列主元素的计算量稍多,但是从计算过程上看,不列主元素时,多的数据,而列主元素数据较为稳定,波动不大。

对于不能精确保留所矩阵在变换过程中曾出现4539有数据的计算机来说,数据变化越大,损失的精度越多。

所以在进行精确计算时,还是列主元素更为精确稳定。

....

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1