解齐次线性方程组的解法组

解线性方程组的步骤_中华文本库
因为它们为同解方程 组,所以也就得到了原方程组(3.1)的解。这种方法被称为高斯消元法, (下面举例说明用消元法求一般线性方程组解的方法和步骤。) 2 ? x1 ...
k ? ,k ? F i i i n 2 线性方程组的解法及相关结论恰当分类线性方程组,可以快速求出线性方程组的解,而在求解和探 讨过程中,又能得到一些非常重要的相关...
第三章线性代数方程组解法 - 第三章 线性方程组的数值解法 讨论线性方程组解法的必要性 工程实际中的许多问题都归结为解线性方程组,我们知道线 性方程组 a11x1...
巧用Excel解线性方程组 - 42 文章编号 :1007 - ) 03 - 0042 - 02 广东气象 2005. 3 巧用 Ex...
三角分解解线性方程组的公式 - ?三角分解解线性方程组的公式 ? ? ? ? Ax ? b 的求解过程为: ? Ly ? b ? ? ? ?Ux ? y yk ? bk ? ? lkm ym ...
m & n,方程组是否有解? ? ? m = n,方形线性方程组,Cramer法则; ? m & n,解是怎样的? ? 第一节 高斯消元法是求解线性方程组的一种基本方法。 其...
3 巧用 Excel 解线性方程组刘铸飘 ( 始兴县气象局 , 广东始兴 512500) : 介绍一种较为简单明了的用 Excel 规划求解功能来解线性方程组的方法 。摘要 关键...
第一章 解线性方程组的克拉默 ( G ram er ) 法则 解方程是数学中一个基本...解是唯一的;3,解由公式(3)给出, 这三个结论是有联系的,因此证明的步骤是:...
解线性方程组的直接法的Matlab实现 - 掌握高斯消去法和追赶法的基本思路和迭代步骤二、实验内容 1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性...
3.3 线性方程组解的判定 - 3.3 线性方程组解的判定 在上一节中,我们利用实例讨论了线性方程组解的各种情况,分析以上解方程组的过程,可以得到用 消元法解...平淡生活;自由生存
线性方程组的直接解法
GAUSS列主消元法
求解n元线性方程组的最简单直接求解方法,学过线性代数的人都应该知道,即求解线性方程组
???????????????a11x1+a12x2+...+a1jxi+...+a1nxn=b1...ai1x1+ai2x2+...+aijxi+...&+ainxn=bi...an1x1+an2x2+...+aijxi+...+ainxn=bn
(PS:这个latex的排版真的好漂亮唯一不足就是不能字符对齐)
其实就是把系数矩阵化为上三角矩阵,不过得对应的对向量b做变换,过程不再累述,详细过程请见
这里给出一种列主元素的实现
public class linearEquation {
* 找到列主元素所在行
private static int findMaxRow(double[][]a,int i,int n)
int ansRow =
for(int r = i+1 ; r&n+1 ; ++r)
if(a[ansRow][i]&a[r][i])
return ansR
* 交换同一个矩阵中的两行
* startColumn
private static void swapRow(int startColumn,int r1,int r2,int n,double[][]a)
for(int j = startC j&n+1 ; ++j)
double t = a[r1][j];
a[r1][j] = a[r2][j];
a[r2][j] =t;
* 高斯列主元素消元法
public static void Gauss(double[][] a,double[] b,double[]x,int n)//从1,开始
for(int i=1 ; i& ++i)
int maxr = findMaxRow(a, i, n);
if(maxr !=i)
swapRow(i, maxr, i, n, a);
double tmp = b[maxr];
b[maxr] = b[i];
for(int r = i+1 ; r&n+1 ; ++r)
double l = a[r][i]/a[i][i];
for(int j= j&n+1 ; ++j)
a[r][j] = a[r][j]-l*a[i][j];
b[r] =b[r]-l*b[i];
for(int i= i&0 ; --i)
for(int j= j& j--)
b[i] -= a[i][j]*x[j];
x[i] = b[i]/a[i][i];
这是矩阵化简的最重要的方法,想到这里也就不难想到他在矩阵运算中的作用了
矩阵求逆,求矩阵的rank…
计算复杂度(complexity)
矩阵的LU分解
对n阶方阵A∈Rn*n,若存在单位下三角矩阵L和上三角矩阵U使得
则称为矩阵的Doolittle分解,也称为矩阵的LU分解。
我们给出若A的顺序主子式Ai(i=1,2,...,n)则A有唯一的LU分解(证明见数值计算教材)。
aij={∑i-1k=1LikUkj,&j≥i∑jk=1LikUkj,&j&i
所以我们有
Lij=(aij-∑j-1k=1LikUkj)/Ujj,j=i+1,...,n
Uij=aij-∑i-1k=1LikUkj,j=i,..,n
然而我们并不需要采用这种方式来进行计算,这里给出一种《算法导论》中提到的分块的思想,来递归求解。
* 方阵的LU分解A = LU
* n n阶方阵
public static void LU_Decomposition(int n,double[][] A,double [][] L,double[][]U)
for(int k=1 ; k&n+1 ; ++k)
for(int i =k;i&n+1;++i )
U[k][i] = A[k][i];
L[i][k] = A[i][k]/U[k][k];
for(int i=k+1 ; i&n+1 ; ++i)
for(int j = k+1 ; j&n+1 ; ++j)
A[i][j]-=L[i][k]*U[k][j];
矩阵的LUP分解
从上面的代码可以很容易的看出LU分解是没有数值稳定性的。所以我们可以采用GAUSS消元的做法,选取一个主元(列最大的值)这样就相当于矩阵A左乘一个置换矩阵。即PA=LU,不过我们并不需要表示出这个矩阵,只需用P[i]表示第i行为1的列就行了。
* n阶方阵的LUP分解,,P为置换矩阵,即PA = LU;
* n 矩阵的Rank
* P 置换矩阵,其中存的是为1的元素的列
public static void LUP_Decomposition(int n,double[][]A,int[]P)
for(int i=1 ; i&n+1 ; ++i)P[i] =
for(int k =1 ; k&n+1; ++k)
int maxRow = findMaxRow(A, k, n) ;
if(maxRow!=k)
int temp = P[k];
P[k] = P[maxRow];
P[maxRow] =
swapRow(k, maxRow, n, A, 1);
for(int i=k+1 ; i&n+1 ; ++i)
A[i][k] /= A[k][k];
for(int j=k+1 ; j&n+1 ; ++j)
A[i][j]-=A[i][k]*A[k][j];
计算复杂度
这种方法并不比GAUSS消元法来的快,但是在后面我们可以看到求得了矩阵的一个LUP分解之后,可以在O(n2)类求解线性方程组,这对于一个系数矩阵固定的线性系统是一个极大的优化
用矩阵的LUP分解求解线性方程组
由LUP分解我们有
则求解Ax=b即
先求解Ly=Pb
再求解y=Ux
复杂度O(n2)
* LUP分解求解线性方程组
* P置换矩阵
* n方程未知元数目
public static void LUP_solve(double[][]L,double[][]U,int[]P,double[]b,double[]x,int n)
double[]y = new double[n];
for(int i=1 ; i&n+1 ; ++i)
double sum = 0;
for(int j =1 ; j& ++j)
sum+=L[i][j]*y[j];
y[i] = b[P[i]]-
for(int i= i&0 ; --i)
double sum = 0;
for(int j = j& j--)
sum+=U[i][j]*x[j];
x[i] = (y[i]-sum)/U[i][i];
扫码向博主提问
非学,无以致疑;非问,无以广识
擅长领域:
线性方程组的直接解法
线性方程组6种数值解法的对比研究
数值计算——线性方程组的解法
线性方程组的迭代解法:超松弛迭代法
高斯消去法_解线性方程组的直接解法
线性方程组什么时候无解?多个解?唯一解?
线性方程组求解的几种常用方法-c++代码实现
有关线性方程组求解的理解
[数学]线性方程组的解、SVD
Matlab求解线性方程组Ax=b的几种常见方法Matlab求解线性方程组Ax=b的几种常见方法
没有更多推荐了,Gauss-Seidel 迭代法解线性方程组 A x = b 及其MATLAB编程实现
已有 6393 次阅读
|系统分类:|关键词:迭代法,线性方程组|
Guass-Seidel(高斯--赛德尔) 迭代法(简称 $G-S$ 迭代)是对 Jacobi 迭代的一种改进.考查 在方程组(6.42) 式, 计算次序是$x_1{(k+1)}\rightarrow x_2^{(k+1)}\rightarrow x_3^{(k+1)}$, 但在计算 $ x_2^{(k+1)}$ 时并没有利用已经计算出的$x_1^{(k+1)}$,而仍利用$x_1^{(k)}$; 同样, 在计算$x_3^{(k+1)}$ 时, 也没有利用最新计算出的 $x_1^{(k+1)}$,$x_2^{(k+1)}$. 为此, 将$(6.42)$ 改进为 & & & $\begin{cases}
x_1^{(k+1)} = \frac{1}{8}(20 + 3x_2^{(k)} - 2x_3^{(k)})\\
x_2^{(k+1)} = \frac{1}{11}(33-4x_1^{(k+1)} + x_3^{(k)})\\
x_3^{(k+1)} = \frac{1}{12}(36-6x_1^{(k+1)} - 3x_2^{(k+1)})\\
\end{cases}
,(k=0,1,2,\cdots.)$ 这就是G-S迭代.考虑一般情形, G-S迭代也就是将 J 迭代公式 $(6.40)$ 改进为 & & &
$x_i^{(k+1)} = \frac{1}{a_{i{}i}}\left(b_i-\sum\limits_1^{i-1} a_{i{}j}{}x_j^{(k+1)} -\sum\limits_{j = i +1}^n a_{i{}j}{}x_j^{(k)} \right),(i=1,2,\cdots,n.,k = 1,2,\cdots.)
(6.43)$ 这是G-S迭代的分量形式.G-S迭代的矩阵形式即是将 $(6.39)$ 式改为 & &
$\textbfsymbol{D} \textbfsymbol{x}^{(k+1)} = \textbfsymbol{L} \textbfsymbol{x}^{(k+1)}+\textbfsymbol{U} \textbfsymbol{x}^{(k)} + \textbfsymbol{b},(k=0,1,2,\cdots.)$ 于是得 & & & & & & & & & & $\textbfsymbol{x}^{(k+1)} = (\textbfsymbol{D} - \textbfsymbol{L})^{-1} \textbfsymbol{U} \textbfsymbol{x}^{(k)} + (\textbfsymbol{D} - \textbfsymbol{L})^{-1}\textbfsymbol{b},(k=0,1,2,\cdots.)
(6.44)$ 即 & & & & & & & $\textbfsymbol{x}^{(k+1)} = \textbfsymbol{B}_{GS}\textbfsymbol{x}^{(k)} + \textbfsymbol{f},(k=0,1,2,\cdots.)
(6.45)$ 其中, 迭代矩阵
$\textbfsymbol{B}_{GS}=(\textbfsymbol{D} - \textbfsymbol{L})^{-1} \textbfsymbol{U}, \textbfsymbol{f}= (\textbfsymbol{D} -
\textbfsymbol{L})^{-1}\textbfsymbol{b}$ .Gauss-Seidel 迭代法的MATLAB程序:
function [x, k] = LinGauSeid(A,b,eps,it_max) % &求线性方程组的Gauss-Seidel迭代法,调用格式为 % &[x, k] = LinGauSeid(A,b,ep,it_max) % &其中 % &A 为线性方程组的系数矩阵,b 为常数项,ep 为精度要求,默认为1e-5,
% &it_max 为最大迭代次数,默认为100 % &x 为线性方程组的解,k迭代次数 if nargin &4 it_max = 100; if nargin &3 eps = 1e-5; if min(diag(A))&1e-10
error('% 对角元素为0,计算失败!'); end n = length(b); xk = zeros(n,1); &k=1; B = -tril(A)triu(A,1); f = tril(A)b; while k&it_max & & xk1 = B*xk + & & if max(abs(xk1-xk))&eps & & & & & & end & & xk = xk1; k = k+1; end 在命令窗口输入 A = [4 3 0; 3 4 -1;0 -1 4]; b = [24;30;-24];
[x, k] = LinGauSeid(A,b)
x =3.00004.0000-5.0000k =25
说G-S迭代是J迭代的改进,其含义是: 当二者均收敛时, G-S迭代比J迭代收敛速度要快. 然而, 也存在J迭代收敛, 而G-S迭代发散的线性方程组.
转载本文请联系原作者获取授权,同时请注明本文来自王福昌科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:0
推荐到博客首页
评论 ( 个评论)
扫一扫,分享此博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &求解线性方程组的解_百度知道
求解线性方程组的解
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
你好!因为|A|是范德蒙行列式,可知|A|≠0,所以线性方程组ATX=B有唯一解,可以直接验证x1=1,x2=...=xn=0就是解。经济数学团队帮你解答,请及时采纳。谢谢!
怎么直接验证??不懂啊写一下吧!
还是不懂,我要解题步骤
左边用矩阵乘法计算就等于右边。这就是解题步骤。求这个解最简单的作法就是观察猜测与验证。一定要解题步骤,就用克莱姆法则套公式,你自己写吧。
采纳率:97%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。您当前的位置:&>&
线性方程组求解在线计算器
发布时间: 12:36:59&来源:懒人计算器&作者:老壶&
线性方程组求解在线计算器 线性方程组求解器
输入矩阵解决
例如,解3次方程和3个未知数:
x + 2y + 3z = 9
这将是输入上文的矩阵:
3更新:002&&&&&
&看不清楚,点击刷新

我要回帖

更多关于 解线性方程组步骤 的文章

 

随机推荐