数值分析计算实习题列主元高斯消去法解线性方程组.docx

上传人:b****2 文档编号:24578475 上传时间:2023-05-29 格式:DOCX 页数:17 大小:24.46KB
下载 相关 举报
数值分析计算实习题列主元高斯消去法解线性方程组.docx_第1页
第1页 / 共17页
数值分析计算实习题列主元高斯消去法解线性方程组.docx_第2页
第2页 / 共17页
数值分析计算实习题列主元高斯消去法解线性方程组.docx_第3页
第3页 / 共17页
数值分析计算实习题列主元高斯消去法解线性方程组.docx_第4页
第4页 / 共17页
数值分析计算实习题列主元高斯消去法解线性方程组.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数值分析计算实习题列主元高斯消去法解线性方程组.docx

《数值分析计算实习题列主元高斯消去法解线性方程组.docx》由会员分享,可在线阅读,更多相关《数值分析计算实习题列主元高斯消去法解线性方程组.docx(17页珍藏版)》请在冰豆网上搜索。

数值分析计算实习题列主元高斯消去法解线性方程组.docx

数值分析计算实习题列主元高斯消去法解线性方程组

数值分析计算实习题

第5章解线性方程组的直接方法

列主元高斯消去法解线性方程组。

书上的计算实习题1、2、3都要求用列主元高斯消去法解线性方程组,所以考虑写一个普适的程序来实现。

对于线性方程组Ax=b,程序允许用户从文件读入矩阵数据或直接在屏幕输入数据。

文件输入格式要求:

(1)第一行为一个整数n(2<=n<=100),表示矩阵阶数。

(2)第2〜n+1行为矩阵A各行列的值。

(3)第n+2〜n+n+2行为矩阵b各行的值。

屏幕输入:

按提示输入各个数据。

输出:

A、b、det(A)、列主元高斯消去计算过程、解向量X。

【算法说明】

设有线性方程组Ax=b,其中设A为非奇异矩阵。

方程组的增广矩阵为

[a,b]=

an„

第1步(k=l):

首先在A的第一列中选取绝对值最大的元素%,作为第一步的主元素:

如凜产如工0

然后交换(A,b)的第1行与第1行元素,再进行消元计算。

设列主元素消去法已经完成第1步到第k・l步的按列选主元,交换两行,消元计算得到与原方程组等价的方程组A(k)x=b(k)

用姐…哦盘…於?

MB

[A,b]T[A(?

b(*)]=

…盅

a"〉

唱”

...卅

IUI

第k步计算如下:

对于k=l,2,n-1|時卜maxaf"

(1)按列选主元:

即确定t使

(2)如果tHk,则交换[A,b]第t行与第k行元素。

(3)消元计算

aikJ叫=-bgk+X・・Ji)

akk

%<-%+叫ciy(i,j=k+l,…川)

»〜乞+叫几(j=k+l,…屮)

 

消元乘数mik满足:

 

M=吃+1,产•,)

 

(4)回代求解

 

(b厂工陶形)

兀<,('=〃_1屮_2,・・、1)

【程序】

/*

【普适列主元消去法解线性方程组】对于线性方程组:

Ax=b

输入:

[选择屏幕直接输入]

1・A的行阶数11(1<=n<=100)

2.A的值

3.b的值

[选择读取文件]

文件名(和主程序同级文件夹下)

输出:

1.A

2.b

3.det(A)

4.解向量x

#include

#include

#include

doubleA[1O5][1O5],A_B[1O5][1O习、b[105],x[105];doubledetA;

intnjnaik=1;

〃读入数据

voidinput(){

intij;

charch[20],name[100];

FILE*f;

printfC^—-\ii是否从文件读取数据(Y/N):

”);scaufp%s:

&ch);

if(ch[O]=Y'||ch[0]=V){

prmtfC'请输入文件名(包扌舌扩展名):

”);scanfi(H%s,\name);

f=fbpen(name;,in);

fscaiif(f/%d*\&n);

fbr(i=0;i

for(j=0j

fbr(i=0;i

住canfg'%lf;&b[i]);

pnntfC请输入A的阶数:

”);scanf(n%d%cT,&n);

prmtfC请输入A的值:

”);

fbr(i=0;i

for(j=Oj

printf("请输入b的值:

”);

fbr(i=0;i

}

}

〃计算行列式的值

doubledet(doubles[105][105],intm){

intzj,k;

doubleb[105][105],total=0,r;/*b[N][N]ffl于存放,在矩阵s[N][N]中元素s[0]的余子式*/

fbr(z=0;z

for(j=0j

for(k=0;k

if(k>=z)

b[j][k]=s[j+l][k+l];

else

bQ][k]=s[j+l][k];

if(z%2==0)

r=s[0][z]*det(b4ii-1);/*递归调用

else

r=(-1)*s[O]JXl*det(bjn-1);

total=total+r;

}

}

elseif(m=2)

total=s[0][0]*s[l][l]-s[0][l]*s[l][0];

elseif(m=1)

total=s[0][0];

returntotal;

}

//输出A和b和det(A)voidoutput_lQ{

intij;

pnntffA=\iin);

for(i=0;i

for。

=OJ

}

printf(H\nb=\n”);

for(i=0;i

pnntfC%15・4f\iT;b[i]);

printf(M\iidet(A)=%.4fn*\detA);}

//主计算函数

voidcount_x(){

mtij,k;

intmax;

doubletmpjiuk;

//构造增广矩阵

for(i=0;i

A_B[i][j]=A[i]|j];A_B[i][n]=b[i];

}

pnntf(”\n展示消元过程(A_E为A的増广矩阵printf(HA_B=\iT);

for(i=0;i

}

〃按列选主元

for(k=0;k

fbr(i=k;iabs(A_B[max][k]))max=i;

〃若A[inax][k]=0,即det(A)=0,则无唯一解,退出计算

「s3al<餐s3al<•a==alvHs曰alvsggrfg曰q—v丄二sq—v丄二SST<

(++「u:

>■:

?

+;

「32al<二兰三alvH3H〕alv

)(++=uV匚+上HT)」OJ

M七賦泌s

QluuH3XGUTMIVs〔xc3qlv丄二gST

Hv蛋HmE

)(4I!

.HcgT

oH4TU2

)(0HHg〔xuu二8—vm

 

xu3ql<*msql

(++ruv^+thmE工U」zql

X!

^0ha=e;HnTOJ

•U=T•sale二U=T'aqlfms'umc•u」x

rsT:

oH4TU2

(0==〔「U=T;»1<七M44m型•灌—誉宋耳0H<

七UT】d

「■§zql<・J寸・3贾呂目d

(++■?

Hv〔0H

X++-SV「0HVOJ「(Mhgrv.^md

oHssalv

 

//输出解向量xvoidoutput_2Q{

intij;

if(?

niaik)

pnntf(”\n该方程没有唯一解!

else{

prmtf(M\iib=\iin);

fbr(i=0;i

printf(H%15.5fn*\x[i]);

}

}

intmam(){

charch[20];

pnntfC普适列主元消去法解线性方程组E);

wlule(l){

mput();

detA=det(A.n);output」();count_xQ;

output_2();

//读取数据

//计算A的行列式

//输出A和bfndet(A)

//主计算函数

//输出解向量X

是否继续(Y/N)小);

scanf(M%sH,&ch);

if(ch[O]==T11|ch[0]=V)contmue;

else

break;

【结果测试】

一共采用了书上的例题和习题内的5组数据(dl〜d5),均采用文件读入方式读取,计算结果,与mntlab运算结果进行比对均相符合,基本验证了程序的正确性。

下面给出各组数据和运行结果:

[数据]

dl.txt

3

3.016.031.99

1.274.16-1.23

0.987-4.819.34

1

1

1d2.txt

3

3.006.031.99

1.274.16-1.23

0.99-4.819.34

1

1

1d3.txt

3

0.0012.0003.000

-1.0003.7124.623

-2.0001.0725.643

1.000

2.000

3.000d4.txt

4

10-701

-32.09999962

5-15-1

2102

8

5.900001

5d5.txt

4

10787

7565

86109

75910

32

2333

31

[运行结果]

普适列主元消去法解线性方程组

是否从文件读取数据(Y/N)y请输入文件名(包括扩展名):

dl.txt

A=

3.0100

6.0300

1.9900

1.2700

4.1600

-1.2300

0.9870

-4.8100

9.3400

1.0000

1.0000

1.0000

det(A)=-0.0305

展示消元过程(AJB为A的增广矩阵):

A_B=

3.0100

6.0300

1.9900

1.0000

1.2700

4.1600

-1.2300

1.0000

0.9870

-4.8100

9.3400

1.0000

A_B=

3.0100

6.0300

1.9900

1.0000

0.0000

1.6158

-2.0696

0.5781

0.0000

-6.7873

8.6875

0.6721

A_B=

3.0100

6.0300

1.9900

1.0000

0.0000

-6.7873

8.6875

0.6721

0.0000

0.0000

-0.0015

0.7381

A_B=

3.0100

6.0300

1.9900

1.0000

0.0000

-6.7873

8.6875

0.6721

0.0000

0.0000

-0.0015

0.7381

b=

1592.59962

-631.91138

-493.61772

是否继续(Y/N):

y

是否从文件读取数据(Y/N〉:

y

请输入文件名(包拾扩展名):

d2.txt

A=

3.0000

6.0300

1.9900

1.2700

4.1600

-1.2300

0.9900

-4.8100

9.3400

1.0000

1.0000

1.0000

det(A)=-0.4070

展示消元过程(AJB为A的增广矩阵):

A_B=

3.0000

1.2700

0.9900

6.0300

4.1600

-4.8100

1.9900

-1.2300

9.3400

1.0000

1.0000

1.0000

A_B=

3.0000

6.0300

1.9900

1.0000

0.0000

1.6073

-2.0724

0.5767

0.0000

-6.7999

8.6833

0.6700

A_B=

3.0000

6.0300

1.9900

1.0000

0.0000

-6.7999

8.6833

0.6700

0.0000

0.0000

-0.0200

0.7350

A_B=

3.0000

6.0300

1.9900

1.0000

0.0000

-6.7999

8.6833

0.6700

0.0000

0.0000

-0.0200

0.7350

119.52734

-47.14260

-36.84026

是否继续(Y/N)y

是否从文件读取数据(Y/N〉:

y

请输入文件名(包括•扩展名):

d3.txt

A=

0.0010

2.0000

3.0000

-1.0000

3.7120

4.6230

-2.0000

1.0720

5.6430

1.0000

2.0000

3.0000

det(A)=11.8660

展示消元过程(A_E为A的增广矩阵):

A_B=

0.0010

2.0000

3.0000

1.0000

-1.0000

3.7120

4.6230

2.0000

-2.0000

1.0720

5.6430

3.0000

A_B=

-2.0000

1.0720

5.6430

3.0000

0.0000

3.1760

1.8015

0.5000

0.0000

2.0005

3.0028

1.0015

A_B=

-2.0000

1.0720

5.6430

3.0000

0.0000

3.1760

1.8015

0.5000

0.0000

0.0000

1.8681

0.6866

A_B=

-2.0000

1.0720

5.6430

3.0000

0.0000

3.1760

1.8015

0.5000

0.0000

0.0000

1.8681

0.6866

-0.49040

-0.05104

0.36752

是否继续(Y/N):

y

是否从文件读取数据(Y/N):

y请输入文件名(包括扩展名):

d4.txtA=

10.0000

-7.0000

0.0000

1.0000

-3.0000

2.1000

6.0000

2.0000

5.0000

-1.0000

5.0000

-1.0000

2.0000

1.0000

0.0000

2.0000

b=

8.0000

5.9000

5.0000

1.0000

det(A)=-762.0001

展示消元过程(AJB为A的增广矩阵):

A_B=

10.0000

-7.0000

0.0000

1.0000

8.0000

-3.0000

2.1000

6.0000

2.0000

5.9000

5.0000

-1.0000

5.0000

-1.0000

5.0000

2.0000

1.0000

0.0000

2.0000

1.0000

A_B=

10.0000

-7.0000

0.0000

1.0000

8.0000

0.0000

-0.0000

6.0000

2.3000

8.3000

0.0000

2.5000

5.0000

-1.5000

1.0000

0.0000

2.4000

0.0000

1.8000

-0.6000

A_B=

10.0000

-7.0000

0.0000

1.0000

8.0000

0.0000

2.5000

5.0000

-1.5000

1.0000

0.0000

0.0000

6.0000

2.3000

8.3000

0.0000

0.0000

-4.8000

3.2400

-1.5600

A_B=

10.0000

-7.0000

0.0000

1.0000

8.0000

0.0000

2.5000

5.0000

-1.5000

1.0000

0.0000

0.0000

6.0000

2.3000

8.3000

0.0000

0.0000

0.0000

5.0800

5.0800

A_B=

10.0000

-7.0000

0.0000

1.0000

8.0000

0.0000

2.5000

5.0000

-1.5000

1.0000

0.0000

0.0000

6.0000

2.3000

8.3000

0.0000

0.0000

0.0000

5.0800

5.0800

-0.00000

-1.00000

1.00000

1.00000

是否继续(Y/N):

y

是否从文件读取数据(Y/N):

y请输入文件名(包括扩展名):

d5.txtA=

10.0000

7.0000

8.0000

7.0000

7.0000

5.0000

6.0000

5.0000

8.0000

6.0000

10.0000

9.0000

7.0000

5.0000

9.0000

10.0000

32.0000

23.0000

33.0000

31.0000

det(A)=1.0000

展示消元过程(AJB为A的增广矩阵):

A_B=

10.0000

7.0000

8.0000

7.0000

7.0000

5.0000

6.0000

5.0000

8.0000

6.0000

10.0000

9.0000

7.0000

5.0000

9.0000

10.0000

32.0000

23.0000

33.0000

31.0000

A_B=

10.0000

7.0000

8.0000

7.0000

32.0000

0.0000

0.1000

0.4000

0.1000

0.6000

0.0000

0.4000

3.6000

3.4000

7.4000

0.0000

0.1000

3.4000

5.1000

8.6000

A_B=

10.0000

7.0000

8.0000

7.0000

32.0000

0.0000

0.1000

0.4000

0.1000

0.6000

0.0000

0.0000

0.0000

0.0000

2.0000

3.0000

3.0000

5.0000

5.0000

8.0000

A_B=

10.0000

7.0000

8.0000

7.0000

32.0000

0.0000

0.1000

0.4000

0.1000

0.6000

0.0000

0.0000

3.0000

5.0000

8.0000

0.0000

0.0000

0.0000

-03333

-0.3333

A_B=

10.0000

7.0000

8.0000

7.0000

32.0000

0.0000

0.1000

0.4000

0.1000

0.6000

0.0000

0.0000

3.0000

5.0000

8.0000

0.0000

0.0000

0.0000

-03333

-0.3333

1.00000

1.00000

1.00000

1.00000

是否继续(Y/N):

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

当前位置:首页 > 工作范文 > 行政公文

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

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