搜档网
当前位置:搜档网 › 实验一用matlab求解线性方程组

实验一用matlab求解线性方程组

实验1.1 用matlab 求解线性方程组

第一节 线性方程组的求解 一、齐次方程组的求解

rref (A ) %将矩阵A 化为阶梯形的最简式

null (A ) %求满足AX =0的解空间的一组基,即齐次线性方程组的基

础解系

【例1】 求下列齐次线性方程组的一个基础解系,并写出通解:

我们可以通过两种方法来解: 解法1:

>> A=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2]; >> rref(A) 执行后可得结果: ans=

1 -1 0 0 0 0 -1 1 0 0 0 0 由最简行阶梯型矩阵,得化简后的方程

⎪⎩⎪

⎨⎧=+--=+--=-+-0

22004321

43214321x x x x x x x x x x x x

取x2,x4为自由未知量,扩充方程组为

提取自由未知量系数形成的列向量为基础解系,记

所以齐次方程组的通解为

解法2: clear

A=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2];

B=null(A, 'r') % help null 看看加个‘r ’是什么作用,

若去掉r ,是什么结果?

执行后可得结果: B=

1 0 1 0 0 1 0 1

⎩⎨

⎧=-=-0

04321x x x x ⎪⎪⎩⎪⎪⎨

⎧====4

4432221x x x x x x x x ⎥⎥⎥

⎥⎦⎤

⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎣⎡1100001142

4321x x x x x x ,

00111⎥⎥⎥⎥⎦

⎢⎢⎢⎢⎣⎡=ε,

11002⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎣⎡=ε2

211εεk k x +=

易见,可直接得基础解系

所以齐次方程组的通解为

二、非齐次线性方程组的求解 Matlab 命令的基本格式:

X =A\b %系数阵A 满秩时,用左除法求线性方程组AX =b 的解

注意:A/B 即为AB -1, 而A\B 即为A -1B.

C =[A,b];

D =rref(C) % 求线性方程组AX =b 的特解,即D 的最后一列元素

【例2】 求下列非齐次线性方程组的解:

,

00111⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎣⎡=ε,

11002⎥⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎣⎡=ε⎪⎪⎪⎩⎪

⎪⎪⎨⎧=+=++=++=++=+1

50

65065065165545

4354332121x x x x x x x x x x x x x 2

211εεk k x +=

解: clear

A=[5 6 0 0 0;1 5 6 0 0;0 1 5 6 0;0 0 1 5 6;0 0 0 1 5]; b=[1;0;0;0;1];

format rational %采用有理数近似输出格式,

比较format short 看看

x=A\b

执行后可得所求方程组的解. 作业:

【第一题】 求下列非齐次线性方程组的通解.

A=[1 2 3 1;1 4 6 2;2 9 8 3;3 7 7 2] B=[3;2;7;12] format rational x=A\B x =

⎪⎪⎩⎪⎪⎨

⎧=+++=+++=+++=+++12

27737389222643324321432143214321x x x x x x x x x x x x x x x x

4

2/3

1/2684838239393950

-7/3

【第二题】计算工资问题

一个木工,一个电工,一个油漆工,三个人相互同意彼此装修他们自己的房子。在装修之前,他们达成如下协议:

(1)每人总共工作十天(包括给自己家干活在内);

(2)每人的日工资根据一般的市价在60~80元之间;

(3)每人的日工资数应使得每人的总收入与总支出相等。

下为他们协商后制定出的工作天数分配方案:

解:设在木工、电工和油漆工每天的工资数分别为x,y和z;

依题意得

8x=y+6z

5y=4x+z

7z=4x+4y

即为8x-y-6z=0

4x-5y+z=0

4x+4y-7z=0

clear

A=[8 -1 -6;4 -5 1 ;4 4 -7];

B=null(A, 'r')

B =

0.8611

0.8889

1.0000

实验1.2 M ATLAB程式设计与应用

-----二维绘图部分

基本xy平面绘图命令

M ATLAB不但擅长于矩阵相关的数值运算,也适合用在各种科学的可视化表示(Scientific Visualization)。本节将介绍MATLAB基本xy平面的一些绘图命令。

1.Plot作图 plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义

曲线上每一点的x及y坐标。下例可画出一条正弦曲线:

close all; %关闭所有的图形视窗

x=linspace(0, 2*pi, 100); % 100个点的x坐标

y=sin(x); % 对应的y坐标

plot(x,y);

若要画出多条曲线,只需将坐标对依次放入plot函数即可:plot(x, sin(x), x, cos(x))

若要改变颜色,在坐标对后面加上相关字串即可:

plot(x, sin(x), 'c', x, cos(x), 'g')

若要同时改变颜色及图线型态(Line style),也是在坐标对后面加上相关字串即可:plot(x, sin(x), 'co', x, cos(x), 'g*')

图形完成后,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围: axis([0, 6, -1.2, 1.2]);

对上述图形还可以加上各种注解与处理: xlabel('Input Value'); % x 轴注解 ylabel('Function Value'); % y 轴注解

title('Two Trigonometric Functions'); % 图形标题 legend('y = sin(x)','y = cos(x)'); % 图形注解 grid on; % 显示格线

Input Value

F u n c t i o n V a l u e

Two Trigonometric Functions

此外,我们可用subplot来同时画出数个小图形于同一个视窗之中:

其语法为subplot(m,n,p),其中m, n代表绘图成m * n个子图,m表示在 y 方向有m个图,n表示在 x 方向有n个图,p 是代表第几个子图。

subplot(2,2,1); plot(x, sin(x));

subplot(2,2,2); plot(x, cos(x));

subplot(2,2,3); plot(x, sinh(x));

subplot(2,2,4); plot(x, cosh(x));

实验材料下载地址:ftp://172. 21.73.244

.

用户名:kly

密码:kly

数学\07级\09专.

MatLab解线性方程组

MatLab解线性方程组一文通(转帖) 当齐次线性方程AX=0,rank(A)=r

MatLab解线性方程组一文通! -------------------作者:liguoy(2005-2-3) 写在阅读本文前的引子。 一:读者对线性代数与Matlab 要有基本的了解; 二:文中的通用exp.m文件,你须把具体的A和b代进去。 一:基本概念 1.N级行列式A:|A|等于所有取自不同行不同列的n个元素的积的代数和。 2.矩阵B:矩阵的概念是很直观的,可以说是一张表。 3.线性无关:一向量组(a ,a ,…. a )不线性相关,即没有不全为零的数k ,k ,……kn 使得:k1* a +k2* a +…..+kn*an=0 4. 秩:向量组的极在线性无关组所含向量的个数称为这个向量组的秩。 5.矩阵B的秩:行秩,指矩阵的行向量组的秩;列秩类似。记:R(B) 6.一般线性方程组是指形式: (1) 其中x1,x2,…….xn为n个未知数,s为方程个数。记:A*X=b 7.性方程组的增广矩阵:= 8. A*X=0 (2) 二:基本理论 三种基本变换:1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一个方程;3互换两个方程的位置。以上称初等变换。 消元法(理论上分析解的情况,一切矩阵计算的基础) 首先用初等变换化线性方程组为阶梯形方程组,把最后的一些恒等式”0=0”(如果出现的话)去掉,1:如果剩下的方程当中最后的一个等式是零等于一非零数,那么方程组无解;否则有解,在有解的情况下,2:如果阶梯形方程组中方程的个数r等于未知量的个数,那么方程组有唯一的解,3:如果阶梯形方程组中方程的个数r小于是未知量的个数,那么方程组就有无穷个解。

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

利用Matlab进行线性代数问题求解的方法与 案例 引言 线性代数是数学的一个重要分支,广泛应用于工程、物理、计算机科学等领域。而Matlab作为一种功能强大的数值计算软件,提供了各种实用的工具和函数,可 以方便地解决线性代数问题。本文将介绍一些常用的线性代数问题求解方法,并通过具体的案例来展示Matlab在实际应用中的效果。 一、线性方程组的求解 线性方程组是线性代数中最基础的问题之一。Matlab提供了多种求解线性方程 组的函数,如“backslash”操作符(\)和“linsolve”函数等。下面通过一个实例来说 明Matlab的线性方程组求解功能。 案例:假设有以下线性方程组需要求解: 2x + 3y - 4z = 5 3x - 2y + z = 8 x + 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可以提供有关该矩阵的很多信息,如相关线性变换、对称性等。 三、矩阵的奇异值分解 奇异值分解(SVD)是线性代数中的一个重要分解方法,可以将一个矩阵分解为三个矩阵的乘积形式。Matlab提供了“svd”函数用于求解矩阵的奇异值分解。下面通过一个案例来演示Matlab中对矩阵进行奇异值分解的方法。 案例:假设有一个3x2矩阵A,需要对其进行奇异值分解。

利用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.214 A.高斯消元法 一、算法介绍 高斯消元法是一种规则化的加减消元法。基本思想是通过逐次消元计算把需要求解的线性方程组转化成为上三角方程组,即把现形方程组的系数矩阵转化为上三角矩阵,从而使一般线性方程组的求解转化为等价的上三角方程组的求解。 二、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,所以此方程组无解.') return end if RA==RB if RA==n disp(‘因为RA=RB=n,所以此方程组有唯一解.')

matlab求线性方程组的解

matlab求线性方程组的解 求解线性方程分为两种方法–直接法和迭代法常见的方法一共有8种直接法Gauss消去法Cholesky分解法迭代法Jacobi迭代法Gauss-Seidel迭代法超松弛迭代法共轭梯度法Bicg迭代法Bicgstab迭代法 这里我从计算代码的角度来解释一下,代码按以下顺序给出。把方程组直接带入已知条件,就可以得到答案。 适用条件Gauss消去法:求解中小规模线性方程(阶数不过1000),一般用于求系数矩阵稠密而且没有任何特殊结构的线性方程组 Cholesky分解法:对称正定方程优先使用,系数矩阵A是n 阶对称正定矩阵 Jacobi迭代法非奇异线性方程组,分量的计算顺序没有关系 Gauss-Seidel迭代法与Jacobi迭代法相似,但计算的分量不能改变 超松弛迭代法Jacobi迭代法和Gauss-Seidel迭代法的加速版,由Gauss-Seidel迭代法改进而来,速度较快 共轭梯度法需要确定松弛参数w,只有系数矩阵具有较好的性质时才可以找到最佳松弛因子。但好处是不用确定任何参数,他是对称正定线性方程组的方法也是求解大型稀疏线性方程组最热门的方法 Bicg迭代法本质是用双共轭梯度求解线性方程组的方法,对求解的方程没有正定性要求

Bicgstab迭代法本质是用稳定双共轭梯度求解线性方程组的方法,对求解的方程没有正定性要求 Gauss消去法第一、二个函数ltri、utri是一定要掌握的,后面的几乎每个函数都要用到ltri简单来说,当Ly=bb,L(非奇异下三角矩阵)已知求y function y =ltri(L,b) n=size(b,1); y=zeros(n,1);for j =1:n- 1y(j)=b(j)/L(j,j);b(j+1:n)=b(j+1:n)-y(j)*L(j+1:n,j); end y(n)=b(n)/L(n,n); utri简单来说,当Ux=yy,U(非奇异上三角矩阵)已知求x function x =utri(U,y) n=size(y,1); x=zeros(n,1);for j = n:-1:2x(j)=y(j)/U(j,j);y(1:j- 1)=y(1:j-1)-x(j)*U(1:j-1,j); end x(1)=y(1)/U(1,1); gauss算法,计算时粘贴过去就好 function[L,U]=gauss(A) n=size(A,1);for k =1:n- 1A(k+1:n,k)=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k +1:n)-A(k+1:n,k)*A(k,k+1:n); end L=tril(A,-1)+eye(n);U=triu(A); 使用例子已经知道一个线性方程组,这里我就不写出数学形式了,A是系数矩阵,直接把上面写好的函数复制过来在运算就

matlab计算方程组

matlab计算方程组 Matlab作为一款试用范围广泛的科学计算软件,其计算方程组的能力也是非常强大的。在Matlab中,可以通过多种方式计算方程组, 比如使用直接法、迭代法、线性方程组求解器等等。下面将分步骤阐 述使用Matlab计算方程组的方法。 一、使用直接法求解 直接法是一种将系数矩阵直接求逆再与常数向量相乘的方法,通 常在方程组的规模较小时使用。下面是使用Matlab求解线性方程组的 示例代码: ```matlab % 定义系数矩阵和常数向量 A = [1 2 3; 4 5 6; 7 8 9]; b = [3; 6; 9]; % 求解方程组 x = A\b; disp(x); ``` 这段代码首先定义了一个3x3的系数矩阵A和一个3x1的常数向 量b,然后使用反斜线符号来求解方程组。该符号将A的逆矩阵乘上b,得到解向量x。 二、使用迭代法求解 当方程组的规模较大时,直接法的计算量可能会非常大,在这种 情况下可以使用迭代法来求解方程组。迭代法的主要思想是通过反复 迭代求解来逼近方程组的解。常见的迭代法有Jacobi迭代法、Gauss-Seidel迭代法等。 以Jacobi迭代法为例,下面是使用Matlab求解线性方程组的示 例代码: ```matlab

% 定义系数矩阵和常数向量 A = [1 2 3; 4 5 6; 7 8 9]; b = [3; 6; 9]; % 定义Jacobi迭代法函数 function [x, k] = jacobi(A, b, x0, tol, max_iter) D = diag(diag(A)); L = -tril(A, -1); U = -triu(A, 1); x = x0; for k = 1:max_iter x = inv(D)*(b + L*x + U*x); if norm(A*x - b) < tol return end end end % 求解方程组 x0 = [0; 0; 0]; tol = 1e-6; max_iter = 1000; [x, k] = jacobi(A, b, x0, tol, max_iter); disp(x); ``` 这段代码首先定义了一个3x3的系数矩阵A和一个3x1的常数向量b,然后定义了一个Jacobi迭代法的函数来求解方程组。该函数首先将A分解为对角矩阵D、严格下三角矩阵L和严格上三角矩阵U,然后使用反复迭代的方式逼近方程组的解。在每一次迭代过程中,都会计算出一个新的解x,并判断该解与上一次的解之间的误差是否小于某个阈值tol。如果误差小于阈值,则认为已经找到了方程组的解并返回结果。否则就继续迭代,直到达到最大迭代次数max_iter为止。 三、使用线性方程组求解器

数值分析中求解线性方程组的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; end for k=p+1:N m=Aug(k,p)/Aug(p,p); Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1); end end D=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:n x(k)=(b(k)-A(k,1:k-1)*x(1:k-1))/A(k,k); end 3.普通系数矩阵(先化为上三角,在用回溯法) 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

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是解向量。该方法会自动选择 合适的求解方法,返回解向量X。下面是一个使用“mldivide”函数解线 性方程组的例子: A=[12;34]; B=[5;6]; X=A\B; 上述代码中,A是一个2×2的系数矩阵,B是一个2×1的常数向量,X是一个2×1的解向量。运行代码后,X的值为[-4.0000;4.5000]。

线性方程组及MATLAB应用

数值实验 线性方程组与MATLAB 应用 王 1.实验目的:理解矩阵的范数与条件数。 实验内容:已知矩阵 ⎪⎪⎪⎪ ⎪⎭ ⎫ ⎝⎛------=1111111111 111111A 求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.0000 2.实验目的:研究高斯消去法的数值稳定性(出现小主元)。 实验内容:设方程组b Ax =,其中两个矩阵如下,分别对以上两个方程组 (1)⎥⎥⎥ ⎥⎥⎦⎤⎢⎢ ⎢⎢ ⎢ ⎣⎡--⨯=-11212592.1121130.6291 .513 14 .59103.0151A ,⎥ ⎥⎥⎥ ⎦⎤ ⎢⎢⎢ ⎢⎣⎡=2178.4617.591b (2)⎥⎥⎥⎥⎦⎤⎢ ⎢⎢ ⎢⎣⎡----=2010 1515269999 0999999999.2310 710 2A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=15 00019000000000.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];

matlab解线性方程组

设有n个变量,m个方程,方程组的系数矩阵为A,常数项列向量为b,则A为m×n矩阵,b为m×l矩阵,方程组可写为Ax=b 其中x为n个变量构成的列向量,若rank(A)=m,且m=n,则方程有唯一解,称为恰定方程组;设B=(A|b)为增广矩阵,且若rank (A)≠rank(B),则方程组无解,称为超定方程组;rank(A)=rank (B)=r

在MATLAB中输入: 因而,原方程组的通解为

其中k1与k2为任意常数。 例5.2.2 求方阵A的含有最多零元素个数的解。

在例5.2.1求解后,运行: 则有

故方程组的通解为 恰定方程组的求解 恰定方程组Ax=b的求解比较简单。一般可用两种方法:一种是利用逆矩阵求解:x=inv(A)b;另一种是用除法求解x=A\b。两种方法的异同点是:算法上都采用Guass消去法,但用除法求解时,无需求A的逆,这样可以很好地保证求解时的计算精度,还能节省大量的计算时间。当然也可以用Cramer法则求解方程组。 比较多种形式求解恰定方程组:

结果为:

Matlab求解线性方程组、非线性方程组

求解线性方程组 solve,linsolve 例: A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1]; %矩阵的行之间用分号隔开,元素之间用逗号或空格 B=[3;1;1;0] X=zeros(4,1);%建立一个4元列向量 X=linsolve(A,B) diff(fun,var,n):对表达式fun中的变量var求n阶导数。 例如:F=sym('u(x,y)*v(x,y)'); %sym()用来定义一个符号表达式 diff(F); %matlab区分大小写 pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式 非线性方程求解 fsolve(fun,x0,options) 其中fun为待解方程或方程组的文件名; x0位求解方程的初始向量或矩阵; option为设置命令参数 建立文件fun.m: function y=fun(x) y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ... x(2) - 0.5*cos(x(1))+0.3*sin(x(2))]; >>clear;x0=[0.1,0.1];fsolve(fun,x0,optimset('fsolve')) 注: ...为续行符 m文件必须以function为文件头,调用符为;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。

Matlab求解线性方程组 AX=B或XA=B 在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/”和“\”。如: X=A\B表示求矩阵方程AX=B的解; X=B/A表示矩阵方程XA=B的解。 对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理。 如果矩阵A不是方阵,其维数是m×n,则有: m=n 恰定方程,求解精确解; m>n 超定方程,寻求最小二乘解; m

迭代法解线性方程组MATLAB编程实验报告

迭代法解线性方程组MATLAB编程实验报告迭代法是一种求解线性方程组的方法,通过迭代计算来逼近方程组的解。本实验利用MATLAB编程实现迭代法求解线性方程组,并通过实验比较不同迭代次数和初始解对迭代结果的影响。 一、实验目的 1.了解迭代法求解线性方程组的原理和方法; 2.掌握MATLAB编程求解线性方程组的实现过程; 3.通过实验比较不同迭代次数和初始解对迭代结果的影响。 二、实验原理 迭代法求解线性方程组的基本原理是通过不断迭代计算来逼近方程组的解。常用的迭代法有Jacobi迭代法和Gauss-Seidel迭代法。 1.Jacobi迭代法 Jacobi迭代法的基本思想是,将线性方程组的解表示为当前迭代步数的一个函数,并通过迭代计算更新解的估计值。具体过程如下: (1)设线性方程组的系数矩阵为A,右端常数向量为b,则线性方程组可以表示为Ax=b。 (2)将系数矩阵A分解为对角矩阵D、上三角矩阵U和下三角矩阵L 的和,即A=D-U-L。 (3)将方程组的解表示为当前迭代步数的一个函数,即x(k)。

(4)根据方程组的迭代公式x(k+1)=D^(-1)(b-Ux(k)-Lx(k)),迭代计算更新解的估计值。 (5)重复步骤(4),直到满足指定的停止准则。 2.Gauss-Seidel迭代法 Gauss-Seidel迭代法是Jacobi迭代法的改进方法,其主要改进点在于每次更新解的估计值时,使用最新的已知解估计值。具体过程如下: (1)设线性方程组的系数矩阵为A,右端常数向量为b,则线性方程组可以表示为Ax=b。 (2)将系数矩阵A分解为对角矩阵D、上三角矩阵U和下三角矩阵L 的和,即A=D-U-L。 (3)将方程组的解表示为当前迭代步数的一个函数,即x(k)。 (4)根据方程组的迭代公式x(k+1)=D^(-1)(b-Ux(k+1)-Lx(k)),迭代计算更新解的估计值。 (5)重复步骤(4),直到满足指定的停止准则。 三、实验步骤 1.根据给定的线性方程组构造系数矩阵A和右端常数向量b。 2.选择迭代法的类型(Jacobi迭代法或Gauss-Seidel迭代法)。 3.设置迭代的停止准则(如迭代次数或误差限度)。 4.设置初始解估计值。

matlab线性代数实验

线性代数MATLAB 实验指导书 MATLAB 是Matrix Laboratory 的缩写,是一个集数值计算、图形处理、符号运算、文字处理、数学建模、实时控制、动态仿真和信号处理等功能为一体的数学应用软件,而且该系统的基本数据结构是矩阵,又具有数量巨大的内部函数和多个工具箱,使得该系统迅速普及到各个领域,尤其在大学校园里,许多学生借助它来学习大学数学和计算方法等课程,并用它做数值计算和图形处理等工作。我们在这里介绍它的基本功能,并用它做与线性代数相关的数学实验。 在正确完成安装MATLAB 软件之后,直接双击系统桌面上的MATLAB 图标,启动MATLAB ,进入MATLAB 默认的用户主界面,界面有三个主要的窗口:命令窗口(Commend Window ), 当前目录窗口(Current Directory ),工作间管理窗口(Workspace )。 命令窗口是和Matlab 编译器连接的主要窗口,“>>”为运算提示符,表示Matlab 处于准备状态,当在提示符后输入一段正确的运算式时,只需按Enter 键,命令窗口中就会直接显示运算结果。 实验1 矩阵的运算,行列式 实验名称:矩阵的运算,行列式 实验目的:学习在matlab 中矩阵的输入方法以及矩阵的相关运算,行列式。 实验原理:介绍相关的实验命令和原理 (1)一般矩阵的输入 (2)特殊矩阵的生成 (3)矩阵的代数运算 (4)矩阵的特征参数运算 (5)数字行列式和符号行列式的计算 实验命令 1 矩阵的输入 Matlab 是以矩阵为基本变量单元的,因此矩阵的输入非常方便。输入时,矩阵的元素用方括号括起来,行内元素用逗号分隔或空格分隔,各行之间用分号分隔或直接回车。 例1 输入矩阵 ⎪⎪⎪⎭ ⎫ ⎝⎛--=654301211A ,可以在命令窗口中输入 >>A=[1 1 2;-1 0 3;4 -5 6] A = 1 1 2 -1 0 3 4 - 5 6 2 特殊矩阵的生成 某些特殊矩阵可以直接调用相应的函数得到,例如: zeros(m,n) 生成一个m 行n 列的零矩阵

线性代数的MATLAB软件实验报告

线性代数的MATLAB 软件实验 一、实验目的 1.熟悉矩阵代数主要MATLAB 指令。 2.掌握矩阵的转置、加、减、乘、除、乘方、除法等MATLAB 运算。 3.掌握特殊矩阵的MATLAB 生成。 4.掌握MATLAB 的矩阵处理方法。 5.掌握MATLAB 的矩阵分析方法。 6.掌握矩阵的特征值与标准形的MATLAB 验算。 7.掌握线性方程组的MATLAB 求解算法。 二、实验原理 1.线性方程组 【基本观点】 自然科学和工程实践很多问题的解决都涉及线性代数方程组的求解和矩阵运算.一方面,许多问题的数学模型本身就是一个线性方程组,例如结构应力分析问题、电子传输网分析问题和投入产出分析问题;另一方面,有些数值计算方法导致线性方程组求解,如数据拟合,非线性方程组求解和偏微分方程组数值解等. n 个未知量m 个方程的线性方程组一般形式为 ⎪⎪ ⎩⎪⎪ ⎨ ⎧=+++=+++=+++. , ,221 12222212111212111m n mn m m n n n n b x a x a x a b x a x a x a b x a x a x a (3.1) 令 ,,,2121212222111211⎪⎪⎪⎪⎪⎭ ⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪ ⎭⎫ ⎝⎛=m n mn m m n n b b b b x x x x a a a a a a a a a A 则得矩阵形式 Ax=b. (3.2) 若右端b=0,即 Ax=0, (3.3) 则称方程组为齐次的. 方程组(3.1)可能有唯一解,可能有无穷多解,也可能无解,主要取决于系数矩阵A 及增广矩阵(A,b )的秩.若秩(A )=秩(A,b )=n,存在唯一解,其解理论上用Cramer 法则求出,但由于这种方法要计算n+1个n 阶行列式,计算量太大通常并不采用;若秩(A )=秩(A,b )

MATLAB教程方程组

MATLAB教程方程组 MATLAB(Matrix Laboratory)是一种高级计算机语言和环境,被广 泛应用于科学、工程和其他技术领域。它具有强大的矩阵操作能力,以及 丰富的函数库,能够快速、高效地完成各种计算任务。在MATLAB中,方 程组的求解是一项重要的任务,本教程将介绍如何使用MATLAB求解线性 和非线性方程组。 1.线性方程组的求解 线性方程组是指方程中的未知量只有一次出现,并且未知量之间的关 系是线性的。在MATLAB中,可以使用“\”运算符求解线性方程组。 首先,定义一个线性方程组。例如,我们要求解以下方程组: 2x+4y+z=10 3x+2y-z=-7 x-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=25 x * 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程序

线性方程组求解 1.直接法 Gauss消元法: function x=DelGauss(a,b) % Gauss消去法 [n,m]=size(a); nb=length(b); det=1;%存储行列式值 x=zeros(n,1); for k=1:n-1 for i=k+1:n if a(k,k)==0 return end m=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-m*a(k,j); end b(i)=b(i)-m*b(k); end det=det*a(k,k); end

det=det*a(n,n); for k=n:-1:1 %回代 for j=k+1:n b(k)=b(k)-a(k,j)*x(j); end x(k)=b(k)/a(k,k); end Example: >> A=[ ; ; ]; >> b=[1 0 1]'; >> x=DelGauss(A,b) x = 列主元Gauss消去法: function x=detGauss(a,b) % Gauss列主元消去法

[n,m]=size(a); nb=length(b); det=1;%存储行列式值 x=zeros(n,1); for k=1:n-1 amax=0;% 选主元 for i=k:n if abs(a(i,k))>amax amax=abs(a(i,k));r=i; end end if amax<1e-10 return; end if r>k %交换两行 for j=k:n z=a(k,j);a(k,j)=a(r,j);a(r,j)=z; end z=b(k);b(k)=b(r);b(r)=z;det=-det; end

Matlab解线性方程

Matlab 线性方程组求解 专业:电子信息工程 姓 名: 徐顺 学 号:20144054034 班 级: 14 电子班2017 年11 月5 日星期日

Matlab 线性方程组求解 目录 一、线性方程组的求解型 (2) 二、使用matlab对线性方程组的求解过程................. ..3 三、误差函数的变化过程及分析.................. . (7) 四、探讨两种不同模型当B的值改变时对方程组解的影 响...................................................... 五、结论.................................................... 一、线性方程组的求解模型 1.1 对于含有n 个方程,m 个未知的线性方程组,表示为a*x=b 。其中,a 为n X m的矩阵,b为n x i的列向量。 1.2模型I: 1.3线性方程组A*x=B ................... ®(A为矩阵,B为列向量)

1.4 方程解为:diff(x)二B*A ' *(A*xB) ............. ② 1.5 理论解为:x=A\B 2.1模型U: 2.2线性方程组A*x=B ........................... ①(A为矩阵,B为列向量) 2.3 方程解为:A*diff(x)=-俨(A*x-B ) ............. ②.. 2.4理论解模型I和模型U—致。 二、使用matlab2010 软件对两种不同的模型进行线性方程组的求解,并画出x 的变化曲线。 随机选取一组线性方程组为: 2*X1+7*X2=13 ........... ① 5*X1+3*X2=21 ........... ② 由此得矩阵A=[2 5;7 9 ] 列向量B=[20 ; 40] 则理论解为X=A\B 2.1 理论解求解过程如下: A=[2 5;7 9]; B=[20;40]; >>y=A\B; 1.1765 3.5294 >> tf=20; >> x0=[0 0]'; >> [t,x]=ode23('model1',[t0,tf],x0); >> figure(1),plot(t,y(1),'g',t,y (2),'r') >> title(' 理论解') 通过matlab软件画出x的变化曲线如下: 3.5

matlab 实验教程 实验一

MATLAB语言及其应用 实验教程

实验一 实验目的: 1.熟悉MATLAB的界面,菜单,会使用DEMO,学会使用帮助(help)。2.学习MATLAB的基本语法 实验内容: 1.打开MATLAB,点击各个菜单以了解各个子菜单项。 2.更改当前路径,在指定路径下保存所作的实验。 实验具体步骤: 如图所示,在D盘根目录下建立“MATLAB实验”文件夹,并在此文件夹下以各自的学号建立子文件夹。 如图所示,点击工具栏上“Current Directory”栏的浏览按钮。 选择刚刚建立的以各自学号命名的文件夹,“Current Directory”栏显示如下路径

格式。 注意!以后所有的实验均保存在此目录中。 3.学习打开和关闭命令窗口(command window),工作空间(workspace)和命令历史窗口(command history)。 实验具体步骤: 单击命令窗口右上角的“X”标志,关闭命令窗口; 在Desktop菜单下选择“Command window”,打开命令窗口; 单击工作空间窗口右上角的“X”标志,关闭工作空间; 在Desktop菜单下选择“Workspace”,打开工作空间; 单击命令历史窗口右上角的“X”标志,关闭命令历史窗口; 在Desktop菜单下选择“Command history”,打开命令历史窗口。 4.练习变量的赋值,包括向量赋值,矩阵赋值以及复数的赋值。 实验具体步骤: 变量赋值 >> a=100 a = 100 >> b=0.1 b = 0.1000 向量赋值 >> a=1:1:10 a = 1 2 3 4 5 6 7 8 9 10 >> b=1:2:10 b =

