高斯列主元消元法解方程组
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、当n为50时,在command窗口输入如下代码:
format long
n=50;
for a=1:n;
for c=1:n;
A(a,c)=1/(a+c-1);
end
end
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
23964.74834020-4122991.37806186176597502.11690632-3260288682.1972771031898227709.80876200-181566275672.69705000 619956768219.91504000-1230092760464.934800001193508577123.06670000 -71714652666.11485300-587044042244.59863000-454093769462.97290000 1744941129911.71780000-2715153157131.341300002706193814657.00730000 758555481068.28345000-2729174782832.09330000-650678553386.91565000 770544482197.08948000661071297466.389400003114329102228.31640000 -2419453655729.64110000-2498342518894.922900001991167370388.64180000 806469536595.88586000-3357159715176.254400003434745294165.19480000 -1115456797533.65920000835226816241.179930001614362560020.15380000 -2300534244207.34180000781205861296.42358000-3724002810480.48780000 -101978267755.295900003815588397071.54350000-269576755745.41956000 -2354847317920.947800005144417865217.228500001355869718979.75980000 1213622862842.97950000-11349162850658.63300000367430197567.42474000 2362009479539.30520000712955508308.938350005794833430082.82320000 -2649289143449.391600002040834706833.95900000-2941986228491.25980000 -2402163300368.774400002234821162570.22750000
4、当n为100时,在command窗口输入如下代码:
format long
n=100;
for a=1:n;
for c=1:n;
A(a,c)=1/(a+c-1);
end
end
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
-165617.1532689928442933.35865056-1198435487.04943940 21486760244.19754400-201373104442.327700001078082536048.55210000 -3359286903640.50000000 5709542237195.77050000-3874331687877.81350000 -829892270872.19580000-1967322218199.680400007982819330278.76070000 1213029690156.88990000-10735970375754.32600000762638472140.30078000 428060429909.995420009446910367399.21870000-5444790674141.98340000 7943864825269.35640000-12444580627249.047000003882692758366.57230000 -5987397744766.25100000 5662577299892.742200005126170554051.82620000 -9610047420412.31450000 12856271352701.56800000-9589605026775.01560000 -2444078934897.28960000 8975946626070.38090000-2005484489157.63130000 3675207098095.15430000-11796755688486.143000002635749164788.96780000 -1391667139033.63600000 -4925361880835.217800007760201046620.72560000 3177048652010.23830000-1660111689637.1697000017106703091341.60700000 -4183367998776.74900000 -9050281636210.44730000-3443653770672.85890000 7613626827967.19820000-27292079128178.34400000-3324815769929.91210000 23300803936314.81600000 -11356310288948.8670000010923789711648.75800000 -13401088615825.0920000017970247866003.00000000-9679755802589.19730000 16174889741901.94500000 -10909579864796.385000007545679893084.42290000 8996723425570.9883000012709789045568.57600000-17085679755478.76000000 1179611746389.40920000-13066251601848.248000003787285770590.26510000 -18439877686630.5040000020877875192069.46900000-25631762378766.18700000 -19193678497456.85500000-2221136355160.68900000-3315613437010.98930000 18975925971181.35500000 19739707253794.629000001881838919237.33400000 11454893085140.30700000 30801635220079.617000007161442584152.82910000 -16074251464421.46300000-7709130621321.951200001335376684881.13500000 -393512297638.43860000-8733213053985.36910000-35995689236329.05500000 15407926775193.27700000 -609162661193.12512000-4400619113085.39650000 346032863613.36517000-18611757295820.54300000-1040193463248.05440000 10041692625877.11900000 -14815863623738.0350000020088901435797.52000000 3249116745776.0654000011755355855202.7250000028926235452943.75400000 27962180449728.39800000-23174735232056.87500000-20208579671753.25000000 -10317216154286.07800000-29884207777479.6910000025102669265480.31200000 -12108818003588.869000007425093906782.792000005388736564258.16210000 371024307363.73108000
实验一、高斯列主元消元法解方程组
题目:
求解: , , ,n=4;6;50;100;……
求解精度为 ,并验证: 及 / 随着n的逐渐增大,你会发现什么?
一、实验目的:
1、学习使用matlab编写数值计算程序。
2、了解高斯列主元消元法解方程组原理和编程方法。
3、根据高斯列主元消元法解方程组原理编写matlab程序,并运行得出结果。
x(n) = b(n)/A(n,n);
for k = n-1:-1:1
x(k)=b(k);
for p=n:-1:k+1
x(k) = x(k)-A(k,p)*x(p);
end
x(k)=x(k)/A(k,k);
end
%use the function。
%求矩阵A的大小。
% 初始化x为0。
% 增广矩阵
%for循环
%找列主元所在子矩阵的行r
%列主元所在大矩阵的行
%矩阵为0,报错
%把增广矩阵消元成为上三角
%解上三角方程组
%求得x值
四、实验数据及结果:
1、当n为4时,在command窗口输入如下代码:
format long
n;
A(a,c)=1/(a+c-1);
end
end
二、实验原理:
如此至多经过n-1步,就得到与之同解的上三角形方程组的增广矩阵,再用回代过程即可得方程组的解.
三、实验内容与步骤:
1、实验内容:依照实验原理编写高斯列主元消元法解方程组的程序。
2、实验步骤:首先,在电脑上安装matlab,然后,启动matlab,新建一个gauss.m文件。
实验程序如下:
Aug(k,:)=Aug(r,:);
Aug(r,:)=temp;
end
if Aug(k,k)==0, error('对角元出现0'),
end
for p = k+1:n
Aug(p,:)=Aug(p,:)-Aug(k,:)*
Aug(p,k)/Aug(k,k);
end
end
A = Aug(:,1:n); b = Aug(:,n+1);
for c=1:n;
A(a,c)=1/(a+c-1);
end
end
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
-216.000000047350.00000120-57120.00000827
166320.00002178 -201600.00002425 85932.00000962
程序代码
程序代码说明
function x = gauss(A,b)
[n,n] = size(A);
x = zeros(n,1);
Aug = [A,b];
for k = 1:n-1
[piv,r]=max(abs(Aug(k:n,k)));
r = r + k - 1;
if r>k
temp=Aug(k,:);
5、当n为4时,在command窗口输入如下代码:
format long
n=4;
for a=1:n;
for c=1:n;
A(a,c)=1/(a+c-1);
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
-64.00000000 900.00000000 -2520.00000000 1820.00000000
2、当n为6时,在command窗口输入如下代码:
format long
n=6;
for a=1:n;
format long
n=50;
for a=1:n;
for c=1:n;
A(a,c)=1/(a+c-1);
end
end
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
23964.74834020-4122991.37806186176597502.11690632-3260288682.1972771031898227709.80876200-181566275672.69705000 619956768219.91504000-1230092760464.934800001193508577123.06670000 -71714652666.11485300-587044042244.59863000-454093769462.97290000 1744941129911.71780000-2715153157131.341300002706193814657.00730000 758555481068.28345000-2729174782832.09330000-650678553386.91565000 770544482197.08948000661071297466.389400003114329102228.31640000 -2419453655729.64110000-2498342518894.922900001991167370388.64180000 806469536595.88586000-3357159715176.254400003434745294165.19480000 -1115456797533.65920000835226816241.179930001614362560020.15380000 -2300534244207.34180000781205861296.42358000-3724002810480.48780000 -101978267755.295900003815588397071.54350000-269576755745.41956000 -2354847317920.947800005144417865217.228500001355869718979.75980000 1213622862842.97950000-11349162850658.63300000367430197567.42474000 2362009479539.30520000712955508308.938350005794833430082.82320000 -2649289143449.391600002040834706833.95900000-2941986228491.25980000 -2402163300368.774400002234821162570.22750000
4、当n为100时,在command窗口输入如下代码:
format long
n=100;
for a=1:n;
for c=1:n;
A(a,c)=1/(a+c-1);
end
end
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
-165617.1532689928442933.35865056-1198435487.04943940 21486760244.19754400-201373104442.327700001078082536048.55210000 -3359286903640.50000000 5709542237195.77050000-3874331687877.81350000 -829892270872.19580000-1967322218199.680400007982819330278.76070000 1213029690156.88990000-10735970375754.32600000762638472140.30078000 428060429909.995420009446910367399.21870000-5444790674141.98340000 7943864825269.35640000-12444580627249.047000003882692758366.57230000 -5987397744766.25100000 5662577299892.742200005126170554051.82620000 -9610047420412.31450000 12856271352701.56800000-9589605026775.01560000 -2444078934897.28960000 8975946626070.38090000-2005484489157.63130000 3675207098095.15430000-11796755688486.143000002635749164788.96780000 -1391667139033.63600000 -4925361880835.217800007760201046620.72560000 3177048652010.23830000-1660111689637.1697000017106703091341.60700000 -4183367998776.74900000 -9050281636210.44730000-3443653770672.85890000 7613626827967.19820000-27292079128178.34400000-3324815769929.91210000 23300803936314.81600000 -11356310288948.8670000010923789711648.75800000 -13401088615825.0920000017970247866003.00000000-9679755802589.19730000 16174889741901.94500000 -10909579864796.385000007545679893084.42290000 8996723425570.9883000012709789045568.57600000-17085679755478.76000000 1179611746389.40920000-13066251601848.248000003787285770590.26510000 -18439877686630.5040000020877875192069.46900000-25631762378766.18700000 -19193678497456.85500000-2221136355160.68900000-3315613437010.98930000 18975925971181.35500000 19739707253794.629000001881838919237.33400000 11454893085140.30700000 30801635220079.617000007161442584152.82910000 -16074251464421.46300000-7709130621321.951200001335376684881.13500000 -393512297638.43860000-8733213053985.36910000-35995689236329.05500000 15407926775193.27700000 -609162661193.12512000-4400619113085.39650000 346032863613.36517000-18611757295820.54300000-1040193463248.05440000 10041692625877.11900000 -14815863623738.0350000020088901435797.52000000 3249116745776.0654000011755355855202.7250000028926235452943.75400000 27962180449728.39800000-23174735232056.87500000-20208579671753.25000000 -10317216154286.07800000-29884207777479.6910000025102669265480.31200000 -12108818003588.869000007425093906782.792000005388736564258.16210000 371024307363.73108000
实验一、高斯列主元消元法解方程组
题目:
求解: , , ,n=4;6;50;100;……
求解精度为 ,并验证: 及 / 随着n的逐渐增大,你会发现什么?
一、实验目的:
1、学习使用matlab编写数值计算程序。
2、了解高斯列主元消元法解方程组原理和编程方法。
3、根据高斯列主元消元法解方程组原理编写matlab程序,并运行得出结果。
x(n) = b(n)/A(n,n);
for k = n-1:-1:1
x(k)=b(k);
for p=n:-1:k+1
x(k) = x(k)-A(k,p)*x(p);
end
x(k)=x(k)/A(k,k);
end
%use the function。
%求矩阵A的大小。
% 初始化x为0。
% 增广矩阵
%for循环
%找列主元所在子矩阵的行r
%列主元所在大矩阵的行
%矩阵为0,报错
%把增广矩阵消元成为上三角
%解上三角方程组
%求得x值
四、实验数据及结果:
1、当n为4时,在command窗口输入如下代码:
format long
n;
A(a,c)=1/(a+c-1);
end
end
二、实验原理:
如此至多经过n-1步,就得到与之同解的上三角形方程组的增广矩阵,再用回代过程即可得方程组的解.
三、实验内容与步骤:
1、实验内容:依照实验原理编写高斯列主元消元法解方程组的程序。
2、实验步骤:首先,在电脑上安装matlab,然后,启动matlab,新建一个gauss.m文件。
实验程序如下:
Aug(k,:)=Aug(r,:);
Aug(r,:)=temp;
end
if Aug(k,k)==0, error('对角元出现0'),
end
for p = k+1:n
Aug(p,:)=Aug(p,:)-Aug(k,:)*
Aug(p,k)/Aug(k,k);
end
end
A = Aug(:,1:n); b = Aug(:,n+1);
for c=1:n;
A(a,c)=1/(a+c-1);
end
end
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
-216.000000047350.00000120-57120.00000827
166320.00002178 -201600.00002425 85932.00000962
程序代码
程序代码说明
function x = gauss(A,b)
[n,n] = size(A);
x = zeros(n,1);
Aug = [A,b];
for k = 1:n-1
[piv,r]=max(abs(Aug(k:n,k)));
r = r + k - 1;
if r>k
temp=Aug(k,:);
5、当n为4时,在command窗口输入如下代码:
format long
n=4;
for a=1:n;
for c=1:n;
A(a,c)=1/(a+c-1);
b=[1:n]';
x=gauss(A,b);
fprintf('%12.8f ',x)
实验结果为:
-64.00000000 900.00000000 -2520.00000000 1820.00000000
2、当n为6时,在command窗口输入如下代码:
format long
n=6;
for a=1:n;