线性方程组及MATLAB应用

合集下载

MATLAB计算方法3解线性方程组计算解法

MATLAB计算方法3解线性方程组计算解法

MATLAB计算方法3解线性方程组计算解法线性方程组是数学中的一个重要问题,解线性方程组是计算数学中的一个基本计算,有着广泛的应用。

MATLAB是一种功能强大的数学软件,提供了多种解线性方程组的计算方法。

本文将介绍MATLAB中的三种解线性方程组的计算方法。

第一种方法是用MATLAB函数“linsolve”解线性方程组。

该函数使用高斯消元法和LU分解法求解线性方程组,可以处理单个方程组以及多个方程组的情况。

使用该函数的语法如下:X = linsolve(A, B)其中A是系数矩阵,B是常数向量,X是解向量。

该函数会根据A的形式自动选择求解方法,返回解向量X。

下面是一个使用“linsolve”函数解线性方程组的例子:A=[12;34];B=[5;6];X = linsolve(A, B);上述代码中,A是一个2×2的系数矩阵,B是一个2×1的常数向量,X是一个2×1的解向量。

运行代码后,X的值为[-4.0000;4.5000]。

第二种方法是用MATLAB函数“inv”求解逆矩阵来解线性方程组。

当系数矩阵A非奇异(可逆)时,可以使用逆矩阵求解线性方程组。

使用“inv”函数的语法如下:X = inv(A) * B其中A是系数矩阵,B是常数向量,X是解向量。

该方法先计算A的逆矩阵,然后将逆矩阵与B相乘得到解向量X。

下面是一个使用“inv”函数解线性方程组的例子:A=[12;34];B=[5;6];X = inv(A) * B;上述代码中,A是一个2×2的系数矩阵,B是一个2×1的常数向量,X是一个2×1的解向量。

运行代码后,X的值为[-4.0000;4.5000]。

第三种方法是用MATLAB函数“mldivide”(或“\”)求解线性方程组。

该函数使用最小二乘法求解非方阵的线性方程组。

使用“mldivide”函数的语法如下:X=A\B其中A是系数矩阵,B是常数向量,X是解向量。

MATLAB软件在线性代数教学中的应用

MATLAB软件在线性代数教学中的应用

MATLAB软件在线性代数教学中的应用【摘要】MATLAB软件在线性代数教学中的应用日益重要。

本文从向量和矩阵运算、线性方程组求解、特征值和特征向量计算、线性代数可视化教学以及矩阵分解和奇异值分解等方面探讨了MATLAB的应用。

通过实际案例展示了MATLAB在教学中的实际应用,有助于学生更好地理解线性代数的概念和应用。

结合结论部分讨论了MATLAB在线性代数教学中的重要性以及未来的发展方向,强调了MATLAB在提升学生学习效果和培养解决实际问题能力方面的巨大潜力。

MATLAB在线性代数教学中的应用有着广阔的发展前景,为教学提供了更加丰富和多样化的教学手段。

【关键词】MATLAB, 线性代数, 教学应用, 向量, 矩阵运算, 线性方程组, 特征值, 特征向量, 可视化教学, 矩阵分解, 奇异值分解, 重要性, 发展方向1. 引言1.1 MATLAB软件在线性代数教学中的应用概述MATLAB是一种强大的数学软件,广泛应用于高等教育领域,尤其在线性代数教学中发挥着重要作用。

在在线性代数教学中,MATLAB可以帮助学生更好地理解抽象的数学概念,提高他们的数学建模和问题求解能力。

通过MATLAB软件,学生可以直观地进行向量和矩阵运算,求解线性方程组,计算特征值和特征向量,进行矩阵分解和奇异值分解等操作。

MATLAB软件提供了丰富的数学函数和工具箱,使得学生可以方便地进行各种数学计算和仿真实验。

通过MATLAB的可视化功能,学生可以直观地观察数学概念的几何意义,加深对数学知识的理解。

MATLAB还支持编程功能,学生可以通过编写脚本和函数来实现复杂的数学运算和算法,培养他们的编程能力。

在线性代数教学中,MATLAB软件的应用不仅可以帮助学生更好地掌握数学知识,提高数学建模和问题求解能力,还可以激发学生的学习兴趣,培养他们的创新思维和实践能力。

MATLAB软件在线性代数教学中的应用具有重要意义,对提升教学效果和培养学生的数学素养具有积极作用。

matlab 方程组 解

matlab 方程组 解

matlab 方程组解一、概述Matlab是一种强大的数学计算软件,它可以用来解决各种数学问题,包括解方程组。

在Matlab中,求解方程组是一个非常重要的功能,因为很多实际问题都可以转化为方程组的形式。

本文将详细介绍如何使用Matlab求解线性方程组和非线性方程组。

二、线性方程组1. 线性方程组的定义线性方程组是指各个未知量的次数都不超过1次的代数方程组。

例如:2x + 3y = 54x - 5y = 6就是一个包含两个未知量x和y的线性方程组。

2. Matlab中求解线性方程组方法在Matlab中,可以使用“\”或者“inv()”函数来求解线性方程组。

其中,“\”表示矩阵左除,即Ax=b时,求解x=A\b;“inv()”函数表示矩阵求逆,即Ax=b时,求解x=inv(A)*b。

例如,在Matlab中求解以下线性方程组:2x + 3y = 54x - 5y = 6可以使用以下代码:A=[2,3;4,-5];b=[5;6];x=A\b输出结果为:x =1.00001.0000其中,“A”为系数矩阵,“b”为常数矩阵,“x”为未知量的解。

三、非线性方程组1. 非线性方程组的定义非线性方程组是指各个未知量的次数超过1次或者存在乘积项、幂项等非线性因素的代数方程组。

例如:x^2 + y^2 = 25x*y - 3 = 0就是一个包含两个未知量x和y的非线性方程组。

2. Matlab中求解非线性方程组方法在Matlab中,可以使用“fsolve()”函数来求解非线性方程组。

该函数需要输入一个函数句柄和初始值向量,输出未知量的解向量。

例如,在Matlab中求解以下非线性方程组:x^2 + y^2 = 25x*y - 3 = 0可以使用以下代码:fun=@(x)[x(1)^2+x(2)^2-25;x(1)*x(2)-3];x0=[1;1];[x,fval]=fsolve(fun,x0)输出结果为:Local minimum found.Optimization completed because the size of the gradient is less thanthe default value of the function tolerance.<stopping criteria details>ans =1.60561.8708其中,“fun”为函数句柄,表示要求解的非线性方程组,“x0”为初始值向量,“[x,fval]”为输出结果,其中“x”表示未知量的解向量,“fval”为函数值。

