21矩阵 A= zeros(m,n)m行n列的零矩阵 =eye(n)n阶单位矩阵 A=one(mn)元素均为1 AA的转置 A( k)A(k, )A(m1 m2, nl: n2) inv(A)A的逆 size(A)A的大小 hib(n) Hilbert矩阵
A=zeros(m,n) m行n列的零矩阵 I=eye(n) n阶单位矩阵 A=ones(m,n) 元素均为1 A’ A的转置 A(:,k) A(k,:) A(m1:m2,n1:n2) inv(A) A的逆 size(A) A的大小 hilb(n) Hilbert矩阵 2.1 矩阵
22解线性代数方程组的 MATLAB命令 Ax=b 情况1:mn(正规方程),最常见 情况2:m<mn(不定方程); 情况3:m>n(超定方程); 本节只介绍情况1。 MATLAB命令: x=A\b效率最高 x=iv(A)*b计算时间大约是上面的50倍
Ax = b 情况1:m=n(正规方程),最常见; 情况2:m<n(不定方程); 情况3:m>n(超定方程); 本节只介绍情况1。 计算时间大约是上面的 倍 效率最高 ( )* 50 \ x inv A b x A b = = MATLAB命令: 2.2 解线性代数方程组的MATLAB命令
23不可解问题 线性代数方程组并不总是数值可解的。只有当矩阵A 的行列式不为零时才行!矩阵A的行列式即使不为零,但 当很小或很大时,解的误差可能很大。 计算矩阵行列式的 MATLAB命令 D= det(a) 24病态问题 有许多线性代数方程组理论上是可解的,但实际计算中 由于受到舍入误差的影响而无法得到精确解。此类问题成 为病态问题 病态问题的计算过程中,小的舍入误差或系数矩阵的微 小变化都可能使解产生很大误差。(例子P97)
线性代数方程组并不总是数值可解的。只有当矩阵A 的行列式不为零时才行!矩阵A的行列式即使不为零,但 当很小或很大时,解的误差可能很大。 计算矩阵行列式的MATLAB命令: D = det(A) 2.4 病态问题 有许多线性代数方程组理论上是可解的,但实际计算中 由于受到舍入误差的影响而无法得到精确解。此类问题成 为病态问题。 病态问题的计算过程中,小的舍入误差或系数矩阵的微 小变化都可能使解产生很大误差。(例子 P97) 2.3 不可解问题
病态矩阵的一个重要标志是条件数: con(A)=4|4 MATLAB命令:cond(A) 矩阵是病态时,其条件数一定很大,但它并不能直 接说明解的误差。 线性方程组解的误差程度也取决于计算环境的精度。 条件数和行列式与计算环境是相互独立的。所以大条件数 或小行列式未必意味无法直接精确求得线性方程组的解, 它只意味着有很大误差可能。而实际上如果采用更高精度 的计算环境则很可能得到非常满意的解。 Hilbert矩阵是非常著名的病态矩阵( hilb(n)),它经常用 来检验算法的数值稳定性的好坏
病态矩阵的一个重要标志是条件数: 1 ( ) − cond A = A A MATLAB命令: cond(A) 当矩阵是病态时,其条件数一定很大,但它并不能直 接说明解的误差。 线性方程组解的误差程度也取决于计算环境的精度。 条件数和行列式与计算环境是相互独立的。所以大条件数 或小行列式未必意味无法直接精确求得线性方程组的解, 它只意味着有很大误差可能。而实际上如果采用更高精度 的计算环境则很可能得到非常满意的解。 Hilbert矩阵是非常著名的病态矩阵(hilb(n)),它经常用 来检验算法的数值稳定性的好坏
2.5线性代数方程组的求解方法(算法) 两种原因使我们想了解求解线性代数方程组的算法。 是实际工作中要用其它计算机语言( Fortran&C等)编写 应用程序;二是 MATLAB处理大型稀疏矩阵方程组显得很 笨拙或无能为力。 由线性代数的理论: Ax=b分B=(Ab)分(初等行变换) II 12
两种原因使我们想了解求解线性代数方程组的算法。 一是实际工作中要用其它计算机语言(Fortran&C等)编写 应用程序;二是MATLAB处理大型稀疏矩阵方程组显得很 笨拙或无能为力。 = = n n n n n a b a a b a a a b Ax b B A b 2 2 2 2 1 1 1 2 1 1 ( ) (初等行变换) 2.5 线性代数方程组的求解方法(算法) 由线性代数的理论: