
| 课程名称 | 数学软件实验 | 班级 | 数学0901 | ||
| 学号 | 0912020112 | 姓名 | *** | ||
| 实验课题 | 线性方程组高斯消去法,高斯列主元消去法,高斯全主元消去法 | ||||
| 实验目的 | 熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法 | ||||
| 实验要求 | 运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成 | ||||
| 实验内容 | 线性方程组高斯消去法 线性方程组高斯列主元消去法 线性方程组高斯全主元消去法 | ||||
| 成绩 | 教师 | ||||
实验名称:Guass消元法编程求解线性方程
实验目的:进一步熟悉理解Guass消元法解法思路
学习matlab编程
实验要求:
已知:线性方程矩阵
输出:线性方程组的解
程序流程:
输入矩阵
调用函数求解矩阵
输出方程组的解
实验原理:
消元过程:
设,令乘数,做(消去第i个方程组的)操作×第1个方程+第i个方程(i=2,3,.....n)
则第i个方程变为
这样消去第2,3,… ,n个方程的变元后。原线性方程组变为
这样就完成了第1步消元。
对线性方程组中有第2,3,.。。N个方程组成的n—1元线性方程组做同样的处理,消去其除第一个方程组之外的所有变元,可得到
依次类推,当做到n-1步消元后,就完成了Guass消元过程,得到上三角方程组
实验内容:利用Guass消元操作的原理,求解线性方程组
回代过程:
在最后的一方程中解出,得:
再将的值代入倒数第二个方程,解出,依次往上反推,即可求出方程组的解:
其通项为
流程图如下:
否
是
运用Guass消元法求解
输出结果
程序如下:
function [A X Y]=togglebutton3_Callback(hObject, eventdata, handles)
% hObject handle to togglebutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename,pathname]=uigetfile('.txt','打开系数矩阵数据文件');
filepath=strcat(pathname,filename);
A=load(filepath)
if ~isempty(filepath)
A=load(filepath);
X=A(:,1)';
Y=A(:,2)';
handles.A=A;
handles.X=X;
handles.Y=Y;
guidata(hObject, handles);
else
msgbox('打开文件失败','对话框','warn');
end
A1=A
set(handles.text1,'string',A1)
[n,m]=size(A);
b=A(1:n,m);
dataA1=A(:,1:n);
y=inv(dataA1)*b; %matlab的计算结果
n=length(b);%方程个数n
x=zeros(n,1);%未知向量]
%判断是否非奇异
for i=1:n
if det(dataA1(1:i,1:i))==0
msgbox('矩阵输入有误,请修改','对话框','warn');
exit;
end
end
%-------------消去-----------
for k=1:n-1
if A(k,k)==0;
T=A(k,:);
A(k,:)=A(k+1,:);
A(k+1,:)=T;
break
end
for i=k+1:n
% A(i,k)=A(i,k)/A(k,k);
Aik=A(i,k)/A(k,k);
for j=k:n
A(i,j)=A(i,j)-Aik*A(k,j);
end
A;
b(i)=b(i)-Aik*b(k);
end
end
%-------------回代-----------
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
S=b(k);
for j=k+1:n
S=S-A(k,j)*x(j);
end
x(k)=S/A(k,k);
end
x %程序的计算结果
调试
输入数据:3 -5 6 50 -2 -3 8 11
1 1 -9 15 1 -9 2 2
2 -1 7 5 -1 6 11 29
-1 1 3 2 7 -1 -2 9
4 3 1 -7 2 1 1 5
2 9 -8 11 -1 -4 -1 8
7 2 -1 2 7 -1 9 25
输出结果:
x =
-1.7853
2.2529
0.6746
0.0746
1.2013
0.0337
2.7934