利用Matlab进行线性代数问题求解的方法与案例

利用Matlab进行线性代数问题求解的方法与案例

利用Matlab进行线性代数问题求解的方法与案例引言线性代数是数学的一个重要分支,广泛应用于工程、物理、计算机科学等领域。

而Matlab作为一种功能强大的数值计算软件,提供了各种实用的工具和函数,可以方便地解决线性代数问题。

本文将介绍一些常用的线性代数问题求解方法,并通过具体的案例来展示Matlab在实际应用中的效果。

一、线性方程组的求解线性方程组是线性代数中最基础的问题之一。

Matlab提供了多种求解线性方程组的函数,如“backslash”操作符(\)和“linsolve”函数等。

下面通过一个实例来说明Matlab的线性方程组求解功能。

案例:假设有以下线性方程组需要求解:2x + 3y - 4z = 53x - 2y + z = 8x + 5y - 3z = 7在Matlab中输入以下代码:A = [2 3 -4; 3 -2 1; 1 5 -3];b = [5; 8; 7];x = A\b;通过以上代码,我们可以得到线性方程组的解x=[1; -2; 3]。

这表明在满足以上方程组的条件下,x=1,y=-2,z=3。

可以看出,Matlab在求解线性方程组时,使用简单且高效。

二、矩阵的特征值和特征向量求解矩阵的特征值和特征向量也是线性代数中的重要概念。

利用特征值和特征向量可以得到矩阵的许多性质和信息。

在Matlab中,我们可以通过“eig”函数来求解矩阵的特征值和特征向量。

案例:假设有一个2x2矩阵A,需要求解其特征值和特征向量。

在Matlab中输入以下代码:A = [2 3; 1 4];[V, D] = eig(A);通过以上代码,我们可以得到矩阵A的特征向量矩阵V和特征值矩阵D。

具体结果如下:特征向量矩阵V = [0.8507 -0.5257; 0.5257 0.8507]特征值矩阵D = [1.5858 0; 0 4.4142]由结果可知,矩阵A的特征向量矩阵V和特征值矩阵D可以提供有关该矩阵的很多信息,如相关线性变换、对称性等。

线性代数及matlab应用

线性代数及matlab应用

线性代数及matlab应用线性代数是数学中的一个重要分支,它研究向量空间和线性映射的性质。

线性代数在许多领域中都有广泛的应用,尤其在计算机科学、物理学、工程学和经济学等领域中起着重要的作用。

而MATLAB作为一种强大的数学软件工具,可以方便地进行线性代数的计算和应用。

线性代数的基本概念包括向量、矩阵、线性方程组、线性变换等。

向量是线性代数中的基本对象,它可以表示空间中的一个点或者一个方向。

矩阵是由一组数按照一定的规则排列成的矩形阵列,它可以表示线性映射或者线性方程组。

线性方程组是由一组线性方程组成的方程组,它可以表示多个变量之间的线性关系。

线性变换是一种保持向量加法和数乘运算的映射,它可以将一个向量空间映射到另一个向量空间。

MATLAB提供了丰富的线性代数计算函数和工具箱,可以方便地进行向量和矩阵的运算。

例如,可以使用MATLAB的矩阵乘法函数`*`来计算两个矩阵的乘积,使用矩阵的转置函数`'`来计算矩阵的转置,使用矩阵的逆函数`inv()`来计算矩阵的逆等。

此外,MATLAB还提供了求解线性方程组的函数`linsolve()`和求解特征值和特征向量的函数`eig()`等。

线性代数在实际应用中有许多重要的应用。

例如,在计算机图形学中,线性代数可以用来描述和变换三维空间中的图形和物体。

在机器学习和数据挖掘中,线性代数可以用来描述和处理大量的数据和特征向量。

在信号处理和通信系统中,线性代数可以用来描述和分析信号的传输和处理过程。

在经济学和金融学中,线性代数可以用来描述和分析经济模型和金融市场。

总之,线性代数是数学中的一个重要分支,它在许多领域中都有广泛的应用。

MATLAB作为一种强大的数学软件工具,可以方便地进行线性代数的计算和应用。

通过学习线性代数和掌握MATLAB的使用,可以更好地理解和应用线性代数的概念和方法,提高数学建模和问题求解的能力。

用matlab进行方程组求解的案例

用matlab进行方程组求解的案例

用matlab进行方程组求解的案例一、背景介绍方程组求解是数学中一个重要的问题,也是许多科学和工程领域中常见的问题。

在过去,人们通常使用手算或者计算器进行方程组求解,但是这种方法效率低下且容易出错。

随着计算机的发展和普及,使用计算机进行方程组求解已经成为了一种主流的方法。

Matlab是一款强大的数值计算软件,它提供了许多用于求解方程组的函数和工具箱。

本文将介绍如何使用Matlab进行方程组求解,并通过一个实例来说明其具体应用。

二、Matlab中的方程组求解函数在Matlab中,有多种函数可以用于求解方程组,包括线性方程组、非线性方程组、常微分方程等。

下面列出一些常用的函数:1. linsolve:用于求解线性方程组;2. fsolve:用于求解非线性方程组;3. ode45:用于求解常微分方程。

三、实例介绍假设有如下非线性方程组:x^2 + y^2 = 1x^3 - y = 0我们需要使用Matlab对其进行求解。

四、代码实现1. 定义函数首先需要定义一个函数,输入为变量向量x=[x,y],输出为方程组的值向量f=[f1,f2]。

代码如下:function f = myfun(x)f(1) = x(1)^2 + x(2)^2 - 1;f(2) = x(1)^3 - x(2);end2. 求解方程组使用fsolve函数求解方程组。

代码如下:x0 = [0,0]; % 初始值[x,fval] = fsolve(@myfun,x0);其中,x为方程组的解向量,fval为方程组的值向量。

3. 结果展示将求解结果输出。

代码如下:fprintf('x=%f, y=%f\n',x(1),x(2));运行程序后,得到如下结果:x=0.682327, y=0.731689五、结论本文介绍了如何使用Matlab进行非线性方程组求解,并通过一个实例进行了说明。