MATLAB 课后实验答案

实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 012 2sin851z e =+ (2) 221ln(1)2z x x =++,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022 a a e e a z a a --+=++=-- (4) 2242011 122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:0.5:2.5 解: M 文件: z1=2*sin(85*pi/180)/(1+exp(2)) x=[2 1+2*i;-.45 5]; z2=1/2*log(x+sqrt(1+x^2)) a=-3.0:0.1:3.0; z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) t=0:0.5:2.5; z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1) 运算结果: z1=2*sin(85*pi/180)/(1+exp(2))

x=[2 1+2*i;-.45 5]; z2=1/2*log(x+sqrt(1+x^2)) a=-3.0:0.1:3.0; z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) t=0:0.5:2.5; z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1) z1 = 0.2375 z2 = 0.7114 - 0.0253i 0.8968 + 0.3658i 0.2139 + 0.9343i 1.1541 - 0.0044i z3 = Columns 1 through 4 0.7388 + 3.1416i 0.7696 + 3.1416i 0.7871 + 3.1416i 0.7913 + 3.1416i Columns 5 through 8 0.7822 + 3.1416i 0.7602 + 3.1416i 0.7254 + 3.1416i 0.6784 + 3.1416i

基于matlab的线性方程组迭代法(实验报告)

基于matlab 的线性方程组迭代法 实验题目: 实验要求: (1)分别试用 Jacobi 和Gauss-Seidel 迭代法计算,要求达到的精度为: (1)()510k k x x +-∞ -> (2)观测得到的迭代序列是否收敛?若收敛,记录迭代次数并分析计算结果。 实验流程 一、迭代法简介 1、 Jacobi 迭代法 对于方程组Ax b =有A 非奇异情况下且0ij a ≠时,A 分裂为A D L U =--,可得到: 0x B x f =+,其中1110(),B I D A D L U f D b ---=-=+=,得到雅克比迭代法: (0)(1)() 0() k k x x B x f +⎧⎪⎨=+⎪⎩初始向量 2、 Gauss-Seidel 迭代法 (0) (1)() () k k x x Gx f +⎧⎪⎨=+⎪⎩ 初始向量 其中11 (),()G D L U f D L b --=-=-。其迭代法优点为只需一组存储单元。 3、 超松弛迭代法(SOR) Gauss-Seidel 迭代法的一种加速方法,ω松弛因子。 (0)(1) ()(1)(1))()(1)k k k k k x x Gx f x x x ωω+++⎧⎪⎪=+⎨⎪=+-⎪⎩ (初始向量 其中1 1 (),()G D L U f D L b --=-=-。 二、迭代法的matlab 程序 1、 Jacobi 迭代法Jacobi.m function [y,n]= Jacobi( A,b,x0,e )

%JACOBI ÇëÔÚ´Ë´¦ÊäÈ뺯Êý¸ÅÒª if(nargin<4)e=1e-5;end D=diag(diag(A)); I=eye(size(A)); B=I-D\A; f=D\b; y=x0+2*e; n=0; while norm(y-x0,inf)>e y=x0; x0=B*y+f; n=n+1; end n end 2、Gauss-Seidel迭代法GaussSeidel.m function [y,n]= GaussSeidel( A,b,x0,e ) %GS ÇëÔÚ´Ë´¦ÊäÈ뺯Êý¸ÅÒª if(nargin<4)e=1e-5;end D=diag(diag(A)); I=eye(size(A)); L=D-tril(A); U=D-triu(A); f=(D-L)\b; G=(D-L)\U; y=x0+2*e; n=0; while norm(y-x0,inf)>e y=x0; x0=G*y+f; n=n+1; end n end 3、超松弛迭代法(SOR) SOR.m function [y,n]= SOR( A,b,w,x0,e ) %SORÇëÔÚ´Ë´¦ÊäÈ뺯Êý¸ÅÒª if(nargin<5)e=1e-5;end D=diag(diag(A)); I=eye(size(A)); L=D-tril(A); U=D-triu(A); f=(D-L)\b;

相关主题