三种消元法程序——数学软件实验报告
数值分析实验,用程序实现Gauss消元法

《数值分析》实验报告实验序号:实验一实验名称:一实验目的:用Microsoft visual c++编写一个功能与Windows 计算器一样的计算器。
二实验内容:(1)算法介绍:计算方法分析:Gauss消元法的基本做法就是把方程组转化成为一个如下图的等价的三角方程组,这个过程叫做消元。
得到三角方程组后,就可以逐个求出Xn,Xn-1,…,X1,这个过程叫回代。
程序代码分析:建立两个数组a和b,通过循环语句将n阶增广矩阵输入进去,通过对列的循环对每一列进行消去未知数,通过n小步n大步把矩阵化简成上三角形矩阵,最后通过迭代法解得方程组得解。
(2)算法分析:程序中只用到一个主函数,求解线形方程组得算法都放在主函数中,利用以下函数进行求解:a[i][j] = a[i][j] - (a[i][k] / a[k][k]) * a[k][j];迭代:x[n] = a[n][n + 1] / a[n][n];for(i = n - 1;i >= 1;i --){sum = 0.0;for(j = n;j >= i + 1;j --){sum = sum + a[i][j] * x[j];}//cout << sum << endl;x[i] = (a[i][n + 1] - sum) / a[i][i];}(3)原代码:#include<iostream>#include <stdio.h>#include <cmath>#define N 1000using namespace std;double a[N][N];double b[N];int main(){int n,i,j,k;double m;double x[N];printf("***Gauss消元法***:\n\n");while(printf("输入矩阵的阶数:")){scanf("%d",&n);printf("输入增广矩阵:\n");for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%lf",&a[i][j]); ;}scanf("%lf",&b[i]);}for(i=1;i<n;i++){for(k=i+1;k<=n;k++){m=a[k][i]*1/a[i][i]*1;for(j=i;j<=n;j++){a[k][j]= a[k][j]-a[i][j]*m;}b[k]= b[k]-b[i]*m*1;}printf("经过第%d大步后增广矩阵为:\n",i);for(int l=1;l<=n;l++){for(j=1;j<=n;j++)printf("%f ",a[l][j]);printf("%f ",b[l]);printf("\n");}}for(i=n;i>0;i--){double sum=0;for(j=i+1;j<=n;j++){sum =sum+a[i][j]*x[j]*1;}x[i]=(b[i]-sum)*1/a[i][i]*1;}printf("线性方程组的解为: \n");for(i=1;i<=n;i++){if(x[i]==0)x[i]=abs(x[i]);printf("x[%d]=%f\n",i,x[i]);}}return 0;}三实验截图:四实验结果分析:消去第k个元素时,对矩阵作加法和乘法各(n-k)*(n-k)次,除法运算(n-k)次,对右端作加法和乘法各(n-k)次,加法和乘法运算分别各n*(n-1)*(n-1/2)/3和n*(n-1)/2次,消元时还有n*(n-1)/2次除法运算,另外回代过程加法和乘法运算各n*(n-1)/2,除法运算n次。
guess消元法

{
for(j=1;j<=n+1;j++)
{
cin>>a[i][j];
}
}
for(k=1;k<=n-1;k++)
{
for(i=k+1;i<=n;i++)
{
for(j=k+1;j<=n+1;j++)
{
a[i][j]=a[i][j]-(a[i][k]/a[k][k])*a[k][j];
《数值分析》实验报告
实验序号:实验一题目名称:Gauss消元法解方程组
学号:XXXXXXX姓名:XXX
任课教师:XXXX专业班级:算机科学与技术(师范)
1、实验目的:
编写用Gauss消元法解线形方程组的程序
2、实验分析:
计算方法分析:
Gauss消元法的基本做法就是把方程组转化成为一个如下图的等价的三角方程组,这个过程叫做消元。得到三角方程组后,就可以逐个求出Xn,Xn-1,…,X1,这个过程叫回代。
程序代码分析:
建立两个数组a和b,通过循环语句将n阶增广矩阵输入进去,通过对列的循环对每一列进行消去未知数,通过n小步n大步把矩阵化简成上三角形矩阵,最后通过迭代法解得方程组得解。
3、函数分析:
程序中只用到一个主函数,求解线形方程组得算法都放在主函数中,
利用以下函数进行求解:
a[i][j]=a[i][j]-a[i][k]/a[k][k]*a[k][j];
b[i]=b[i]-a[i][k]/a[k][k]*b[k];
迭代:
for(i=n-1;i>0;i--)
[数学软件及应用(Lingo)实验报告范文]lingo实验报告范文心得
![[数学软件及应用(Lingo)实验报告范文]lingo实验报告范文心得](https://img.taocdn.com/s3/m/b2e98c482f3f5727a5e9856a561252d380eb20b2.png)
[数学软件及应用(Lingo)实验报告范文]lingo实验报告范文心得2022~2022学年第二学期短学期《数学软件及应用(Lingo)》实验报告班级数学131班姓名张金库学号成绩实验名称奶制品的生产与销售方案的制定完成日期:2022年9月3日实验名称:奶制品的生产与销售方案的制定二、实验目的及任务了解并掌握LINGO的使用方法、功能与应用;学会利用LINGO去解决实际中的优化问题。
三、实验内容问题一奶制品加工厂用牛奶生产,两种奶制品,1桶牛奶可以在甲类设备上用12h加工成3kg,或者在乙类设备上用8h加工成4kg。
根据市场的需求,生产,全部能售出,且每千克获利24元,每千克获利16元。
现在现在加工场每天能的到50桶牛奶的供给,每天正式工人总的劳动时间为480h,并且甲类设备每天至多能加工100kg,乙类设备的加工能力没有限制。
为增加工厂的利益,开发奶制品的深加工技术:用2h和3元加工费,可将1kg加工成0.8kg高级奶制品,也可将1kg加工成0.75kg高级奶制品,每千克能获利44元,每千克能获利32元。
试为该工厂制订一个生产销售方案,使每天的净利润最大,并讨论以下问题:假设投资30元可以增加供给1桶牛奶,投资3元可以增加1h的劳动时间,应否做这些投资?假设每天投资150,可以赚回多少?每千克高级奶制品,的获利经常有10%的波动,对制订的生产销售方案有无影响?假设每千克获利下降10%,方案应该变化吗?假设公司已经签订了每天销售10kg的合同并且必须满足,该合同对公司的利润有什么影响?问题分析要求制定生产销售方案,决策变量可以先取作每天用多少桶牛奶生产,,再添上用多少千克加工,用多少千克加工,但是问题要分析,的获利对生产销售方案的影响,所以决策变量取作,,,每天的销售量更为方便。
目标函数是工厂每天的净利润——,,,的获利之和扣除深加工费用。
根本模型决策变量:设每天销售kg,kg,kg,kg,用kg加工,用kg加工。
matlab线性方程组数值求解实验报告

湖南大学电气与信息工程学院 《数值计算》课程 上机实验报告一. 实验目的:了解gauss 消去法和迭代法matlab 算法实现求任意方程组的根。
二. 实验内容:用gauss 消去法和迭代法求解下列线性方程组:263234323923321321321=++=++=++x x x x x x x x x1.求出gauss 消去法的上三角矩阵和方程组的解321,,x x x ,并在命令窗口显示;2.显示迭代法求解过程中所有结果(,,,,,,,,,321131*********NN N x x x x x x x x x ⋯⋯)要求求解精度达到10^-5.三. 算法介绍或方法基础1) 消去法:消元过程:设0)0(11≠a ,令乘数)0(11)0(11/a a m i i -=,做(消去第i 个方程组的i x )操作1i m ×第1个方程+第i 个方程(i=2,3,.....n )则第i 个方程变为1)1(2)1(2...i n in i b x a x a =++ 这样消去第2,3,。
,n 个方程的变元i x 后。
原线性方程组变为:⎪⎪⎪⎩⎪⎪⎪⎨⎧=++=++=++)1()1(2)1(2)1(2)1(22)1(22)0(1)0(11)0(11... . .... ...n n nn n n n n n b x a x a b x a x a b x a x a 这样就完成了第1步消元。
回代过程:在最后的一方程中解出n x ,得:)1()1(/--=n nn n n n a b x再将n x 的值代入倒数第二个方程,解出1-n x ,依次往上反推,即可求出方程组的解: 其通项为3,...1-n 2,-n k /)()1(1)1()1(=-=-+=--∑k kk nk j j k kj k kk a x abx高斯赛德尔迭代法:由雅可比迭代公式可知,在迭代的每一步计算过程中是用()k x的全部分量来计算()1+k x的所有分量,显然在计算第i 个分量()1+k ix 时,已经计算出的最新分量()()1111+-+k i k x ,...,x 没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第1+k 次近似()1+k x 的分量()1+k jx 加以利用,就得到所谓解方程组的高斯—塞德(Gauss-Seidel )迭代法.把矩阵A 分解成U L D A --= (6)其中()nn a ,...,a ,a diag D 2211=,U ,L --分别为A 的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 ()b Ux x L D +=-即 22f x B x +=其中()()b L D f ,U L D B 1212---=-= (7)以2B 为迭代矩阵构成的迭代法(公式)()()221f x B x k k +=+ (8)称为高斯—塞德尔迭代法(公式),用 量表示的形式为⎩⎨⎧[],...,,k ,n ,,i x a x a b a xi j n i j )k (j ij )k (j ij i ii)k (i21021111111==∑∑--=-=+=++ (9)由此看出,高斯—塞德尔迭代法的一个明显的优点是,在电算时,只需一组存储单元(计算出()1+k ix 后()k ix 不再使用,所以用()1+k ix 冲掉()k ix ,以便存放近似解.四.程序1)消去法:function x=gauss(A,b)n=length(b);A=[A,b];for k=1:(n-1)A((k+1):n,(k+1):(n+1))=A((k+1):n,(k+1):(n+1))... -A((k+1):n,k)/A(k,k)*A(k,(k+1):(n+1));A((k+1):n,k)=zeros(n-k,1);Aendx=zeros(n,1);x(n)=A(n,n+1)/A(n,n);for k=n-1:-1:1x(k,:)=(A(k,n+1)-A(k,(k+1):n)*x((k+1):n))/A(k,k);end2)迭代法:function EX()a=input('请输入系数矩阵a:');b=input('请输入矩阵b:');N=input('请输入最大迭代次数N:');esp=input('请输入近似解的误差限:');if any(diag(a))==0error('系数矩阵错误,迭代终止!')endD=diag(diag(a));X0=zeros(size(b));x1=0;x2=0;x3=0;X1=[x1;x2;x3];h=inv(D)*b;B=inv(D)*(D-a);B1=triu(B);B2=tril(B);k=1;fprintf('高斯-赛德尔迭代法');fprintf('第0次迭代得:')disp(X1');while k<=Nx1=h(1,1)+B1(1,:)*X0;X1=[x1;x2;x3];x2=h(2,1)+B1(2,:)*X0+B2(2,:)*X1;X1=[x1;x2;x3];x3=h(3,1)+B2(3,:)*X1;X1=[x1;x2;x3];if norm(X1-X0,inf)<espfprintf('已满足误差限。
消元法的基本步骤-概述说明以及解释

消元法的基本步骤-概述说明以及解释1.引言1.1 概述消元法是一种常用的数学求解方法,用于解决代数方程组或方程的问题。
通过使用代数运算,消元法能够将复杂的方程组转化为简单的形式,从而得到其解或者简化问题的求解过程。
消元法作为解决方程问题的经典方法,在数学和工程领域得到广泛应用。
本文将介绍消元法的基本步骤,包括定义、具体操作步骤以及应用领域。
通过了解消元法的原理和应用,读者可以更好地理解和运用这一方法来解决各类数学问题。
在接下来的章节中,我们将详细介绍消元法的定义和基本步骤。
首先,我们将通过对消元法的概述,了解其基本原理和工作方式。
接着,我们将介绍本文的结构和组织方式,以便读者能够更好地理解和阅读后续内容。
本文的目的是为读者提供一个清晰的消元法概述,并将其应用于实际问题中。
通过掌握消元法的基本步骤,读者将能够更加灵活地运用这一方法解决各种数学问题,并深入了解其在实际领域中的应用价值。
在下一章中,我们将详细介绍消元法的定义,包括其基本原理和使用方法。
请继续阅读下一章节,以了解更多有关消元法的知识。
1.2 文章结构文章结构部分的内容可以从以下几个方面进行阐述:1. 文章框架概述:在本节中,将对整篇文章的结构进行概括性的介绍,包括引言、正文和结论三个主要部分的内容以及各自的目的。
2. 引言部分:本部分主要用于引入文章的主题,并对消元法的基本概念进行简要阐述。
同时,说明为何对消元法进行研究和探讨的必要性。
3. 正文部分:本部分是文章的核心,详细讲解了消元法的基本步骤及其应用领域。
在对消元法的基本步骤进行阐述时,可以按照具体的操作流程进行分步骤的描述,并且可以配以图表进行说明,以便读者更好地理解和掌握。
在讲解消元法的应用领域时,可以列举一些常见或重要的实际案例并进行具体分析,说明消元法在不同领域的重要性和实用性。
4. 结论部分:本部分用于对全文进行总结和归纳。
首先,对消元法的重要性进行总结,强调其在实际问题求解中的作用和意义。
数值分析实验报告心得(3篇)

第1篇在数值分析这门课程的学习过程中,我深刻体会到了理论知识与实践操作相结合的重要性。
通过一系列的实验,我对数值分析的基本概念、方法和应用有了更加深入的理解。
以下是我对数值分析实验的心得体会。
一、实验目的与意义1. 巩固数值分析理论知识:通过实验,将课堂上学到的理论知识应用到实际问题中,加深对数值分析概念和方法的理解。
2. 培养实际操作能力:实验过程中,我学会了使用Matlab等软件进行数值计算,提高了编程能力。
3. 增强解决实际问题的能力:实验项目涉及多个领域,通过解决实际问题,提高了我的问题分析和解决能力。
4. 培养团队协作精神:实验过程中,我与同学们分工合作,共同完成任务,培养了团队协作精神。
二、实验内容及方法1. 实验一:拉格朗日插值法与牛顿插值法(1)实验目的:掌握拉格朗日插值法和牛顿插值法的原理,能够运用这两种方法进行函数逼近。
(2)实验方法:首先,我们选择一组数据点,然后利用拉格朗日插值法和牛顿插值法构造插值多项式。
最后,我们将插值多项式与原始函数进行比较,分析误差。
2. 实验二:方程求根(1)实验目的:掌握二分法、Newton法、不动点迭代法、弦截法等方程求根方法,能够运用这些方法求解非线性方程的根。
(2)实验方法:首先,我们选择一个非线性方程,然后运用二分法、Newton法、不动点迭代法、弦截法等方法求解方程的根。
最后,比较不同方法的收敛速度和精度。
3. 实验三:线性方程组求解(1)实验目的:掌握高斯消元法、矩阵分解法等线性方程组求解方法,能够运用这些方法求解线性方程组。
(2)实验方法:首先,我们构造一个线性方程组,然后运用高斯消元法、矩阵分解法等方法求解方程组。
最后,比较不同方法的计算量和精度。
4. 实验四:多元统计分析(1)实验目的:掌握多元统计分析的基本方法,能够运用这些方法对数据进行分析。
(2)实验方法:首先,我们收集一组多元数据,然后运用主成分分析、因子分析等方法对数据进行降维。
数学实验报告的总结(3篇)

第1篇一、实验背景随着科技的不断发展,数学实验在各个领域中的应用越来越广泛。
数学实验作为一种以计算机为工具,通过模拟、计算和验证等方法,对数学理论进行实践探索和研究的方法,已经成为数学研究的重要手段。
本次实验旨在通过数学实验,加深对数学理论的理解,提高数学应用能力,培养创新意识和团队协作精神。
二、实验目的1. 熟悉数学实验的基本方法,掌握数学实验的基本步骤。
2. 通过实验,加深对数学理论的理解,提高数学应用能力。
3. 培养创新意识和团队协作精神,提高自身综合素质。
三、实验内容本次实验主要包括以下内容:1. 实验一:线性方程组的求解通过编写程序,实现线性方程组的直接法、迭代法等求解方法,并对比分析各种方法的优缺点。
2. 实验二:矩阵运算实现矩阵的加法、减法、乘法、转置等基本运算,以及求逆矩阵、特征值和特征向量等高级运算。
3. 实验三:数值积分通过编写程序,实现定积分、变积分、高斯积分等数值积分方法,并分析各种方法的误差和适用范围。
4. 实验四:常微分方程的数值解法实现欧拉法、龙格-库塔法等常微分方程的数值解法,并对比分析各种方法的稳定性、精度和适用范围。
四、实验过程1. 确定实验内容,明确实验目的。
2. 设计实验方案,包括实验步骤、算法选择、数据准备等。
3. 编写实验程序,实现实验方案。
4. 运行实验程序,收集实验数据。
5. 分析实验数据,得出实验结论。
6. 撰写实验报告,总结实验过程和结果。
五、实验结果与分析1. 实验一:线性方程组的求解通过实验,验证了直接法和迭代法在求解线性方程组时的有效性。
直接法在求解大规模线性方程组时具有较好的性能,而迭代法在求解稀疏线性方程组时具有较好的性能。
2. 实验二:矩阵运算实验结果表明,矩阵运算的程序实现具有较高的精度和效率。
在实际应用中,可以根据具体需求选择合适的矩阵运算方法。
3. 实验三:数值积分通过实验,验证了各种数值积分方法的有效性。
高斯积分具有较高的精度,但在求解复杂函数时,需要调整积分区间和节点。
高斯消元法与列主元消去法实验报告

实验报告:Gauss消元法小组成员:李岚岚、邱粉珊、缪晓浓、杨水清学号:0917020040、0917010078、0917010073、0917010112一、实验问题编写两个程序,分别利用Gauss消元法和列主元消去法求解方程组二、分析及其计算过程Gauss顺序消元法:源程序:function [x]=gaussl(A,b)[n1,n2]=size(A);n3=size(b);if n1~=n2|n2~=n3|n1~=n3disp('A的行和列的维数不同!');return;endif det(A)==0disp('系数矩阵A奇异');return;end%消元过程L=eye(n1);for j=2:n1for i=j:n1L(i,j-1)=A(i,j-1)/A(j-1,j-1);A(i,:)=A(i,:)-L(i,j-1)*A(j-1,:);b(i)=b(i)-L(i,j-1)*b(j-1);endend%回代过程x(n1)=b(n1)/A(n1,n1);for t=n1-1:-1:1for k=n1:-1:t+1b(t)=b(t)-A(t,k)*x(k);endx(t)=b(t)/A(t,t);end程序的运行以及结果:>>A=[1 2/3 1/3;9/20 1 11/20;2/3 1/3 1];>>b=[2 2 2];>> [x]=gaussl(A,b)x =1 1 1Gauss列主元消去法:源程序:function [x]=gaussll(A,b) [n1,n2]=size(A);n3=size(b);if n1~=n2|n1~=n3|n2~=n3disp('输入的方程错误!');return;endif det(A)==0disp('系数矩阵A奇异');return;endmax=zeros(n1);for m=1:n1%找主元for i=m:n1if abs(A(i,m))>maxmax=A(i,:);A(i,:)=A(m,:);A(m,:)=max;maxb=b(i);b(i)=b(m);b(m)=maxb;endend%消元过程L=eye(n1);for j=2:n1for i=j:n1L(i,j-1)=A(i,j-1)/A(j-1,j-1);A(i,:)=A(i,:)-L(i,j-1)*A(j-1,:);b(i)=b(i)-L(i,j-1)*b(j-1);endendend%回代过程x(n1)=b(n1)/A(n1,n1);for t=n1-1:-1:1for k=n1:-1:t+1b(t)=b(t)-A(t,k)*x(k);endx(t)=b(t)/A(t,t);end程序的运行以及结果:>>A=[-0.002 2 2;1 0.78125 0;3.996 5.5625 4]; >>b=[0.4 1.3816 7.4178];>>[x]= gaussll(A,b)x =1.9273 -0.6985 0.9004。
数值分析实验报告三

grid
[k,x,wuca,yx]=erfen (﹣1,1,10^-5)
2)运行结果
ans =
0 -1.0000 1.0000 0 1.0000 -11.6321 10.7183 -1.0000
ans =
1.0000 0 1.0000 0.5000 0.5000 -1.0000 10.7183 4.6487
ans =
11.0000 0.0898 0.0908 0.0903 0.0005 -0.0076 0.0033 -0.0021
ans =
12.0000 0.0903 0.0908 0.0906 0.0002 -0.0021 0.0033 0.0006
ans =
13.0000 0.0903 0.0906 0.0905 0.0001 -0.0021 0.0006 -0.0008
ans =
7.0000 0.1256 0.0008 0.0033 0.0262
ans =
8.0000 0.1240 0.0002 0.0016 0.0129
ans =
9.0000 0.1233 0.0000 0.0007 0.0056
ans =
9.0000 0.1233 0.0000 0.0007 0.0056
(2)、Use the iteration method ,the initial value .
2、The equation has two roots near 0.1.
Determine them by means ofNewton’s method.
(with accuracy )
3、用迭代法求方程 附近的一个根。方程写成下
k = 9
列主元消去法解方程组实验报告

实验名称: 列主元消去法解方程组 1 引言我们知道,高斯消去法是一个古老的解线性方程组的方法。
而在用高斯消去法解Ax=b时,其中设A 为非奇异矩阵,可能出现()0k kka =的情况,这时必须进行带行交换的高斯消去法。
但在实际计算中即使()0k kk a ≠但其绝对值很小时,用()k kka 作除数,会导致中间结果矩阵()k A 元素数量级严重增长和舍入误差的扩散,使得最后的结果不可靠。
因此,小主元可能导致计算的失败,我们应该避免采用绝对值很小的主元素。
为此,我们在高斯消去法的每一步应该在系数矩阵或消元后的低阶矩阵中选取绝对值最大的元素作为主元素,保持乘数1ik m ≤,以便减少计算过程中舍入误差对计算解的影响。
一种方式是完全主元消去法,这种消去法是在每次选主元时,选择()()max 0k kk k i j ij k i nk j na a ≤≤≤≤=≠为主元素。
这种方法是解低阶稠密矩阵方程组的有效方法,但这种方法在选取主元时要花费一定的计算机时间。
实际计算中我们常采用部分选主元的的消去法。
列主元消去法即在每次选主元时,仅依次按列选取绝对值最大的元素作为主元素,且仅交换两行,再进行消元计算。
2 实验目的和要求运用matlab 编写一个.m 文件,要求用列主元消去法求解方程组(实现PA=LU ):12345671111111721111118321111110432111113543211117654321122765432128x x x x x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎣⎦要求输出以下内容: (1) 计算解x ; (2) L,U ;(3) 整形数组IP (i )(i=1,2,…,n-1)(记录主行信息)3 算法原理与流程图(1) 算法原理设有线性方程组A x =b ,其中设A 为非奇异矩阵。
Gauss消去法实验报告

a1(10)
x1
.
.
.
a(0) 1n
xn
b1(0)
a (1) 22
x2
.
.
.
a (1) 2n
xn
b2(1)
.
.
a (1) n2
x2
...
a (1) nn
xn
bn(1)
这样就完成了第 1 步消元。
回代过程:
在最后的一方程中解出
xn
,得:
xn
b ( n 1) n
%计算乘子 % 对 k+1~n 项进 行消元 %增广矩阵第 i 行 减去第 k 行的乘子 倍目的是将该矩 阵中的第 k 列中 a(k,k)以下的元 素全部消为零 %回代求解
%此循环用来求 a (j,k)*x(j)由 k+1~n 项的和 %输出最终的解 X
end
x=zeros(n,1);
x(n)=b(n)/a(n,n);
实验二、列主元法解线性方程组
一、实验目的: 1、学习使用 matlab 编写数值计算程序。 2、了解列主元消去法的基本原理和解法思路及相应的编程方法。 3、根据列主元法的原理编写 matlab 程序,并运行出相应的结果,提高 matlab 编程能力。
二、实验原理:
由一般线性方程组在使用 Gauss 消去法求解时,从求解过程中可以清楚地看到,若
a(k 1) kk
0
,必须施以行交换的手续,才能使消去过程继续下去。有时既使
a(k kk
1)
0
,
但其绝对值很小,由于舍入误差的影响,消去过程也会出现不稳定现象。因此,为
消元法实验报告3

西京学院数学软件实验任务书实验一全主元消去法【实验内容】1.掌握全主元消去法的基本思路和迭代步骤2.并能够利用全主元的高斯消去法解任意阶数的线性方程组;3、从课后题中选一题进行验证,得出正确结果,交回实验报告与计算结果。
【实验方法与步骤】全主元消去法基本思路(1)消元过程。
对于k=1,2,...,n-1,进行下列运算:①选主元,确定r,t使得若art=0,则系数矩阵为奇异的,停止计算;否则进行下一步。
②交换A中的r、t两行及t、k两列,并记下交换的号码t、k。
③对于i=k+1,k+2,…n;j=k+1,k+2,…n+1,计算(2)回代过程。
对于k=n,n-1,…,1,计算(3)恢复解的顺序【实验目的】能熟练运用全消元来解线性方程组%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 【实验程序】function [x,XA]=GuassQuan(A,b)N=size(A);n=N(1);index_l=0;index_r=0;order=1:n;for i=1:(n-1)me=max(abs(A(1:n,i)));for k=i:nfor r=i:nif(abs(A(k,r))==me) index_l=k;index_r=r;k=n;break;endendendtemp=A(i,1:n);A(i,1:n)=A(index_l,1:n);A(index_l,1:n)=temp;bb=b(index_l);b(index_l)=b(i);b(i)=bb;temp=A(1:n,i);A(1:n,i)=A(1:n,index_r);A(1:n,index_r)=temp;pos=order(i);order(i)=order(index_r);order(index_r)=pos;for j=(1+i):nif(A(i,i)==0)disp('对角元素为0!');return;endl=A(j,i);m=A(i,i);A(j,1:n)=A(j,1:n)-l*A(i,1:n)/m; b(j)=b(j)-l*b(i)/m;endendx=solveUpTriangle(A,b);y=zeros(n,1);for i=1:nfor j=1:nif(order(j)==i)y(i)=x(j);endendendx=y;XA=A;end例:A=[1 3 8;-5 2 9;0 1 4]>> b=[1;1;1]运行结果:x =0.3158-1.31580.5789XA =-5.0000 2.0000 9.0000 0 3.4000 9.8000 0 0 1.1176。
北理工数学实验报告

实验名称:线性代数实验——矩阵运算与线性方程组的求解实验目的:1. 理解矩阵的基本概念和运算规则。
2. 掌握线性方程组的求解方法。
3. 利用数学软件进行矩阵运算和线性方程组的求解。
实验时间:2023年X月X日实验地点:北理工计算机实验室实验器材:1. 计算机2. MATLAB软件3. 纸和笔实验内容:一、矩阵的基本运算1. 矩阵加法:给定两个矩阵A和B,它们的行数和列数必须相同。
矩阵加法是将对应位置的元素相加。
2. 矩阵减法:与矩阵加法类似,矩阵减法是将对应位置的元素相减。
3. 矩阵乘法:给定两个矩阵A和B,如果A的列数等于B的行数,则A与B可以进行乘法运算。
矩阵乘法的结果是一个新矩阵,其元素是A的行与B的列对应元素的乘积之和。
4. 转置矩阵:给定一个矩阵A,其转置矩阵A'的行数等于A的列数,列数等于A 的行数。
转置矩阵的元素是A中对应位置的元素。
二、线性方程组的求解1. 高斯消元法:通过行变换将线性方程组转化为上三角矩阵,然后逐步求解未知数。
2. 克莱姆法则:当线性方程组系数矩阵的行列式不为零时,可以求出每个未知数的唯一解。
3. MATLAB求解:利用MATLAB中的函数求解线性方程组。
实验步骤:1. 创建矩阵:在MATLAB中创建两个矩阵A和B,并观察它们的性质。
2. 矩阵运算:进行矩阵加法、减法、乘法和转置运算,并观察结果。
3. 线性方程组求解:利用高斯消元法、克莱姆法则和MATLAB函数求解线性方程组。
实验结果与分析:1. 矩阵运算:通过实验,我们掌握了矩阵的基本运算规则,并成功进行了矩阵加法、减法、乘法和转置运算。
2. 线性方程组求解:利用高斯消元法、克莱姆法则和MATLAB函数求解线性方程组,得到了正确的解。
3. MATLAB求解:通过MATLAB函数求解线性方程组,我们发现MATLAB具有强大的矩阵运算和线性方程组求解功能,能够方便地解决实际问题。
实验总结:本次实验使我们深入了解了矩阵的基本概念和运算规则,掌握了线性方程组的求解方法。
matlab解三元方程

matlab解三元方程一、引言在数学中,三元方程是一种包含三个未知数的方程。
解决三元方程是数学中的一个重要问题,它在实际应用中有着广泛的应用。
而MATLAB作为一种强大的数学软件,可以帮助我们解决三元方程。
本文将介绍如何使用MATLAB解决三元方程。
二、MATLAB解三元方程的方法MATLAB提供了多种方法来解决三元方程,其中最常用的方法是高斯消元法和LU分解法。
1. 高斯消元法高斯消元法是一种基本的线性代数方法,它通过消元的方式将方程组转化为上三角矩阵,然后通过回代求解未知数。
在MATLAB中,可以使用“\”运算符来实现高斯消元法。
例如,我们要解决以下三元方程组:x + 2y + 3z = 64x + 5y + 6z = 157x + 8y + 9z = 24可以使用以下代码来解决:A = [1 2 3; 4 5 6; 7 8 9];B = [6; 15; 24];X = A\B;其中,A是系数矩阵,B是常数矩阵,X是未知数矩阵。
通过“\”运算符,MATLAB会自动使用高斯消元法来解决方程组。
2. LU分解法LU分解法是一种将系数矩阵分解为下三角矩阵和上三角矩阵的方法,然后通过回代求解未知数。
在MATLAB中,可以使用“lu”函数来实现LU分解法。
例如,我们要解决以下三元方程组:x + 2y + 3z = 64x + 5y + 6z = 157x + 8y + 9z = 24可以使用以下代码来解决:A = [1 2 3; 4 5 6; 7 8 9];B = [6; 15; 24];[L,U] = lu(A);Y = L\B;X = U\Y;其中,L是下三角矩阵,U是上三角矩阵,Y是中间变量矩阵,X是未知数矩阵。
通过“lu”函数,MATLAB会自动使用LU分解法来解决方程组。
三、总结MATLAB是一种强大的数学软件,可以帮助我们解决三元方程。
本文介绍了MATLAB解决三元方程的两种方法:高斯消元法和LU分解法。
高斯消元法_实验报告

- - 华中科技大学数值分析实验报告系、年级研究生院2012级****类别硕士2013年5月6日实验6.1实验要求:根据教材实验6.1做出相应改编:分别使用Gauss 消元、列选主元。
全选主元的方法求解线性方程组,分别比拟三种消元方法的结果和算法的区别,并说明主元的选取在Gauss 消元的中的作用。
问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。
但由于计算机的数值运算是在一个有限的浮点数集合上进展的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。
主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
一般来说书本上采用的列选主元的方法对其线性方程组进展求解的,则我们是否可以选择一种行列都选取主元消去的方法来减小相应的误差呢?全主元消元法和列主元消元法一样都是由高斯消元法演变而来。
只不过选取主元的*围有所加大。
全选主元相对于列选主元的更加复杂化了,因为在运算的过程中导致了元的位置发生了变化,这样我们就不得不追踪每个元的位置。
本次实验就几个问题进展了matlab 实验分析,比拟几种计算方法的优劣性。
实验内容:考虑线性方程组编制一个程序:分别能进展Gauss 消去、列选主元Gauss 消去、全选主元Gauss 消去法进展解线性方程组。
对三种算法所得到的结果进展比拟,分析三种计算方法的准确性。
具体内容:〔1〕取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。
取n=10、n=20计算矩阵的条件数。
分别编写利用matlab 编写运算程序,实现Gauss消去、列选主元消去以及全选主元消去的方法。
比拟三种计算方法的运算结果。
在列选主元的过程中分别采用每步消去过程总选取按模最小或按模尽可能小的元素作为主元或每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
线性及其应用实验报告(3篇)

第1篇一、实验目的1. 理解线性结构的基本概念和特点。
2. 掌握线性结构的应用场景和实际操作。
3. 学习线性结构在计算机科学中的重要性。
4. 提高编程能力,通过实践加深对线性结构理解。
二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 2019三、实验内容1. 线性结构的基本概念2. 线性结构的应用场景3. 线性结构的基本操作4. 线性结构在实际项目中的应用四、实验步骤1. 线性结构的基本概念(1)定义:线性结构是一种数据结构,其中的元素按照一定的顺序排列,每个元素都有一个前驱和一个后继(或前驱和后继都为空)。
(2)特点:线性结构具有以下特点:a. 有且只有一个根节点;b. 每个节点有且只有一个前驱和一个后继;c. 除根节点外,其他节点都有且只有一个前驱和一个后继。
2. 线性结构的应用场景(1)栈:用于处理先入后出(FILO)的场景,如函数调用、表达式求值等。
(2)队列:用于处理先入先出(FIFO)的场景,如打印任务、任务调度等。
(3)链表:用于处理动态数据,如动态数组、动态内存管理等。
(4)双向链表:在链表的基础上增加前驱指针,方便前后遍历。
(5)循环链表:在链表的基础上增加尾节点指向头节点,形成环状结构。
3. 线性结构的基本操作(1)插入操作:在链表的指定位置插入一个新节点。
(2)删除操作:删除链表中的指定节点。
(3)查找操作:查找链表中的指定节点。
(4)遍历操作:遍历链表中的所有节点。
4. 线性结构在实际项目中的应用(1)文件系统:文件系统中,文件内容以线性结构存储,方便读写操作。
(2)数据库:数据库中,数据以线性结构存储,如行和列。
(3)操作系统:操作系统中的进程管理、内存管理等功能都涉及到线性结构。
(4)编译器:编译器中的语法分析、语义分析等功能也涉及到线性结构。
五、实验结果与分析1. 实验结果(1)成功实现线性结构的基本操作,如插入、删除、查找、遍历等。
消元法实验报告13

西京学院数学软件实验任务书一.线性方程组的直接三角分解法(Doolittle分解)设A为非奇异矩阵,且有分解式A=LU,其中L为单位下三角矩阵,U为上三角矩阵,则称此分解为Doolittle 分解。
此分解的目的是将Ax=b分解为两步,首先由Ly=b 解出y,再由Ux=y解出x。
以下为实现此分解的程序:function[x,l,u]=Doolittle(A,b)clcclear allformat shortn=input('请输入矩阵的阶数: ');A=zeros(n,n);for i=1:nfor j=1:nA(i,j)=input('请输入矩阵中的元素: ');endendAif det(A)~=0for i=1:nb(i)=input('请输入b中的元素: ');endb=b'u=zeros(n,n);l=eye(n,n);u(1,:)=A(1,:);for i=2:nfor m=1l(i,m)=A(i,m)/u(1,1);for k=2:nfor j=k:nu(k,j)=A(k,j)-sum(l(k,1:k-1)*u(1:k-1,j));for k=2:n-1l(k+1:n,k)=(A(k+1:n,k)-sum(l(k+1:n,1:k-1)*u(1:k-1,k)))/u (k,k);endendendendulendy=zeros(n,1);y(1)=b(1);for k=2:ny(k)=b(k)-l(k,1:k-1)*y(1:k-1);endx=zeros(n,1);x(n)=y(n)/u(n,n);for k=n-1:-1:1x(k)=(y(k)-u(k,k+1:n)*x(k+1:n))/u(k,k);endendend此程序运行时,首先输入一个系数矩阵A,和列向量b 如果系数矩阵A是非奇异矩阵,则矩阵最后可求得A分解后的矩阵L和矩阵U,以及列向量x。
工程数值分析实验报告(3篇)

第1篇一、实验目的本次实验旨在通过数值分析的方法,对工程实际问题进行建模、求解和分析。
通过学习数值方法的基本原理和算法,提高解决实际工程问题的能力。
二、实验内容1. 线性方程组的求解2. 矩阵特征值与特征向量的计算3. 函数插值与曲线拟合4. 数值微分与积分三、实验步骤1. 线性方程组的求解(1)编写程序实现高斯消元法、克劳斯消元法和列主元素法(2)设计输入界面,用户输入增广矩阵的行和列,填写系数及常数项(3)分别运用三种方法求解线性方程组,比较求解结果的正确性、数值稳定性和计算效率2. 矩阵特征值与特征向量的计算(1)编写程序实现幂法、QR算法和逆幂法(2)设计输入界面,用户输入矩阵的行和列,填写矩阵元素(3)分别运用三种方法计算矩阵的特征值与特征向量,比较求解结果的准确性和计算效率3. 函数插值与曲线拟合(1)编写程序实现拉格朗日插值、牛顿插值和样条插值(2)设计输入界面,用户输入函数的自变量和函数值,选择插值方法(3)分别运用三种方法进行函数插值,比较插值结果的准确性和光滑性4. 数值微分与积分(1)编写程序实现有限差分法、龙格-库塔法和辛普森法(2)设计输入界面,用户输入函数的导数或积分的上下限,选择数值方法(3)分别运用三种方法进行数值微分和积分,比较求解结果的准确性和计算效率四、实验结果与分析1. 线性方程组的求解通过实验,我们发现列主元素法在求解线性方程组时具有较好的数值稳定性,计算效率也较高。
而高斯消元法和克劳斯消元法在处理大型稀疏矩阵时存在一定的困难。
2. 矩阵特征值与特征向量的计算实验结果表明,QR算法和逆幂法在计算矩阵特征值与特征向量时具有较高的准确性和计算效率。
幂法在处理大型稀疏矩阵时表现出较好的性能。
3. 函数插值与曲线拟合在函数插值和曲线拟合实验中,样条插值方法具有较好的准确性和光滑性。
拉格朗日插值和牛顿插值方法在处理简单函数时表现良好,但在处理复杂函数时可能存在精度问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京大学数学软件实验任务书课程名称数学软件实验班级数学0901 学号0912020112 姓名****实验课题线性方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验目的熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成实验内容线性方程组高斯消去法线性方程组高斯列主元消去法线性方程组高斯全主元消去法成绩100 教师****实验一 高斯消去法求解线性方程组【实验名称】高斯消去法求解线性方程组【实验目的】进一步熟悉理解Guass 消元法解法思路,提高matlab 编程能力。
【实验要求】已知线性方程矩阵,利用软件求解线性方程组的解。
【实验原理】消元过程:设0)0(11≠a ,令乘数)0(11)0(11/a a m i i -=,完成以下步骤: 首先,进行消元操作(消去第i 个方程组的i x )1i m ×第1个方程+第i 个方程(i=2,3,.....n ),则第i 个方程变为1)1(2)1(2...i n in i b x a x a =++;这样消去第2,3,... ,n 个方程的变元i x 后。
原线性方程组变为:⎪⎪⎪⎩⎪⎪⎪⎨⎧=++=++=++)1()1(2)1(2)1(2)1(22)1(22)0(1)0(11)0(11... . .... ...n n nn n n n n n b x a x a b x a x a b x a x a这样就完成了第一步消元。
回代过程:在最后的一方程中解出n x ,得:)1()1(/--=n nnn n n a b x ;再将n x 的值代入倒数第二个方程,解出1-n x ,依次往上反推,即可求出方程组的解,其通项为:3,...,1-n 2,-n k /)()1(1)1()1(=-=-+=--∑k kk nk j j k kjk kk a x abx【程序设计】function maintest1 clc clear allnum=input('please input the order n=') A=zeros(num,num); for i=1:num for j=1:numA(i,j)=input(''); endend Aif det(A)~=0for i=1:numb(i)=input('');endb=b'num=length(b)for k=1:num-1for i=k+1:numif A(k,k)~=0l=A(i,k)/A(k,k);A(i,:)=A(i,:)-A(k,:).*l;b(i)=b(i)-b(k)*l;endendendAB%回代求xx(num)=b(num)/A(num,num);for i=num-1:-1:1sum=0;for j=i+1:numsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endxend【实验结论】高斯消元能很好的求解线性方程组,和用克莱姆法则求解方程组该算法简单而且求解次数少。
但是高斯顺序消元是有缺陷的,它并没有考虑主对角元素相对其他同列元素绝对值很小,有时会导致用绝对值较小的数字做分母而出现较大的数字与较小数字进行相加减运算而被“吞掉”的现象,以至于产出某一未知元较小的误差却引起其他元更大的误差。
实验二列主元消去法求解线性方程组【实验名称】列主元消去法求解线性方程组【实验目的】进一步熟悉理解列主元消去法求解线性方程组解法思路,提高matlab编程能力。
【实验要求】已知线性方程矩阵,利用软件求解线性方程组的解。
【实验原理】列主元消去法基本思路:设有线性方程组x b A =,设A 是可逆矩阵。
列主元消去法的基本思想就是通过列主元的选取将初等行变换作用于方程组的增广矩阵[]A |b =A ,将其中的A 变换成一个上三角矩阵,然后求解这个三角形方程组。
将方程组用增广矩阵[]()(1)|ij n n b a ⨯+A =A =表示。
1 消元过程Step1:选主元,找{},1,,k i k k n ∈+ 使得,max k i k ik k i na a ≤≤=,1,2,,1k n =-Step2:如果,0k i k a =,则矩阵A 奇异,程序结束;否则执行step3;Step3:如果k i k ≠,则交换第k 行与第k i 行对应元素位置,k kj i j a a ↔, ,,1j k n =+ ; Step4:消元,对,,i k n = ,求解/,ik ik kk l a a =对1,,1j k n =++ ,求解.ij ij ik kj a a l a =-2 回代过程:Step1:若0,nn a =则矩阵奇异,程序结束;否则执行step2 Step2:,1/;n n n nn x a a +=对1,,2,1i n =- ,求解:,11/n i i n ij j ii j i x a a x a +=+⎛⎫=- ⎪⎝⎭∑【程序设计】function [x,XA]=GaussLiezhuYuan(A,b) N=size(A) n=N(1); index = 0; for i=1:(n-1)me=max(abs(A(1:n,i))); %确定每一列绝对值最大的数值 for k=i:nif(abs(A(k,i))==me) index=k; break; end endtemp=A(i,1:n);A(i,1:n)=A(index,1:n);A(index,1:n)=temp; %与主元所在的行进行交换 bb=b(index); b(index)=b(i);b(i)=bb;for j=(i+1):nif(A(i,i)==0)disp('对角元素为0!');return;endl=A(j,i);m=A(i,i);A(j,1:n)=A(j,1:n)-l*A(i,1:n)/m;b(j)=b(j)-l*b(i)/m;endendx=SolveUpTriangle(A,b);XA=A;end【实验结论】将向量求解得到的解向量代入原方程,可以发现符合的还是比较好的。
这说明了列主元消去法求解这一类方程的有效性。
事实上,对于普通Gauss消去法的修正,还可以有行主元消去法,全主元消去法。
但是全主元消去法相对于行、列主元消去法的工作量要大的多。
所以列主元消去法是解线性方程组实用的方法之一。
实验三全主元消去法求解线性方程组【实验名称】全主元消去法求解线性方程组【实验目的】进一步熟悉理解全主元消去法求解线性方程组解法思路,提高matlab编程能力。
【实验要求】已知线性方程矩阵,利用软件求解线性方程组的解。
【实验原理】主元就是在每一步里面都要在被处理的矩阵里选取绝对值最大的元素作为主元,从而使高斯消去法具有更好的数据稳定性的方法。
虽然全主元消去法的求解结果更加可靠,但由于全主元每步耗时多,而且进行列变换,就会打乱未知变元的顺序,因此,比较繁琐。
(参考程序4)【程序设计】%利用高斯全主元消去法求AX=b方程组的解A=[3 2 0 0;1 4 2 0;0 1 2 1;0 0 -1 1]b=[5 7 2 -2]'N=size(A);n = N(1);index_l = 0;index_r = 0;order = 1:n; %记录未知数顺序的向量for i=1:(n-1)me = max(max(abs(A(i:n,i:n)))) %选取全主元for k=i:nfor r=i:nif(abs(A(k,r))==me)index_l = k;index_r = r; %保存主元所在的行和列k=n;break;endendendtemp = A(i,1:n);A(i,1:n) = A(index_l,1:n);A(index_l,1:n) = temp;bb = b(index_l);b(index_l)=b(i);b(i) = bb; %交换主行temp = A(1:n,i);A(1:n,i) = A(1:n,index_r);A(1:n,index_r) = temp; %交换主列pos = order(i);order(i) = order(index_r);order(index_r) = pos; %主列的交换会造成未知数顺序的变化for j=(i+1):nif(A(i,i)==0)disp('对角元素为0!');return;endl = A(j,i);m = A(i,i);A(j,1:n)=A(j,1:n)-l*A(i,1:n)/mb(j)=b(j)-l*b(i)/mendendx=SolveUpTriangle(A,b); %调用上三角系数矩阵求线性方程组的函数y=zeros(n,1);for i=1:nfor j=1:nif(order(j)==i)y(i)=x(j);endendend %恢复未知数原来的顺序x=y;XA = A;x【实验结论】虽然全主元消去法的求解结果更加可靠,高斯消去具有更好的数值稳定性。
但是由于全选主元每步消耗的时间更多,而且要进行列交换,那么所求未知量x1,x2,……xn的顺序就会被打乱,因此,实际应用中一般使用列主元消去法。