Matlab提供了多种函数和工具箱,可以满足不同类型的方程组求解需求。

利用matlab解线性方程组

利用matlab解线性方程组

数值计算实验——解线性方程组西南交通大学2012级茅7班20123257 陈鼎摘要本报告主要介绍了基于求解线性方程组的高斯消元法和列主消元法两种数值分析方法的算法原理及实现方法。

运用matlab数学软件辅助求解。

实验内容1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证。

2.编写用列主消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证。

给定方程组如下:①0.325x1+2.564x2+3.888x3+5x4=1.521②-1.548x1+3.648x2+4.214x3-4.214x4=2.614③-2.154x1+1.647x2+5.364x3+x4=3.978④0x1+2.141x2-2.354x3-2x4=4.214A.高斯消元法一、算法介绍高斯消元法是一种规则化的加减消元法。

基本思想是通过逐次消元计算把需要求解的线性方程组转化成为上三角方程组,即把现形方程组的系数矩阵转化为上三角矩阵,从而使一般线性方程组的求解转化为等价的上三角方程组的求解。

二、matlab程序function [RA,RB,n,X]=gaus(A,b)B=[A b]; n=length(b); RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp(‘因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp(‘因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1for k=p+1:nm= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp(‘因为RA=RB<n,所以此方程组有无穷多解.')endend三、实验过程与结果输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA、RB,方程中未知量的个数n和有关方程组解X及其解的信息。

MATLAB教程方程组

MATLAB教程方程组

MATLAB教程方程组MATLAB(Matrix Laboratory)是一种高级计算机语言和环境,被广泛应用于科学、工程和其他技术领域。

它具有强大的矩阵操作能力,以及丰富的函数库,能够快速、高效地完成各种计算任务。

在MATLAB中,方程组的求解是一项重要的任务,本教程将介绍如何使用MATLAB求解线性和非线性方程组。

1.线性方程组的求解线性方程组是指方程中的未知量只有一次出现,并且未知量之间的关系是线性的。

在MATLAB中,可以使用“\”运算符求解线性方程组。

首先,定义一个线性方程组。

例如,我们要求解以下方程组:2x+4y+z=103x+2y-z=-7x-y+2z=5可以将方程组的系数矩阵和常数矩阵分别定义为A和B:A=[2,4,1;3,2,-1;1,-1,2];B=[10;-7;5];然后,使用“\”运算符求解方程组,并将结果赋值给未知量向量X:X=A\B;最后,打印出未知量向量X的值:disp(X);这样,就可以得到方程组的解。

在上述例子中,解为X=[1;-2;3]。

2.非线性方程组的求解非线性方程组是指方程中的未知量出现在非线性函数中,未知量之间存在复杂的关系。

在MATLAB中,可以使用fsolve函数求解非线性方程组。

首先,定义一个非线性方程组。

例如,我们要求解以下方程组:x^2+y^2=25x * cos(y) + y * sin(x) = 10然后,定义一个匿名函数,将方程组的函数表达式作为输入参数:接下来,使用fsolve函数求解方程组,并将初始猜测值[1, 1]作为输入参数:initialGuess = [1; 1];solution = fsolve(equations, initialGuess);最后,打印出方程组的解:disp(solution);这样,就可以得到非线性方程组的解。

在上述例子中,解为solution = [3.9781; 2.3382]。

除了fsolve函数外,MATLAB还提供了其他用于求解非线性方程组的函数,如lsqnonlin、fsolve、fmincon等。

matlab十个简单案例编写

matlab十个简单案例编写

matlab十个简单案例编写1. 求解线性方程组线性方程组是数学中常见的问题之一,而MATLAB提供了用于求解线性方程组的函数。

例如,我们可以使用"linsolve"函数来求解以下线性方程组:2x + 3y = 74x - 2y = 2代码如下所示:A = [2, 3; 4, -2];B = [7; 2];X = linsolve(A, B);disp(X);解释:上述代码定义了一个2x2的矩阵A和一个2x1的矩阵B,分别表示线性方程组的系数矩阵和常数向量。

然后,使用linsolve函数求解线性方程组,结果存储在X中,并通过disp函数打印出来。

运行代码后,可以得到x=2和y=1的解。

2. 求解非线性方程除了线性方程组外,MATLAB还可以用于求解非线性方程。

例如,我们可以使用"fzero"函数求解以下非线性方程:x^2 + 2x - 3 = 0代码如下所示:fun = @(x) x^2 + 2*x - 3;x0 = 0;x = fzero(fun, x0);disp(x);解释:上述代码定义了一个匿名函数fun,表示非线性方程。

然后,使用fzero函数传入fun和初始值x0来求解非线性方程的根,并通过disp函数打印出来。

运行代码后,可以得到x=1的解。

3. 绘制函数图像MATLAB提供了强大的绘图功能,可以帮助我们可视化函数的形状和特征。

例如,我们可以使用"plot"函数绘制以下函数的图像:y = cos(x)代码如下所示:x = linspace(0, 2*pi, 100);y = cos(x);plot(x, y);解释:上述代码首先使用linspace函数生成一个从0到2π的100个等间距点的向量x,然后计算对应的cos值,并存储在向量y中。

最后,使用plot函数将x和y作为横纵坐标绘制出函数图像。

运行代码后,可以看到cos函数的周期性波动图像。

数值分析MATLAB科学计算—线性方程组

数值分析MATLAB科学计算—线性方程组

科学计算—理论、方法及其基于MATLAB的程序实现与分析 三、 解线性方程组(线性矩阵方程)解线性方程组是科学计算中最常见的问题。

所说的“最常见”有两方面的含义:1) 问题的本身是求解线性方程组;2) 许多问题的求解需要或归结为线性方程组的求解。

关于线性方程组B A x B Ax 1-=⇒=(1)其求解方法有两类:1) 直接法:高斯消去法(Gaussian Elimination ); 2) 间接法:各种迭代法(Iteration )。

1、高斯消去法1) 引例考虑如下(梯形)线性方程组:()⎪⎩⎪⎨⎧==+==+-=⇒⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--⇔⎪⎩⎪⎨⎧==-=+-5.0141315.3221122004301211214322332321321332321x x x x x x x x x x x x x x x 高斯消去法的求解思路:把一般的线性方程组(1)化成(上或下)梯形的形式。

2)高斯消去法——示例考虑如下线性方程组:⎪⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---⇔⎪⎩⎪⎨⎧=++-=-+-=+-306015129101.2001.221113060129501.2001.221321321321321x x x x x x x x x x x x 1) 第一个方程的两端乘12加到第二个方程的两端,第一个方程的两端乘-1加到第三个方程的两端,得⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--3060031110001.0001.00111321x x x2) 第二个方程的两端乘001.010-加到第三个方程的两端,得 ⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--60600311010001.0001.00111321x x x3) 从上述方程组的第三个方程依此求解,得()⎪⎩⎪⎨⎧==+-==+-=600300001.03100024011332321x x x x x x 3)高斯消去法的不足及其改进——高斯(全、列)主元素消去法在上例中,由于建模、计算等原因,系数2.001而产生0.0005的误差,实际求解的方程组为⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎭⎫ ⎝⎛⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---306015129101.20005.22111321x x x ⎪⎩⎪⎨⎧===⇒70.4509.30142.2565321x x x注:数值稳定的算法高斯列主元素消去法就是在消元的每一步选取(列)主元素—一列中绝对值最大的元取做主元素,高斯列主元素消去法是数值稳定的方法。

matlab 方程组 解

matlab 方程组 解

Matlab方程组解1. 引言方程组是数学中一个重要的概念,它描述了多个未知数之间的关系。

解方程组的过程在科学、工程和计算机科学等领域中有着广泛的应用。

Matlab作为一种高级数值计算环境,提供了丰富的工具和函数来解决方程组的求解问题。

本文将介绍如何使用Matlab解方程组,包括线性方程组和非线性方程组的求解方法。

2. 线性方程组的求解2.1 利用矩阵求解线性方程组可以表示为矩阵形式,例如:Ax = b,其中A是系数矩阵,x是未知数向量,b是常数向量。

在Matlab中,可以使用线性代数工具箱中的函数来求解线性方程组。

2.1.1 使用inv函数求解如果系数矩阵A是可逆的,可以使用inv函数求解线性方程组。

具体步骤如下: 1. 计算A的逆矩阵:A_inv = inv(A) 2. 计算解向量:x = A_inv * b2.1.2 使用linsolve函数求解linsolve函数可以直接求解线性方程组,无需计算逆矩阵。

具体步骤如下: 1. 调用linsolve函数:x = linsolve(A, b)2.2 利用高斯消元法求解高斯消元法是一种常用的求解线性方程组的方法,它通过矩阵的行变换将方程组转化为上三角矩阵,然后通过回代得到解。

在Matlab中,可以使用lu函数来进行高斯消元法求解。

2.2.1 使用lu函数求解lu函数可以将方程组的系数矩阵A分解为一个下三角矩阵L和一个上三角矩阵U,即A = LU。

具体步骤如下: 1. 调用lu函数:[L, U] = lu(A) 2. 解得方程组:x = U \ (L \ b)3. 非线性方程组的求解非线性方程组是指未知数与其函数之间存在非线性关系的方程组。

与线性方程组不同,非线性方程组的求解通常需要借助数值方法。

Matlab提供了多种函数和工具箱来解决非线性方程组的求解问题。

3.1 利用fsolve函数求解fsolve函数是Matlab中用于求解非线性方程组的函数,它通过迭代的方式逼近方程组的解。

线性方程组及MATLAB应用

线性方程组及MATLAB应用

数值实验 线性方程组与MATLAB 应用王1.实验目的:理解矩阵的范数与条件数。

实验内容:已知矩阵⎪⎪⎪⎪⎪⎭⎫⎝⎛------=1111111111111111A 求1A ,2A ,∞A 和)(2A cond 。

解:编写了一个M 文件来求矩阵A 的范数与条件数:test3_1.m 如下:A=[1 1 1 1;-1 1 -1 1;-1 -1 1 1;1 -1 -1 1]; norm(A,1) norm(A,2) norm(A,inf) cond(A,2)计算结果依次是: 4 2 4 1.00002.实验目的:研究高斯消去法的数值稳定性(出现小主元)。

实验内容:设方程组b Ax =,其中两个矩阵如下,分别对以上两个方程组(1)⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡--⨯=-11212592.1121130.6291.51314.59103.0151A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2178.4617.591b (2)⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=201015152699990999999999.23107102A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1500019000000000.582b (1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的?解: 本题编写了一个test3_21的M 文件如下:A1=[0.3*1e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; A2=[10 -7 0 1;-3 2.099999999999999 6 2;5 -1 5 -1;0 1 0 2]; cond(A1) cond(A2)求得两个矩阵的条件数分别为68.4296和8.9939,易知这矩阵A1的条件数远远大于1,而矩阵A2的条件数刚大于1,故这,矩阵A1为病态矩阵,矩阵A2为良态矩阵。

(2)用列主元消去法求得L 和U 及解向量412,∈R x x ;解:本题利用Matlab 的列主元三角分解函数lu();具体求解如下: >> A1=[0.3*1e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; >> A2=[10 -7 0 1;-3 2.099999999999999 6 2;5 -1 5 -1;0 1 0 2];>> b1=[59.17;46.78;1;2];>> b2=[8;5.0000000000001;5;1];>> [L1,U1]=lu(A1)L1 = 0.0000 1.0000 0 00.4724 -0.1755 1.0000 01.0000 0 0 00.0893 0.0202 -0.1738 1.0000 U1 = 11.2000 9.0000 5.0000 2.00000 59.1400 3.0000 1.00000 0 -2.8354 1.23070 0 0 1.0151 >> [L2,U2]=lu(A2)L2 =1.0000 0 0 0 -0.3000 -0.0000 1.0000 00.5000 1.0000 0 00 0.4000 -0.3333 1.0000 U2 =10.0000 -7.0000 0 1.00000 2.5000 5.0000 -1.50000 0 6.0000 2.30000 0 0 3.3667 >> y1=L1\b1;>> x1=U1\y1x1 =3.84571.6095-15.476110.4113>> y2=L2\b2;>> x2=U2\y2x2 =0.1337-0.82180.88420.9109用不选主元的高斯消去法求得L和U及解向量412, Rx x;解:编写一个LU_Fact的M文件储存不选主元的LU分解法然后调用求解。

线性代数实践及MATLAB入门课件

线性代数实践及MATLAB入门课件
遗传算法
使用Matlab中的遗传算法工具箱,如ga函数,求解优化问题,通过模拟生物进化过程中的自然选择和遗 传机制来寻找最优解。
信号处理与分析
傅里叶变换
使用Matlab中的fft函数,对信号进行傅里叶变换,以便将信号从 时域转换到频域,从而更好地分析信号的频率成分。
小波变换
使用Matlab中的小波变换函数,如wavedec和waverec,对信号 进行小波变换,以便在不同的频率段上分析信号的特性。
特征值与特征向量的应用
在解决实际问题时,特征值与特征向量是重要的数学工具,如判断矩阵的稳定性、求解微分方程的振动性等。
线性变换与矩阵运算
线性变换的定义
对于给定的向量空间V和线性映射T:V→V,如果对于V中的任意向量α、β,都有 T(α+β)=T(α)+T(β)和T(kα)=kT(α),则称T为线性变换。
高维数据聚类
使用Matlab中的聚类算法,如K-means和层次聚类,对高维数据 进行聚类分析,以便将相似的数据点归为一类。
优化算法应用
非线性规划
使用Matlab中的优化工具箱,如fmincon函数,求解非线性规划问题,以找到满足一定约束条件下目标函数的最大 或如linprog函数,求解线性规划问题,以找到满足一定约束条件下目标函数的最大或最 小值。
矩阵运算的性质
矩阵的加法、数乘、乘法等运算性质,以及逆矩阵、行列式等概念。
线性变换与矩阵运算的应用
在解决实际问题时,线性变换与矩阵运算是重要的数学工具,如求解微分方程、解决线 性规划问题等。
02 Matlab基础
Matlab界面与编程基础
掌握Matlab的基本操作界面
01
启动与退出Matlab

利用Matlab解决常见数学问题的案例分析

利用Matlab解决常见数学问题的案例分析

利用Matlab解决常见数学问题的案例分析概述:Matlab是一款流行的科学软件,广泛应用于数学建模、数据分析、图像处理等领域。

本文将通过几个实际案例,介绍如何利用Matlab解决常见的数学问题,并分析其解决方法和效果。

案例一:线性方程组的求解线性方程组是数学中常见的问题之一。

假设有如下线性方程组:3x + 2y = 14x - 3y = 5可以使用Matlab中的线性方程组求解函数`linsolve`来求解。

首先,定义系数矩阵A和常数矩阵b,并调用`linsolve`函数求解方程组:```matlabA = [3 2; 4 -3];b = [1; 5];x = linsolve(A, b);```运行上述代码后,可以得到方程组的解x为:x = 3y = -2案例二:函数曲线绘制Matlab具有强大的绘图功能,可以绘制各种函数曲线。

例如,我们可以绘制正弦函数sin(x)在区间[-2π,2π]上的曲线。

首先,定义x的取值范围,并计算对应的y 值:```matlabx = -2*pi:0.1:2*pi;y = sin(x);```接下来,使用`plot`函数将曲线绘制出来:```matlabplot(x, y);```运行代码后,可以得到正弦函数的曲线图。

案例三:最小二乘拟合最小二乘拟合是一种常见的曲线拟合方法,用于将一组数据拟合成一条曲线。

假设有一组离散的数据点,我们希望找到一个曲线来拟合这些数据。

在Matlab中,可以使用`polyfit`函数进行最小二乘拟合。

例如,假设有一组数据:x = [1 2 3 4 5];y = [0.5 2.5 2 4 3.5];可以使用`polyfit`函数进行线性拟合:```matlabp = polyfit(x, y, 1);```其中,第一个参数x是自变量的取值,第二个参数y是因变量的取值,第三个参数1表示进行一次多项式拟合。

拟合的结果保存在向量p中,p(1)为拟合曲线的斜率,p(2)为截距。

matlab在高等数学中的应用

matlab在高等数学中的应用

matlab在高等数学中的应用Matlab是一种强大的数学软件工具,广泛应用于高等数学的教学和研究中。

它提供了丰富的功能和工具,可以帮助学生和研究人员更好地理解和应用高等数学的概念和方法。

本文将介绍Matlab在高等数学中的应用,并分别从微积分、线性代数和概率论三个方面进行探讨。

Matlab在微积分中的应用非常广泛。

微积分是高等数学中的重要分支,研究函数的极限、导数、积分等概念和方法。

Matlab提供了丰富的函数和工具,可以进行符号计算、求解微分方程、绘制函数图像等。

例如,可以使用Matlab计算函数的导数和积分,从而得到函数的极值、拐点和定积分等重要信息。

此外,Matlab还可以用于求解微分方程,例如常微分方程、偏微分方程等。

通过Matlab的求解器,可以得到微分方程的近似解或精确解,进一步深入理解微积分的概念和方法。

Matlab在线性代数中的应用也非常重要。

线性代数是高等数学中的另一个重要分支,研究向量、矩阵、线性方程组等概念和方法。

Matlab提供了丰富的矩阵运算和线性代数函数,可以进行矩阵的加减乘除、转置、逆矩阵、特征值和特征向量等计算。

例如,可以使用Matlab求解线性方程组,通过矩阵的消元和回代,得到方程组的解析解或数值解。

此外,Matlab还可以进行矩阵的特征值分解和奇异值分解,从而得到矩阵的特征值、特征向量和奇异值等重要信息。

通过Matlab的计算和可视化功能,可以帮助学生更好地理解线性代数的概念和方法。

Matlab在概率论中的应用也非常突出。

概率论是高等数学中的重要分支,研究随机变量、概率分布、概率论等概念和方法。

Matlab提供了丰富的统计和概率函数,可以进行概率分布的计算、随机变量的模拟和统计分析等。

例如,可以使用Matlab计算正态分布的概率密度函数和累积分布函数,从而得到随机变量的概率分布和统计特性。

此外,Matlab还可以进行随机变量的模拟,通过生成随机数样本,估计概率分布的参数和进行假设检验等。

数值分析中求解线性方程组的MATLAB程序(6种)

数值分析中求解线性方程组的MATLAB程序(6种)

数值分析中求解线性方程组的MATLAB程序(6种)1.回溯法(系数矩阵为上三角)function X=uptrbk(A,B)%求解方程组,首先化为上三角,再调用函数求解[N,N]=size(A);X=zeros(N,1);C=zeros(1,N+1);Aug=[A B];for p=1:N-1[Y,j]=max(abs(Aug(p:N,p)));C=Aug(p,:);Aug(p,:)=Aug(j+p-1,:);Aug(j+p-1,:)=C;if Aug(p,p)==0'A was singular.No unique solution.'break;endfor k=p+1:Nm=Aug(k,p)/Aug(p,p);Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1);endendD=Aug;X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));2.系数矩阵为下三角function x=matrix_down(A,b)%求解系数矩阵是下三角的方程组n=length(b);x=zeros(n,1);x(1)=b(1)/A(1,1);for k=2:1:nx(k)=(b(k)-A(k,1:k-1)*x(1:k-1))/A(k,k);end3.普通系数矩阵(先化为上三角,在用回溯法)function X=uptrbk(A,B)%求解方程组,首先化为上三角,再调用函数求解[N,N]=size(A);X=zeros(N,1);C=zeros(1,N+1);Aug=[A B];for p=1:N-1[Y,j]=max(abs(Aug(p:N,p)));C=Aug(p,:);Aug(p,:)=Aug(j+p-1,:);Aug(j+p-1,:)=C;if Aug(p,p)==0'A was singular.No unique solution.'break;endfor k=p+1:Nm=Aug(k,p)/Aug(p,p);Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1);endendD=Aug;X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));4.三角分解法function [X,L,U]=LU_matrix(A,B)%A是非奇异矩阵%AX=B化为LUX=B,L为下三角,U为上三角%程序中并没有真正解出L和U,全部存放在A中[N,N]=size(A);X=zeros(N,1);Y=zeros(N,1);C=zeros(1,N);R=1:N;for p=1:N-1[max1,j]=max(abs(A(p:N,p)));C=A(p,:);A(p,:)=A(j+p-1,:);A(j+p-1,:)=C;d=R(p);R(p)=R(j+p-1);R(j+p-1)=d;if A(p,p)==0'A is singular.No unique solution'break;endfor k=p+1:Nmult=A(k,p)/A(p,p);A(k,p)=mult;A(k,p+1:N)=A(k,p+1:N)-mult*A(p,p+1:N);endendY(1)=B(R(1));for k=2:NY(k)=B(R(k))-A(k,1:k-1)*Y(1:k-1);endX(N)=Y(N)/A(N,N);for k=N-1:-1:1X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N))/A(k,k);endL=tril(A,-1)+eye(N)U=triu(A)5.雅克比迭代法function X=jacobi(A,B,P,delta,max1);%雅克比迭代求解方程组N=length(B);for k=1:max1for j=1:NX(j)=(B(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);enderr=abs(norm(X'-P));relerr=err/(norm(X)+eps);P=X';if (err<delta)|(relerr<delta)breakendendX=X';k6.盖斯迭代法function X=gseid(A,B,P,delta,max1);%盖斯算法,求解赋初值的微分方程N=length(B);for k=1:max1for j=1:Nif j==1X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1);elseif j==NX(N)=(B(N)-A(N,1:N-1)*(X(1:N-1))')/A(N,N);elseX(j)=(B(j)-A(j,1:j-1)*X(1:j-1)-A(j,j+1:N)*P(j+1:N))/A(j,j);endenderr=abs(norm(X'-P));relerr=err/(norm(X)+eps);P=X';if (err<delta)|(relerr<delta)break;endendX=X';k。

线性方程组教学中应用意思培养与引入MATLAB求解

线性方程组教学中应用意思培养与引入MATLAB求解

线性方程组教学中应用意思培养与引入MATLAB求解摘要:本文针对线性代数教学中存在的问题,在线性方程组的实际教学中的进行尝试,从实际应用案例的引入,探讨了如何进行应用意思的培养,并在教学中适当地引入数学软件matlab,渗透数学基础知识能用到实际中去解决实际问题的观点,从全新的视角阐述教学改革。

关键词:线性方程组教学 matlab中图分类号:g623.5一、线性方程组教学中存在的问题当今知识创新与技术创新正成为时代的基本特征。

学校培养的人才应该具有很强的自学能力与应用意思,把学到的基础知识能用到实际中去解决实际问题,也是我们数学教学中亟待研究的课题。

目前线性代数的教学内容普遍还是采用学科体系,教学中过分强调知识知识的系统性、理论的严谨性和抽象性,计算上强调技巧性,在知识的应用上有所欠缺,造成学生学习无兴趣,把数学看成是高不可攀屠龙之术,在一定程度上影响教学质量。

教学中主要存在以下几个问题:1.重知识传授缺少应用知识能力教师在实际教学中,往往强调知识的传授的系统性、严谨性、抽象性,以学科体系展开教学,注重理论的给出和计算方法与技巧的形成,而忽略知识的实际应用。

学习中学生往往形成”我学它有什么用”的疑问,一定程度上造成教学中出现理论与实际脱节。

2.教学方式缺少师生互动一方面是理论性过强,学生很难跟上教师的节奏,”满堂灌”的教学现象相当普遍,缺少师生互动的教学,学生处于被动地位,学习效果与教学质量当然受到影响。

培养学生自主学习、高效学习成为一句空话。

3.学生学习目的不清楚线性代数一般都在大一开设,学生没有学习专业知识,往往对数学学习的目的不明确,因而出现被动学习的情况,只求及格就万事大吉,有的学生越学起没兴趣,觉得数学深奥难懂、枯燥无用,选择放弃者有之。

诸此种种,说明教学上存在理论与实际脱离是根本问题。

这些问题不解决,数学学习成为学生学习障碍,培养学生的数学素质是不可能的,更谈不上培养创新人才。

课堂教学的问题最终还是要在课堂上解决的。

matlab的功能及应用

matlab的功能及应用

matlab的功能及应用Matlab是一种功能强大且广泛应用的数学软件,它具有众多功能和应用,可以满足科学计算、数据分析、图像处理、机器学习等领域的需求。

本文将介绍Matlab的一些主要功能及其应用。

一、数学计算功能Matlab具有强大的数学计算能力,可以进行各种数值计算、符号计算和矩阵运算。

例如,可以使用Matlab进行线性方程组的求解、数值积分、微分方程的数值解法等。

这些功能在科学研究、工程计算等领域应用广泛。

二、数据分析功能Matlab提供了丰富的数据分析工具,可以对各种数据进行统计分析、数据可视化和建模预测。

例如,可以使用Matlab进行数据的描述统计分析、假设检验、方差分析等。

此外,Matlab还支持数据可视化,可以绘制各种统计图表,如柱状图、折线图、散点图等,直观展示数据的分布和趋势。

这些功能在市场调研、金融分析、医学统计等领域有广泛应用。

三、图像处理功能Matlab拥有强大的图像处理功能,可以对图像进行各种操作和处理,如图像的读取、显示、滤波、增强、分割等。

例如,可以使用Matlab对医学图像进行肿瘤检测、对遥感图像进行地物提取、对数字图像进行特征提取等。

此外,Matlab还支持图像的压缩和编码,可以对图像进行压缩存储和传输。

这些功能在计算机视觉、图像识别、图像检索等领域有广泛应用。

四、机器学习功能Matlab提供了丰富的机器学习工具箱,可以进行各种机器学习算法的实现和应用。

例如,可以使用Matlab进行数据预处理、特征选择、模型训练和模型评估等。

Matlab支持各种常见的机器学习算法,如线性回归、逻辑回归、支持向量机、决策树、随机森林等。

这些功能在数据挖掘、模式识别、智能推荐等领域有广泛应用。

五、信号处理功能Matlab具有丰富的信号处理工具箱,可以进行各种信号的分析和处理。

例如,可以使用Matlab进行信号的滤波、频谱分析、时频分析、谱估计等。

这些功能在通信系统、音频处理、雷达信号处理等领域有广泛应用。

matlab求解数学线性问题

matlab求解数学线性问题

应用开发
Matlab可以用于开发各种应用程序和 软件,如控制系统、信号处理、图像 处理等。
05
04
数据分析
Matlab提供了各种数据分析工具,可 以用于数据清洗、数据挖掘、统计分 析等。
Matlab的应用领域
科学计算
Matlab广泛应用于科学计算领域,如物理、 化学、生物等。
工程应用
Matlab可以用于各种工程应用,如机械、 电子、航空航天等。
特征向量
特征向量是与特征值对应的向量,表示矩阵对某些向量进行变换后得到的方向。特征向量可以通过 Matlab中的`eig`函数计算得到。
03
Matlab求解线性方程组
直接法
ቤተ መጻሕፍቲ ባይዱ
矩阵分解
01
利用矩阵分解技术,如LU分解、QR分解等,将线性方程组转换
为易于求解的形式。
求解单个方程
02
通过矩阵运算,将线性方程组中的每个方程分别求解,得到方
Matlab求解数学线 性问
目录
• Matlab简介 • 线性代数基础知识 • Matlab求解线性方程组 • 线性方程组的优化求解 • Matlab求解线性最小二乘问题 • Matlab求解特征值问题
01
Matlab简介
Matlab的发展历程
1998年
1984年
MathWorks公司成立,开始正式 推广Matlab。
共轭梯度法
共轭梯度法是一种迭代算法,用于求 解大规模稀疏线性方程组。它结合了 梯度法和共轭方向法,利用已知的梯 度和共轭方向来寻找解。
共轭梯度法的优点是收敛速度快,适 用于大规模问题。但它需要计算矩阵 的梯度,计算量较大。
牛顿法
牛顿法是一种基于泰勒级数的迭代算法,用于求解非线性方 程的根。在求解线性方程组时,牛顿法将非线性方程转化为 线性方程,并利用牛顿迭代公式进行求解。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值实验 线性方程组与MATLAB 应用王1.实验目的:理解矩阵的范数与条件数。

实验内容:已知矩阵⎪⎪⎪⎪⎪⎭⎫⎝⎛------=1111111111111111A 求1A ,2A ,∞A 和)(2A cond 。

解:编写了一个M 文件来求矩阵A 的范数与条件数:test3_1.m 如下:A=[1 1 1 1;-1 1 -1 1;-1 -1 1 1;1 -1 -1 1]; norm(A,1) norm(A,2) norm(A,inf) cond(A,2)计算结果依次是: 4 2 4 1.00002.实验目的:研究高斯消去法的数值稳定性(出现小主元)。

实验内容:设方程组b Ax =,其中两个矩阵如下,分别对以上两个方程组(1)⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡--⨯=-11212592.1121130.6291.51314.59103.0151A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2178.4617.591b (2)⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=201015152699990999999999.23107102A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1500019000000000.582b (1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的?解: 本题编写了一个test3_21的M 文件如下:A1=[0.3*1e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; A2=[10 -7 0 1;-3 2.099999999999999 6 2;5 -1 5 -1;0 1 0 2]; cond(A1) cond(A2)求得两个矩阵的条件数分别为68.4296和8.9939,易知这矩阵A1的条件数远远大于1,而矩阵A2的条件数刚大于1,故这,矩阵A1为病态矩阵,矩阵A2为良态矩阵。

(2)用列主元消去法求得L 和U 及解向量412,∈R x x ;解:本题利用Matlab 的列主元三角分解函数lu();具体求解如下: >> A1=[0.3*1e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; >> A2=[10 -7 0 1;-3 2.099999999999999 6 2;5 -1 5 -1;0 1 0 2];>> b1=[59.17;46.78;1;2];>> b2=[8;5.0000000000001;5;1];>> [L1,U1]=lu(A1)L1 = 0.0000 1.0000 0 00.4724 -0.1755 1.0000 01.0000 0 0 00.0893 0.0202 -0.1738 1.0000 U1 = 11.2000 9.0000 5.0000 2.00000 59.1400 3.0000 1.00000 0 -2.8354 1.23070 0 0 1.0151 >> [L2,U2]=lu(A2)L2 =1.0000 0 0 0 -0.3000 -0.0000 1.0000 00.5000 1.0000 0 00 0.4000 -0.3333 1.0000 U2 =10.0000 -7.0000 0 1.00000 2.5000 5.0000 -1.50000 0 6.0000 2.30000 0 0 3.3667 >> y1=L1\b1;>> x1=U1\y1x1 =3.84571.6095-15.476110.4113>> y2=L2\b2;>> x2=U2\y2x2 =0.1337-0.82180.88420.9109用不选主元的高斯消去法求得L和U及解向量412, Rx x;解:编写一个LU_Fact的M文件储存不选主元的LU分解法然后调用求解。

具体实现如下LU_Fact.m如下所示:function [x,L,U,index]=LU_Fact(A,b)%普通LU分解。

A为要分解的矩阵,b为方程组右端项;%x为方程组的解,L为单位下三角阵,U为上三角阵,index为指示变量[n,m]=size(A); nb=length(b);if n ~= merror('矩阵A的行列必须相等!');return;endif m ~= nberror('矩阵A的行数必须和b的行数相同!'); return; endL=eye(n);U=zeros(n);index=1;x=zeros(n,1);y=zeros(n,1); for k=1:nfor j=k:nz=0;for q=1:k-1z=z+L(k,q)*U(q,j);endU(k,j)=A(k,j)-z;endif abs(U(k,k))<1e-10index=0; return;endfor i=k+1:nz=0;for q=1:k-1z=z+L(i,q)*U(q,k);endL(i,k)=(A(i,k)-z)/U(k,k);endendy(1)=b(1);for k=2:nz=0;for j=1:k-1z=z+L(k,j)*y(j);endy(k)=b(k)-z;endx(n)=y(n)/U(n,n);for k=n-1:-1:1z=0;for j=k+1:nz=z+U(k,j)*x(j);endx(k)=(y(k)-z)/U(k,k);end求解过程及结果如下:对于方程组1的求解过程:>> [x,L,U,index]=LU_Fact(A1,b1)x = 0 0 0 0L = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1U = 0.0000 59.1400 3.0000 1.0000 0 0 0 0 0 0 0 0 0 0 0 0 index =0对于方程组2的求解过程: >> [x,L,U,index]=LU_Fact(A2,b2) x = 0 0 0 0L = 1.0000 0 0 0 -0.3000 1.0000 0 0 0.5000 0 1.0000 0 0 0 0 1.0000 U = 10.0000 -7.0000 0 1.0000 0 -0.0000 6.0000 2.3000 0 0 0 0 0 0 0 0 index = 0(4)观察小主元并分析对计算结果的影响.总结:通过以上的求解过程容易发现,对于小主元的方程组求解问题,小主元导致计算的中间结果数量级增长,使得方程组无法求解或求得的解严重偏离了方程组的精确解。

所以,对于小主元的方程组求解问题,应用选主元的LU 分解法更为可靠。

3.实验目的:研究线性方程组直接法的时间复杂性.实验内容:分别用高斯消去法、LU 分解法、追赶法、平方根法解方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡111411411421 n x x x ,取500=n ,比较所用时间. 解:利用tic 和toc 计算时间,然后调用不同方法解方程组。

具体如下:(1).高斯消去法解方程组,并计算时间如下所示: ticA=spdiags([ones(500,1),4*ones(500,1),ones(500,1)],[-1,0,1],500,500);b=ones(500,1);[x,detA,index]=Gauss(A,b)toc输出:Elapsed time is 45.369000 seconds. 这个运行过多次,时间较长。

(2).LU分解法解方程组,并计算时间如下所示:ticA=spdiags([ones(500,1),4*ones(500,1),ones(500,1)],[-1,0,1],500,500);b=ones(500,1);[x,L,U,index]=LU_Fact(A,b)toc输出:Elapsed time is 1.929000 seconds.(3).追赶法解方程组,并计算时间如下所示:对于追赶法解方程组的问题,编写了一个追赶法算法的M文件Persue.m如下:ticA=spdiags([ones(500,1),4*ones(500,1),ones(500,1)],[-1,0,1],500,500);b=ones(500,1);L=eye(500);U=zeros(500);U(1,1)=A(1,1);for i=2:500U(i-1,i)=A(i-1,i);L(i,i-1)=A(i,i-1)/U(i-1,i-1);U(i,i)=A(i,i)-L(i,i-1)*U(i-1,i);end%P=sparse(A); Q=sparse(L); R=sparse(U); 此行目的是输出A,L,U看上述计算是否有错y=zeros(500,1);x=zeros(500,1);%追的过程如下y(1)=b(1);for i=2:500y(i)=b(i)-L(i,i-1)*y(i-1);end%赶的过程如下x(500)=y(500)/U(500,500);for i=499:-1:1x(i)=(y(i)-U(i,i+1)*x(i+1))/U(i,i);end toc运行如下:Elapsed time is 0.013000 seconds.(4).平方根法解方程组,并计算时间如下所示:ticA=spdiags([ones(500,1),4*ones(500,1),ones(500,1)],[-1,0,1],500,500);b=ones(500,1);L=chol(A);y=inv(L)\b;x=L\y; toc输出:Elapsed time is 0.026000 seconds. (5).总结上面,不同方法解同一个线性方程组所用的时间是不同的。

利用高斯消去法耗时最长,而利用追赶法以及平方根法计算效率则大大提高,追赶法效率最高。

尤其是对于本题中系数矩阵A 是典型的三对角矩阵,并且严格对角占优,因此本题利用追赶法解题更快。

4.实验目的:理解条件数的意义和方程组的性态对解向量的影响.实验内容:设1=A x b 和2=A x b ,其中2100021111211222211111111n n n n n n n x x x x x x x x x xx x -------⎛⎫⎪ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭A ,211/21/31/1/21/31/41/(1)1/31/41/51/(2)1/1/(1)1/(2)1/(21)nn n n n n n ⎛⎫⎪+ ⎪ ⎪=+ ⎪ ⎪⎪++-⎝⎭A ,b 由相应矩阵的元素计算,其计算公式为T 12111(,,,)n nnj j nj j j j a a a ====∑∑∑b .对1A 取1,,2,1,0,1.01-=+=n k k x k ,下面均用Matlab 函数\=x A b 求方程组的解. 取n =4,6,8,分别计算21cond ()A 和22cond ()A ,判断1A 和2A 是否为病态矩阵?随n 的增大,矩阵性态的变化如何?解:编写了一个名为test3_4的M 文件,然后n 为不同值时,输出结果不同;具体如下: test3_41.m 如下:function [c1 c2]=test3_41(n)%c1和c2是输出矩阵A1和A2的条件数,n 表示方阵的阶数A1=zeros(n,n); A2=hilb(n); for i=1:nA1(i,1)=1; endfor i=1:n for j=2:nA(i,j)=(1+0.1*(i-1))^(j-1); end endc1=cond(A1,2); c2=cond(A2,2); 具体运行及输出如下:[c1 c2]=test3_4(4) 输出:c1 =2.1498e+04 c2 =1.5514e+04 [c1 c2]=test3_4(6) 输出:c1 =5.5945e+06 c2 =1.4951e+07 [c1 c2]=test3_4(8) 输出:c1 =1.3926e+09 c2 =1.5258e+10总结如下:矩阵A1的条件数很大,为病态矩阵;矩阵A2 条件数也很大,是病态矩阵。

相关文档
最新文档