2-1高斯(Gauss)消去法
数值分析Gauss消去法课件
高斯消元法的代码实现
初始化矩阵
将系数矩阵A进行初始化,并存储在二维数 组中。
消元过程
通过一系列行变换,将系数矩阵变为上三角 矩阵。
主元选择
选择主元,即系数矩阵中所在行和列的最大 元素。
回带求解
利用上三角矩阵的元素,求解线性方程组的 解。
选主元的优化策略
1 2
自然主元
选择系数矩阵中绝对值最大的元素作为主元。
病态问题
对于一些病态问题,高斯 消元法可能无法得到准确 解,需要采用其他方法进 行求解。
01
Gauss消去法的应 用实例
应用领域与案例介绍
线性方程组求解
01
Gauss消去法是求解线性方程组的一种常用方法,适用于大ห้องสมุดไป่ตู้模
、稀疏矩阵的求解。
矩阵求逆
02
通过Gauss消去法可以计算矩阵的逆,这在许多科学计算和工程
最小二乘主元
选择使所在行和列的绝对值之和最小的元素作为 主元。
3
随机主元
随机选择一个元素作为主元,可以避免某些数值 问题。
数值稳定性与误差控制
01
02
03
数值稳定性
高斯消元法在某些情况下 可能产生数值不稳定性, 如主元接近零或数值误差 累积。
误差控制
在消元过程中,可以通过 一些技巧来控制误差,如 预处理、选主元策略和舍 入误差控制。
领域中都有应用。
特征值和特征向量计算
03
Gauss消去法可以用于计算矩阵的特征值和特征向量,这在物理
、工程和经济学等领域有广泛的应用。
实际应用中的问题与挑战
数值稳定性
Gauss消去法在处理病态问题或 接近奇异矩阵时可能会出现数值 不稳定性,导致计算结果误差较 大。
高斯列主元消去法
高斯列主元消去法2.3高斯列主元消去法解线性方程组一:问题的提出我们都知道,高斯列主元素消去法是计算机上常用来求解线性方程组的一种直接的方法。
就是在不考虑舍入误差的情况下,经过有限步的四则运算可以得到线性方程组的准确解的一类方法。
实际运算的时候因为只能有限小数去计算,因此只能得到近似值。
在实际运算的时候,我们很多时候也常用高斯消去法。
但是高斯消去法在计算机中运算的时候常会碰到两个问题。
1.一旦遇到一些主元等于0,消元过程便无法进行下去。
2.在长期使用中还发现,即使消元过程能进行下去,但是当一些主元的绝对值很小时,求解出的结果与真实结果相差甚远。
为了避免高斯消去法消元过程中出现的上述两个问题,一般采用所谓的选择主元法。
其中又可以分为列选主元和全面选主元两种方法。
目前计算机上常用的按列选主元的方法。
因此我在这里做的也是列选主元高斯消去法。
二、算法的基本思想大家知道,如果一个线性方程组的系数矩阵是上三角矩阵时,即这种方程组我们称之为上三角方程组,它是很容易求解的。
我们只要把方程组的最下面的一个方程求解出来,在把求得的解带入倒数第二个方程,求出第二个解,依次往上回代求解。
然而,现实中大多数线性方程组都不是上面所说的上三角方程组,所以我们有可以把不是上三角的方程通过一定的算法化成上三角方程组,由此我们可以很方便地求出方程组的解。
高斯消元法的目的就是把一般线性方程组简化成上三角方程组。
于是高斯消元法的基本思想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解线性方程组。
三、算法的描述1、设有n元线性方程组如下:=2、第一步:如果a11!=0,令li1= ai1/a11, I= 2,3,……,n用(-li1)乘第一个方程加到第i个方程上,得同解方程组:a(1)11a(1)12...a(1)1nx1b(1)1a(1)21a(1)22...a(1)2nx2b(1)2 .......=.a(1)n-11 a(1)n-12 . .a(1)n-1nxn-1b(1)n-1a(1)n1a(1)n2. . . a(1)nnxnb(1)n简记为:A(2)x=b(2)其中a(2)ij = a(1)ij – li1 a(1)1j ,I ,j = 2,3,..,nb(2)I = b(1)I – li1 b(1)1 ,I = 2,3,...,n第二步:如果a(2)22!=0,令li2= a(2)i2/a(2)22, I= 3,……,n依据同样的原理,对矩阵进行化间(省略),依次下去,直到完成!最后,得到上三角方程组:a(1)11a(1)12...a(1)1nx1b(1)1a(1)22 ...a(1)2nx2b(1)2 .......=.. .a(n-1)n-1nxn-1b(n-1)n-1. . . a(n)nnxnb(n)n简记为:A(n)x=b(n)最后从方程组的最后一个方程进行回代求解为:n = b(n) / a(n)nni = ( b(k)k - a(k)kjxj ) / a(k)kk以上为高斯消去法的基本过程。
Guass列选主元消去法和三角分解法
Guass列选主元消去法和三⾓分解法 最近数值计算学了Guass列主消元法和三⾓分解法解线性⽅程组,具体原理如下:1、Guass列选主元消去法对于AX =B1)、消元过程:将(A|B)进⾏变换为,其中是上三⾓矩阵。
即:k从1到n-1a、列选主元选取第k列中绝对值最⼤元素作为主元。
b、换⾏c、归⼀化d、消元2)、回代过程:由解出。
2、三⾓分解法(Doolittle分解)将A分解为如下形式由矩阵乘法原理a、计算U的第⼀⾏,再计算L的第⼀列b、设已求出U的1⾄r-1⾏,L的1⾄r-1列。
先计算U的第r⾏,再计算L的第r列。
a)计算U的r⾏b)计算L的r列C#代码: 代码说明:Guass列主消元法部分将计算出来的根仍然储存在增⼴矩阵的最后⼀列,⽽Doolittle分解,将分解后的结果也储存⾄原来的数组中,这样可以节约空间。
using System;using System.Windows.Forms;namespace Test{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Cannel_Button_Click(object sender, EventArgs e){this.textBox1.Clear();this.textBox2.Clear();this.textBox3.Clear();boBox1.SelectedIndex = -1;}public double[,] GetNum(string str, int n){string[] strnum = str.Split(' ');double[,] a = new double[n, n + 1];int k = 0;for (int i = 0; i < n; i++){for (int j = 0; j < strnum.Length / n; j++){a[i, j] = double.Parse((strnum[k]).ToString());k++;}}return a;}public void Gauss(double[,] a, int n){int i, j;SelectColE(a, n);for (i = n - 1; i >= 0; i--){for (j = i + 1; j < n; j++)a[i, n] -= a[i, j] * a[j, n];a[i, n] /= a[i, i];}}//选择列主元并进⾏消元public void SelectColE(double[,] a, int n){int i, j, k, maxRowE;double temp; //⽤于记录消元时的因数for (j = 0; j < n; j++){maxRowE = j;for (i = j; i < n; i++)if (System.Math.Abs(a[i, j]) > System.Math.Abs(a[maxRowE, j]))maxRowE = i;if (maxRowE != j)swapRow(a, j, maxRowE, n); //与最⼤主元所在⾏交换//消元for (i = j + 1; i < n; i++){temp = a[i, j] / a[j, j];for (k = j; k < n + 1; k++)a[i, k] -= a[j, k] * temp;}}return;}public void swapRow(double[,] a, int m, int maxRowE, int n){int k;double temp;for (k = m; k < n + 1; k++){temp = a[m, k];a[m, k] = a[maxRowE, k];a[maxRowE, k] = temp;}}public void Doolittle(double[,] a, int n){for (int i = 0; i < n; i++){if (i == 0){for (int j = i + 1; j < n; j++)a[j, 0] = a[j, 0] / a[0, 0];}else{double temp = 0, s = 0;for (int j = i; j < n; j++){for (int k = 0; k < i; k++){temp = temp + a[i, k] * a[k, j];}a[i, j] = a[i, j] - temp;}for (int j = i + 1; j < n; j++){for (int k = 0; k < i; k++){s = s + a[j, k] * a[k, i];}a[j, i] = (a[j, i] - s) / a[i, i];}}}}private void Exit_Button_Click(object sender, EventArgs e){this.Close();}private void Confirm_Button_Click(object sender, EventArgs e){if (this.textBox2.Text.Trim().ToString().Length == 0){this.textBox2.Text = this.textBox1.Text.Trim();}else{this.textBox2.Text = this.textBox2.Text + "\r\n" + this.textBox1.Text.Trim();}this.textBox1.Clear();}private void Calculate_Button_Click(object sender, EventArgs e){string str = this.textBox2.Text.Trim().ToString();string myString = str.Replace("\n", " ").Replace("\r", string.Empty);double[,] a = new double[this.textBox2.Lines.GetUpperBound(0) + 1, this.textBox2.Lines.GetUpperBound(0) + 2];a = GetNum(myString, this.textBox2.Lines.GetUpperBound(0) + 1);if (boBox1.Text == "Guass列主消元法"){Gauss(a, this.textBox2.Lines.GetUpperBound(0) + 1);for (int i = 0; i < this.textBox2.Lines.GetUpperBound(0) + 1; i++){this.textBox3.Text = this.textBox3.Text + "\r\nX" + (i + 1) + "=" + a[i, this.textBox2.Lines.GetUpperBound(0) + 1]; }}else if (boBox1.Text == "Doolittle三⾓分解法"){this.textBox3.Enabled = true;Doolittle(a, this.textBox2.Lines.GetUpperBound(0) + 1);bel3.Text = "分解后的结果:";this.textBox3.Clear();this.textBox3.Text += "L矩阵:\r\n";for (int i = 0; i < this.textBox2.Lines.GetUpperBound(0) + 1; i++) {for (int j = 0; j < this.textBox2.Lines.GetUpperBound(0) + 1; j++) {if (j < i){this.textBox3.Text += a[i, j].ToString() + "\t";}else if (i == j){this.textBox3.Text += "1\t";}else{this.textBox3.Text += "0\t";}}this.textBox3.Text += "\r\n";}this.textBox3.Text += "\r\nU矩阵:\r\n";for (int i = 0; i < this.textBox2.Lines.GetUpperBound(0) + 1; i++) {for (int j = 0; j < this.textBox2.Lines.GetUpperBound(0) + 1; j++) {if (j >= i){this.textBox3.Text += a[i, j].ToString() + "\t";}else{this.textBox3.Text += "0\t";}}this.textBox3.Text += "\r\n";}}}private void textBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Enter){if (this.textBox1.Text.Trim().ToString().Length == 0){Calculate_Button_Click(sender, e);}else{Confirm_Button_Click(sender, e);}}}private void button1_Click(object sender, EventArgs e){this.textBox2.Enabled = true;}}} 运⾏截图: ⾄此完毕。
C++ 数学与算法系列之高斯消元法求解线性方程组
C++ 数学与算法系列之高斯消元法求解线性方程组1. 前言什么是消元法?消元法是指将多个方程式组成的方程组中的若干个变量通过有限次地变换,消去方程式中的变量,通过简化方程式,从而获取结果的一种解题方法。
消元法主要有代入消元法、加减消元法、整体消元法、换元消元法、构造消元法、因式分解消元法、常数消元法、利用比例性质消元法等。
对方程式消元时,是基于如下的初等行变换规则:•改变方程组中方程式的顺序,或者说无论先求解方程组中哪一个方程式,不影响方程组的解。
•对一个方程式中的所有系数乘以或除以某一个非零数,不影响方程组的解。
•方程式之间可以倍乘后相加或相减,不影响解。
其中最常用的为代入消元法和加减消元法,简要介绍一下。
代入消元法如求解2x+3y=10和x+y=4; 2个方程式中的x ,y变量时。
可以把第2个方程式变换成x=4-y。
然后代入到第1个方程中,2(4-y)+3y=10。
可求解出y=2,x=2。
加减消元法还是求解如上的方程组。
可以把第2个方程式乘以2后再去减第1个方程式,或者说让第1个方程式减去第2个方程式乘以2。
2x+3y-2x-2y=10-8。
可以求解y=2。
本文主要和大家聊聊高斯消元法,高斯(Gauss)消元法也称为简单消元法,是求解一般线性方程组的经典算法。
2. 高斯消元法在理解高斯消元化之前,先理解几个基本概念:什么是增广矩阵?增广矩阵是线性代数中的概念,如下线性方程组:使用每个方程式的系数构建的矩阵,称为系数矩阵,表示为:用方程式的系数和结果构建的矩阵称为方程组的增广矩阵。
如下图所示:当方程组中的每一个方程的结果都为0时, 即b1=b2=b3=b4……bm=0,称这样的方程组为齐次线性方程组。
2.1 高斯消元法的思想高斯消元的基本思想:•对于一个有n个变量、有n个方程式的方程组。
•把方程组中除了第1个方程式外的其它方程式中的x1消去,同理,再把除了第2个方程式以下的方程组中其它方程式中的x2消去,依次类推,直到最后1个方程式中只留下xn。
gauss列主元素消去法matlab
高斯列主元素消去法是一种解线性方程组的常用方法,特别在数值分析和线性代数中应用广泛。
在Matlab中,我们可以使用该方法来解决大规模的线性方程组,包括矩阵的求解和矩阵的反转。
一、高斯列主元素消去法的基本原理高斯列主元素消去法是一种基于矩阵消元的方法,它通过一系列的矩阵变换将原始的线性方程组转化为上三角形式,然后再进行回代求解。
这个方法的核心就是通过矩阵的变换来简化原始的线性方程组,使得求解过程更加简单高效。
在Matlab中,我们可以利用矩阵运算和函数来实现高斯列主元素消去法,如`lu`分解函数和`\"`运算符等。
通过这些工具,我们能够快速地求解各种规模的线性方程组并得到准确的结果。
二、高斯列主元素消去法在Matlab中的实现在Matlab中,我们可以通过调用`lu`函数来实现高斯列主元素消去法。
该函数返回一个上三角矩阵U和一个置换矩阵P,使得PA=LU。
通过对U进行回代求解,我们可以得到线性方程组的解。
除了`lu`函数之外,Matlab还提供了一些其他的函数和工具来帮助我们实现高斯列主元素消去法,比如`\"`运算符和`inv`函数等。
通过这些工具的组合使用,我们能够更加灵活地进行线性方程组的求解,并且可以方便地处理特殊情况和边界条件。
三、高斯列主元素消去法的应用与局限性高斯列主元素消去法在实际应用中具有广泛的适用性,特别是对于大规模的线性方程组或者稀疏矩阵的求解。
通过Matlab中的工具和函数,我们可以快速地求解各种规模的线性方程组,并得到高精度的数值解。
然而,高斯列主元素消去法也存在一些局限性,比如对于奇异矩阵或者接近奇异矩阵的情况时,该方法的求解精度可能会下降。
在实际应用中,我们需要结合具体的问题和矩阵特性来选择合适的求解方法,以确保得到准确的结果。
四、个人观点和总结作为一种经典的线性方程组求解方法,高斯列主元素消去法在Matlab 中具有较好的实现和应用效果。
通过对其原理和实现细节的深入理解,我们能够更加灵活地应用该方法,并且能够更好地理解其适用性和局限性。
高斯顺序gauss消去法
现代数值计算方法 matlab版程序function x=magauss2(A,b,flag)A=[1 1 1 1;-1 2 -3 1;3 -3 6 -2;-4 5 2 -3];b=[10 -2 7 0]';if nargin<3,flag=0;endn=length(b);for k=1:n-1[ap,p]=max(abs(A(k:n,k)));p=p+k-1;if p>kt=A(k,:);A(k,:)=A(p,:);A(p,:)=t;t=b(k);b(k)=b(p);b(p)=t;endm=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n); b(k+1:n)=b(k+1:n)-m*b(k);A(k+1:n,k)=zeros(n-k,1);if flag~=0,Ab=[A,b], endend%huidaix=zeros(n,1);x(n)=b(n)/A(n,n);for k=n-1:-1:1x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);end>> x=magauss2(A,b,1)Ab =-4.0000 5.0000 2.0000 -3.0000 00 0.7500 -3.5000 1.7500 -2.00000 0.7500 7.5000 -4.2500 7.00000 2.2500 1.5000 0.2500 10.0000Ab =-4.0000 5.0000 2.0000 -3.0000 00 2.2500 1.5000 0.2500 10.00000 0 7.0000 -4.3333 3.66670 0 -4.0000 1.6667 -5.3333Ab =-4.0000 5.0000 2.0000 -3.0000 00 2.2500 1.5000 0.2500 10.00000 0 7.0000 -4.3333 3.66670 0 0 -0.8095 -3.2381x =1.00002.00003.0000> x=magauss(A,b,2)function x=magauss(A,b,flag)A=[1 1 1 1;-1 2 -3 1;3 -3 6 -2;-4 5 2 -3];b=[10 -2 7 0]';if nargin<3,flag=0;endn=length(b);for k=1:n-1m=A(k+1:n,k)/A(k,k);A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n); b(k+1:n)=b(k+1:n)-m*b(k);A(k+1:n,k)=zeros(n-k,1);if flag~=0,Ab=[A,b],endend%huidaix=zeros(n,1);x(n)=b(n)/A(n,n);for k=n-1:-1:1x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);endAb =1 1 1 1 100 3 -2 2 80 -6 3 -5 -230 9 6 1 40Ab =1 1 1 1 100 3 -2 2 80 0 -1 -1 -70 0 12 -5 16Ab =1 1 1 1 100 3 -2 2 80 0 -1 -1 -70 0 0 -17 -68x =123function x=machase(a,b,c,d)clear;clc;close;a=ones(50,1);b=4*ones(50,1);c=ones(50,1);d=6*ones(50,1);d(1)=5;d(50)=5;n=length(a);for k=2:nb(k)=b(k)-a(k)/b(k-1)*c(k-1);d(k)=d(k)-a(k)/b(k-1)*d(k-1);endx(n)=d(n)/b(n);for k=n-1:-1:1x(k)=(d(k)-c(k)*x(k+1))/b(k);endfunction [x,l,u]=malu(A,b)clear;A=[2 -1 4 -3 1;-1 1 2 1 3;4 2 3 3 -1;-3 1 3 2 4;1 3 -1 4 4];b=[11 14 4 16 18]';n=length(b);u=zeros(n,n);l=eye(n,n);u(1,:)=A(1,:);l(2:n,1)=A(2:n,1)/u(1,1);for k=2:nu(k,k:n)=A(k,k:n)-l(k,1:k-1)*u(1:k-1,k:n);l(k+1:n,k)=(A(k+1:n,k)-l(k+1:n,1:k-1)*u(1:k-1,k))/u(k,k); endy=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);end[x,l,u]=malu(A,b)x =1.00002.00001.0000-1.00004.0000l =1.0000 0 0 0 0-0.5000 1.0000 0 0 02.0000 8.0000 1.0000 0 0-1.5000 -1.0000 -0.3514 1.0000 00.5000 7.0000 0.8378 -1.2069 1.0000u =2.0000 -1.0000 4.0000 -3.0000 1.00000 0.5000 4.0000 -0.5000 3.50000 0 -37.0000 13.0000 -31.00000 0 0 1.5676 -1.89190 0 0 0 2.6897 function [x ,l,d]=machol(A,b)n=length(b);d=zeros(1,n);l=eye(n,n);d(1)=A(1,1);l(2:n,1)=A(2:n,1)/d(1);d(2)=A(2,2)-l(2,1)*l(2,1)*d(1);for i=3:nfor j=2:(i-1)s=0;for k=1:(j-1)s=s+d(k)*l(i,k)*l(j,k);endl(i,j)=(A(i,j)-s)/d(j);ends=0;for j=1:(i-1)s=s+d(j)*l(i,j)*l(i,j);endd(i)=A(i,i)-s;endy=zeros(n,1);y(1)=b(1);for i=2:ny(i)=b(i)-l(i,1:i-1)*y(1:i-1);endfor i=1:nz(i)=y(i)/d(i);endll=l';x=zeros(n,1);x(n)=z(n);for i=n-1:-1:1x(i)=z(i)-ll(i,i+1:n)*x(i+1:n);endx=x';[x ,l,d]=machol(A,b)1.00002.0000 1.0000 -1.0000 4.0000l =1.0000 0 0 0 0-0.5000 1.0000 0 0 02.0000 8.0000 1.0000 0 0-1.5000 -1.0000 -0.3514 1.0000 00.5000 7.0000 0.8378 -1.2069 1.0000d =2.0000 0.5000 -37.0000 1.5676 2.6897曲线拟合function p=mafit(x,y,m)a=zeros(m+1,m+1);for i=0:mfor j=0:mA(i+1,j+1)=sum(x.^(i+j));endb(i+1)=sum(x.^i.*y);enda=A\b';p=fliplr(a');复化梯形公式function s=matrap(fun,a,b,n)h=(b-a)/n;s=0;for k=1:n-1x=a+h*k;s=s+feval(fun,x);ends=h/2*(feval(fun,a)+feval(fun,b)+2*s);format longfun=inline('4./(1+x.^2)');matrap(fun,0,1,10)3.141592652969785龙贝格求积公式function s=maromb(fun,a,b,tol)if nargin<4 tol=1e-4;endh=b-a;i=1;j=1;T(1,1)=h*(feval(fun,a)+feval(fun,b))/2;T(i+1,j)=T(i,j)/2+sum(feval(fun,a+h/2:h:b-h/2))*h/2; T(i+1,j+1)=(4^j*T(i+1,j)-T(i,j))/(4^j-1);while abs(T(i+1,j+1)-T(i,j))>toli=i+1;h=h/2;T(i+1,1)=T(i,1)/2+sum(feval(fun,a+h/2:h:b-h/2))*h/2;for j=1:iT(i+1,j+1)=(4^j*T(i+1,j)-T(i,j))/(4^j-1);endendTs=T(i+1,j+1);format longfun=inline('4./(1+x.^2)');s=maromb(fun,0,1,1e-6)T =Columns 1 through 33.000000000000000 0 03.100000000000000 3.133333333333333 03.131176470588235 3.141568627450980 3.1421176470588233.138988494491089 3.141592502458707 3.1415940941258883.140941612041389 3.141592********* 3.1415926611425633.141429893174975 3.141592653552837 3.141592653708038 Columns 4 through 60 0 00 0 00 0 03.141585783761874 0 03.141592638396796 3.141592665277717 03.141592653590029 3.141592653649611 3.141592653638244s =3.141592653638244Euler解常微分方程的欧拉方法x=0:0.1:0.5;y=zeros(6,1);y1=zeros(6,1);h=.1;for k=1:5y(k+1)=(1-h)*y(k)+h*x(k);endx,y=y'for k=1:5y1(k+1)=1/(1+h)*(y1(k)+h*x(k+1));endy1=y1'y2=exp(-x)+x-1;y2x =0 0.1000 0.2000 0.3000 0.4000 0.5000 y =0 0 0.0100 0.0290 0.0561 0.0905 y1 =0 0.0091 0.0264 0.0513 0.0830 0.1209 y2 =0 0.0048 0.0187 0.0408 0.0703 0.1065 改进的欧拉法function [x,y]=maeuler(dyfun,xspan,y0,h)dyfun=inline('x+y');h=.1;xspan=[0 .5];y0=1;x=xspan(1):h:xspan(2);y(1)=y0;for n=1:(length(x)-1)k1=feval(dyfun,x(n),y(n));y(n+1)=y(n)+h*k1;k2=feval(dyfun,x(n+1),y(n+1));y(n+1)=y(n)+h*(k1+k2)/2;end%x=x';y=y';[x;y]dyfun=inline('x+y');h=.1;xspan=[0 .5];y0=1;[x,y]=maeuler(dyfun,xspan,y0,h);y1=2*exp(x)-x-1wu=y1-yans =0 0.1000 0.2000 0.3000 0.4000 0.50001.0000 1.1100 1.2421 1.3985 1.5818 1.7949 y1 =1.0000 1.1103 1.2428 1.3997 1.5836 1.7974 wu =0 0.0003 0.0008 0.0013 0.0018 0.0025function [x,y]=marunge4(dyfun,xspan,y0,h)dyfun=inline('y-2*x./y');y0=1;;h=.2;xspan=[0,1];y(1)=y0;x=xspan(1):h:xspan(2);for n=1:length(x)-1k1=feval(dyfun,x(n),y(n));k2=feval(dyfun,x(n)+h/2,y(n)+h/2*k1);k3=feval(dyfun,x(n)+h/2,y(n)+h/2*k2);k4=feval(dyfun,x(n+1),y(n)+h*k3);y(n+1)=y(n)+h/6*(k1+2*k2+2*k3+k4);endclc[x;y]y1=sqrt(1+2*x)wu=y1-yfunction [x,y]=marunge4(dyfun,xspan,y0,h)%dyfun=inline('y-2*x./y');y0=1;;h=.2;xspan=[0,1];y(1)=y0;x=xspan(1):h:xspan(2);for n=1:length(x)-1k1=feval(dyfun,x(n),y(n));k2=feval(dyfun,x(n)+h/2,y(n)+h/2*k1);k3=feval(dyfun,x(n)+h/2,y(n)+h/2*k2);k4=feval(dyfun,x(n+1),y(n)+h*k3);y(n+1)=y(n)+h/6*(k1+2*k2+2*k3+k4);endclc[x;y]y1=2*exp(x)-x-1wu=y1-ydyfun=inline('x+y');[x,y]=marunge4(dyfun,[0,0.5],1,.1);function [x,y]=maadams4(dyfun,xspan,y0,h)x=xspan(1):h:xspan(2);[xx,yy]=marunge4(dyfun,[x(1),x(4)],y0,h);y(1)=yy(1);y(2)=yy(2);y(3)=yy(3);y(4)=yy(4);for n=4:(length(x)-1)p=y(n)+h/24*(55*feval(dyfun,x(n),y(n))-59*feval(dyfun,x(n-1),y(n-1))... +37*feval(dyfun,x(n-2),y(n-2))-9*feval(dyfun,x(n-3),y(n-3)));y(n+1)=y(n)+h/24*(feval(dyfun,x(n-2),y(n-2))-5*feval(dyfun,x(n-1),...y(n-1))...+19*feval(dyfun,x(n),y(n))+9*feval(dyfun,x(n+1),p));endx;y;clc,clear;dyfun=inline('y-2*x./y');y0=1;h=.1;xspan=[0,1]; [x,y]=maadams4(dyfun,xspan,y0,h);y1=sqrt(1+2*x);%y1=2*exp(x)-x-1wu=y1-y;[x',y',y1',wu']方程组的4阶runge kutta法function [x,y]=marunge4s(dyfun,xspan,y0,h)x=xspan(1):h:xspan(2);y=zeros(length(y0),length(x));y(:,1)=y0(:);for n=1:length(x)-1k1=feval(dyfun,x(n),y(:,n));k2=feval(dyfun,x(n)+h/2,y(:,n)+h/2*k1);k3=feval(dyfun,x(n)+h/2,y(:,n)+h/2*k2);k4=feval(dyfun,x(n+1),y(:,n)+k3*h);y(:,n+1)=y(:,n)+h/6*(k1+2*k2+2*k3+k4);endx=x';y=y';function f=dyfun(t,y)f(1)=-.01*y(1)-99.99*y(2);f(2)=-100*y(2);f=f(:);[x,y]=marunge4s(@dyfun,[0 60],[1 2],0.02);plot(x,y);axis([-2,80,-0.5,2]);text(20,0.4,'y(x)');text(50,0.1,'z(x)')function f=dyfun(t,y)f(1)=y(2);f(2)=5*(1-y(1)^2)*y(2)-y(1);f=f(:);[x,y]=marunge4s(@dyfun,[0 60],[1 2],0.02);plot(x,y);axis([-2,80,-6,6]);text(20,0.4,'y(x)');text(50,0.1,'z(x)')function [x,y]=marunge4s(dyfun,xspan,y0,h)x=xspan(1):h:xspan(2);y=zeros(length(y0),length(x));y(:,1)=y0(:);for n=1:length(x)-1k1=feval(dyfun,x(n),y(:,n));k2=feval(dyfun,x(n)+h/2,y(:,n)+h/2*k1);k3=feval(dyfun,x(n)+h/2,y(:,n)+h/2*k2);k4=feval(dyfun,x(n+1),y(:,n)+k3*h);y(:,n+1)=y(:,n)+h/6*(k1+2*k2+2*k3+k4); endx=x';y=y';[x,y]=marunge4s(@dyfun1,[1,1.5],[1,1],.1); y1=1./(x-2);[x,y(:,1),y1]function f=dyfun1(t,y)f(1)=y(2);f(2)=2*y(1)^3;f=f(:);function masearch(fun,a,b,h)n=(b-a)/h;x1=zeros(1,n);x2=zeros(1,n);a1=a;b1=a1+h;k=1;while b1<bif feval(fun,a1)*feval(fun,b1)<0x1(k)=a1;x2(k)=b1;elsea1=b1;b1=a1+h; continue;enda1=b1;b1=a1+h;k=k+1;endfor i=1:kif x1(i)-x2(i)~=0[x1(i),x2(i)]endendmasearch(inline('x^3+x^2-3*x-3'),-3,3,0.6) function H=househ(x);n=length(x);I=diag(ones(1,n));sn=sign(x(1));if sn==0 sn=1;endz=x(2:n);if norm(z,inf)==0H=I;return;enda=sn*norm(x,2);u=x;u(1)=u(1)+a;rho=a*(a+x(1));H=I-1/rho*u*u';x=[2,1,-3,4]';%±ØÐëÊÇÁÐÏòÁ¿H=househ(x);H*xfunction A=hessen(A)[n,n]=size(A);for k=1:n-2x=A(k+1:n,k);H=househ(x);A(k+1:n,1:n)=H*A(k+1:n,1:n);A(1:n,k+1:n)=A(1:n,k+1:n)*H;function [C,D]=newpoly(x,y) %Å£¶Ù²åÖµn=length(x);D=zeros(n);D(:,1)=y';for j=2:n %¼ÆËã²îÉ̾ØÕófor k=j:nD(k,j)=(D(k,j-1)-D(k-1,j-1))/(x(k)-x(k-j+1));endendC=D(n,n);function fi=Lagran1(x,y,xi) %¸ù¾Ý¸ø³öµÄÊý¾ÝÏòÁ¿xºÍy£¬¹¹%ÔìÀ-¸ñÀÊÈÕ²åÖµ¶àÏîʽ£¬²¢¼ÆËãÔÚxi´¦µÄÖµ¡£fi=zeros(size(xi)); % È«ÁãÕónp1=length(y);for i=1:np1z=ones(size(xi)); %È«1Õófor j=1:np1if i~=jz=z.*(xi-x(j))/(x(i)-x(j)); %²åÖµ»ùº¯Êýendendfi=fi+z*y(i);endreturn牛顿插值公式x=[2 2.1 2.2 2.3 2.4]';y=[1.414214 1.449138 1.483240 1.516575 1.549193]';[C,D]=newpoly(x,y)function [C,D]=newpoly(x,y) %Å£¶Ù²åÖµn=length(x);D=zeros(n);D(:,1)=y';for j=2:n %¼ÆËã²îÉ̾ØÕófor k=j:nD(k,j)=(D(k,j-1)-D(k-1,j-1))/(x(k)-x(k-j+1));endendC=D(n,n);for k=(n-1):-1:1 %¹¹Ôì²åÖµ¶àÏîʽC=conv(C,poly(x(k)));m=length(C);C(m)=C(m)+D(k,k);endclear;clc;close all;x=[2,2.1,2.2,2.3,2.4];x=x'fx=sqrt(x)c=fx;n=length(x);disp('差商表');for j=1:n-1%compute the j-th order difference quotient;fori=n:-1:j+1 %f(x_{i-j},x_{i-j+1},...,x_{ i})c(i)=(c(i)-c(i-1))/(x(i)-x(i-j)); end;disp(sprintf('%d阶差商', j));disp(c(j+1:n));end;disp(sprintf('\n\n\n插值点'));xx=2.05disp('-----真实值---------');fxx=sqrt(xx)for n=1:4disp(sprintf('-----%d次多项式插值------',n));pnxx=c(n+1);for j=n:-1:1pnxx=pnxx*(xx-x(j))+c(j);end;disp(sprintf('插值结果:%.15f, 误差:%e', pnxx,fxx-pnxx));endx =2.0000000000000002.1000000000000002.2000000000000002.3000000000000002.400000000000000fx =1.4142135623730951.4491376746189441.4832396974191331.5165750888103101.549193338482967差商表1阶差商0.349241122458488 0.341020228001887 0.333353913911775 0.326182496726568 2阶差商-0.041104472283004 -0.038331570450560 -0.035857085926035 3阶差商0.009243006108147 0.008248281748417 4阶差商-0.002486810899327插值点xx =2.050000000000000 -----真实值--------- fxx =1.431782106327635-----1次多项式插值------插值结果:1.431675618496020, 误差:1.064878e-004-----2次多项式插值------插值结果:1.431778379676727, 误差:3.726651e-006-----3次多项式插值------插值结果:1.431781845804018, 误差:2.605236e-007-----4次多项式插值------插值结果:1.431782078942539, 误差:2.738510e-008clear;clc;close all;x=pi*[1/6 1/4 1/3]';y=sin(x);%x=[2,2.1,2.2,2.3,2.4];%%y=sqrt(x)c=y;n=length(x);disp('差商表');for j=1:n-1%compute the j-th order difference quotient;fori=n:-1:j+1 %f(x_{i-j},x_{i-j+1},...,x_{ i})c(i)=(c(i)-c(i-1))/(x(i)-x(i-j)); end;disp(sprintf('%d阶差商', j));disp(c(j+1:n));end;disp(sprintf('\n\n\n插值点'));%xx=2.05xx=2*pi/9;disp('-----真实值---------');%fxx=sqrt(xx)fxx=sin(xx)for k=1:n-1disp(sprintf('-----%d次多项式插值------',k));pnxx=c(k+1);for j=k:-1:1pnxx=pnxx*(xx-x(j))+c(j);end;disp(sprintf('插值结果:%.15f, 误差:%e', pnxx,fxx-pnxx));end;差商表1阶差商0.7910896313685740.6070244240594342阶差商-0.351538651133809插值点-----真实值---------fxx =0.642787609686539-----1次多项式插值------插值结果:0.638071187457698, 误差:4.716422e-003-----2次多项式插值------插值结果:0.643425427300882, 误差:-6.378176e-004clear allformat longx=[ 0.40 0.55 0.65 0.80 0.90 1.05]; y=[ 0.4075 0.57815 0.69675 0.88811 1.02652 1.2538];[c,d]=newpoly(x,y);polyval(c,0.596)function a=ployfit(x,y,w) %×îС¶þ³ËÄâºÏm=length(w);G=zeros(m);D=zeros(m,1);for i=1:mfor j=1:mG(i,j)=sum(w.*(x.^(i+j-2)));endD(i,1)=sum(w.*y.*(x.^(i-1)));endG=G(1:2,1:2)D=D(1:2)a=G^(-1) *Dclcclearsyms xA=[ 3 2 1 1; 3 2 2-x^2 1;5 1 3 27-x^2 1 3 2];D=det(A)f=factor(D)X=solve(D)A=[ 2 4 -1 4 16;-3 -6 2 -6 -233 6 -4 6 191 2 5 2 19];b=[-2 7 -23 43]';x1=null(A,'r')[R,s]=rref([A,b])[m,n]=size(A);x0=zeros(n,1)r=length(s);x0(s,:)=R(1:r,end);disp('feiqicifangchengzude tejiewei;')x0disp('duiyingqicixianxingfangchengde jichujiexiwei:')x=null(A,'r')clearsyms kA=[1-2*k 3 3 3;3 2-k 3 3 ;3 3 2-k 3;3 3 3 11-k];D=det(A);f=factor(D);kk=solve(f)for i=1:4AA=subs(A,k,kk(i));fprintf('dang k=');disp(kk(i));fprintf('»ù´¡½âϵΪ£º\n');x=null(AA)endA=[ 2 4 -1 4 16;-3 -6 2 -6 -233 6 -4 6 191 2 5 2 19];b=[-2 7 -23 43]';x1=null(A,'r')[R,s]=rref([A,b])[m,n]=size(A);x0=zeros(n,1)r=length(s);x0(s,:)=R(1:r,end);disp('feiqicifangchengzude tejiewei;')x0disp('duiyingqicixianxingfangchengde jichujiexiwei:')x=null(A,'r')a=[4 -1 -2; 2 1 -2; 2 -1 0];[v,d]=eig(a)if 3-rank(a-2*eye(3))==2;disp('nengduijiaohua')elsedisp('bunengduijiaohua')endv =0.727606875108999 -0.577350269189626 0.7436700670072020.485071250072666 -0.577350269189626 0.2373435120854640.485071250072666 -0.577350269189626 0.624998310964470d =2.000000000000000 0 00 1.000000000000001 00 0 2.000000000000000clearclcA=[1 -1 04 -3 01 0 1];[v,d]=eig(A);if 3-rank(A+eye(3))==2;disp('nengduijiaohua')elsedisp('bunengduijiaohua')endclearA=[1 0 0;0 2 2;0 2 2];[v1,d1]=eig(A)[v2,d2]=schur(A)判断矩阵的正定性clearA=input('shuruduichenzhen A:\n')if A-A'~=0disp('shurucuowu')return;endn=length(A);syms kd=det(A-k*eye(n));lambda=solve(d);lambda=eval(lambda);if lambda>0disp('juzhen A weizhengdingjuzheng') elseif lambda>=0disp('juzhen A banzhengdingjuzheng')elseif lambda<0disp('juzhen A fudingjuzheng') elseif lambda<=0disp('juzhen A banfudingjuzheng') elsedisp('juzhen A budingjuzheng') end矩阵分解clear allclcA=[2 2 3;2 3 2;3 2 9][v1,d1]=schur(A)[u2,s2,v2]=svd(A)[l3,u3]=lu(A)[q4,r4]=qr(A)l5=chol(A)clear allclose allclcsyms x1x2A=[1 2; 2 -3];b=[5;-4];u1=rref([A,b]);subplot(2,2,1)ezplot('x1+2*x2=5')hold onezplot('2*x1-3*x2=-4')title('fangchengzu1')grid onu2=rref([1 3 2;3 9 6]);subplot(2,2,2)ezplot('x1+3*x2=2')hold onezplot('3*x1+9*x2=6')title('fangchengzu2')grid onu3=rref([1 -3 5;2 -6 -6]); subplot(2,2,3)ezplot('x1-3*x2=5')hold onezplot('2*x1-6*x2=-6')title('fangchengzu3')grid onu4=rref([2 1 2;1 3 5]); subplot(2,2,4)ezplot('x1-2*x2=3')hold onezplot('2*x1+x2=2')ezplot('x1+3*x2=5')title('fangchengzu4')grid onhold off画出二维向量function drawvec(u)plot([0;u(1)],[0;u(2)]); hold ontheta=acos(u(1)/norm(u)); if (u(2)<0)theta=2*pi-theta;endfill([u(1)-.5*cos(theta+pi/12),u(1),u(1 )-...0.5*cos(theta-pi/12)],[u(2)-.5*sin(thet a+pi/12),...u(2),u(2)-0.5*sin(theta-pi/12)],'black' );hold offclear allclose allu=[1;2];v=[2;-1];w=[8;1];%plot([0;u(1)],[0;u(2)]);u1=2*u;v1=3*v;drawvec(u);hold ondrawvec(u1);hold ondrawvec(v);hold ondrawvec(v1);hold ondrawvec(w);hold onclose allclcclear allA1=[-1 3;2 5];A2=[1 -2; -1 5];A3=[1 2; 2 4];A4=[2 -1; 3 2];[v1,d1]=eig(A1)subplot(221)%eigshow(A1)subplot(222)[v2,d2]=eig(A2)eigshow(A2)subplot(223)[v3,d3]=eig(A3)%eigshow(A3)subplot(224)[v4,d4]=eig(A4)%eigshow(A4)14 刚体运动close allX=[0 4 6 10 8 5 3.5 6.1 6.5 3.2 2 00 14 14 0 0 11 6 6 4.5 4.5 0 01 1 1 1 1 1 1 1 1 1 1 1];M1=[1 0 -300 1 15;0 0 1];Y1=M1*X;plot(X(1,:),X(2,:));hold onaxis equalfill(Y1(1,:),Y1(2,:),'red')grid onR1=[cos(pi/3),-sin(pi/3)0;sin(pi/3),cos(pi/3) 0;0 0 1];Y2=R1*X;fill(Y2(1,:),Y2(2,:),'blue')M3=[1 0 20;0 1 30;0 0 1];l=3*pi/4;R3=[cos(l),-sin(l) 0; sin(l) cos(l) 0; 0 0 1]Y3=R3*X;fill(Y3(1,:),Y3(2,:),'yellow');Y4=M3*R3*X;fill(Y4(1,:),Y4(2,:),'black');clear allclose allclcformat shortN=input('N=:');t_u=input('temperature up:');t_d=input('temperature down:');t_l=input('temperature left:');t_r=input('temperature right:');A=zeros(N*N);b=zeros(N*N,1);for i=1:N*N;A(i,i)=4;endfor i=1:N*Nif i<=N;b(i)=t_u;endif mod(i,N)==0b(i)=b(i)+t_r;endif mod(i,N)==1b(i)=b(i)+t_l;endif i>N*(N-1)b(i)=b(i)+t_d;endif i>NA(i,i-N)=-1;endif mod(i,N)~=1A(i,i-1)=-1;endif mod(i,N)~=0A(i,i+1)=-1;endif i<=N*(N-1)A(i,i+N)=-1;endendu=rref([A,b]);for i=1:Nfor j=1:NB(i,j)=u(N*(i-1)+j,N*N+1);endendT(2:N+1, 2:N+1)=B;T(1,2:N+1)=20;T(2:N+1,1)=10;T(2:N+1,N+2)=30;T([1,N+2],[1,N+2])=NaN;TN=:5temperature up:20temperature down:50temperature left:10temperature right:30T =NaN 20.0000 20.0000 20.0000 20.0000 20.0000 NaN10.0000 16.5652 19.8667 21.8400 23.3415 25.3125 30.000010.0000 16.3958 21.0606 24.1538 26.2121 27.9111 30.000010.0000 17.9583 23.8261 27.5000 29.4426 30.1194 30.000010.0000 21.6087 28.7879 32.5769 33.9394 33.1233 30.000010.0000 29.6875 37.1395 40.0833 40.6140 38.4348 30.0000NaN 0 0 0 0 0 NaNA=[1 5; 4 3 ; 2 -1; 1 ,5] subplot(121);plot(A(:,1),A(:,2))axis equalaxis squaregrid onA=[-3 41 55 1-1 -1-6 ,1-3 4];subplot(122)plot(A(:,1),A(:,2))axis equalaxis square grid on。
数值分析-Gauss消去法
数值分析上机报告1. 考虑方程组⎪⎪⎩⎪⎪⎨⎧-=+++=+++=+++=+++2557.03927.02786.04002.01784.04240.00643.03781.01920.03645.01550.01129.04015.03872..02246.04043.02943.03678.01234.04069.04.3214.3214.3214.321x x x x x x x x x x x x x x x x (1) 用Gauss 消去法解所给方程组(用四位小数计算);(2) 用列主元素消去法解所给方程组并且与(1)比较结果。
1. Matlab 程序>> clearA=input('输入系数矩阵A :');b=input('输入b 向量(按行向量):');B=[A b'];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB ,所以此方程组无解.\n')returnendif RA==RBif RA==nfprintf('请注意:因为RA=RB=%d ,所以此方程组有唯一解.\n',n) X=zeros(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);endend%把方程组系数矩阵A 化为同解的上三角矩阵b=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);end%从xn 至x1逐个求解上三角方程组elsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')returnendenddisp('方程组的解为:');X运行后输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]请注意:因为RA=RB=4,所以此方程组有唯一解.方程组的解为:X =-0.2603-1.73242.3280-0.44712.Matlab程序>> clearA=input('输入系数矩阵A:');b=input('输入b向量(按行向量):');B=[A b'];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.\n')endif RA==RBif RA==nfprintf('请注意:因为RA=RB=%d,所以此方程组有唯一解.\n',n)X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1[Y,j]=max(abs(B(p:n,p))); C=B(p,:);B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;for 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);endend%把方程组系数矩阵A化为同解的上三角矩阵b=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);end%从xn至x1逐个求解上三角方程组elsedisp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')returnendenddisp('方程组的解为:');X运行结果输入系数矩阵A:[0.4096 0.1234 0.3678 0.2943;0.2246,0.3872,0.4015,0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]输入b向量(按行向量):[0.4043 0.1550 0.4240 -0.2667]请注意:因为RA=RB=4,所以此方程组有唯一解.方程组的解为:X =-1.7324 2.3280 -0.4471。
数值计算方法课件-CH2 解线性方程组的直接法—2.1~2.3 Gauss消去法
n-1 步回代过程需作乘除运算总次数为:
n2 n ( n i 1) 2 2 i 1
n
Gauss消去法的乘除运算总次数为:
n3 n n3 2 n O( n 2 ) MD 3 3 3
当 n 很大时,
3 n3 n n MD n 2 3 3 3
( 1) a11 0 0 ( 1) ( 1) a12 a1 n (2) (2) a22 a2 n (2) (2) an a 2 nn ( 1) b1 (2) b2 (2) bn
(k ) 0 时,采取类似的处理措施。 当 akk
§2.3 高斯列主元素消去法
例1.
用Gauss消去法解线性方程组(用3 位十进制浮 点数计算)
0.0001x1 x2 1 x1 x2 2
解:
本方程组的精度较高的解为
x* (0.99989999 ,1.00010001 )T
用Gauss消去法求解(用3位十进制浮点数计算)
在求行乘数时用了很小的数0.0001作除数。
如果在求解时将1,2行交换, 即
1 1 2 A ( A, b) 0.000100 1 1
1 2 1 m21 0.0001 0 1.00 1.00
回代后得到
0.9999 0.9998
根据Cramer(克莱姆)法则, 若 det(A) 0 则方程组 Ax b 有唯一解。
三角形线性方程组解法
上三角形
u11 x1 u12 x2 u1n xn b1 u22 x2 u2 n xn b2 unn xn bn
UX b
gauss消去法求解方程组matlab
高斯消去法是一种用于求解线性方程组的经典方法,它可以通过矩阵的初等变换将方程组化为上三角形式,然后通过回代的方式求解方程组。
在Matlab中,我们可以利用高斯消去法求解方程组,这样可以更加高效地进行数值计算。
下面我们将简要介绍高斯消去法的原理,并通过Matlab代码演示如何使用高斯消去法求解方程组。
一、高斯消去法原理及步骤高斯消去法是一种通过矩阵的初等变换将线性方程组化为上三角形式的方法,其求解过程主要包括以下几个步骤:1. 将系数矩阵增广为增广矩阵;2. 首先通过初等行变换将增广矩阵化为上三角矩阵;3. 然后通过回代的方式求解方程组。
通过这样的步骤,我们可以将原始的线性方程组化简为上三角形式,从而更容易求解方程组。
二、Matlab代码演示在Matlab中,我们可以通过编写代码实现高斯消去法来求解线性方程组。
下面是一个简单的例子代码,用来演示如何在Matlab中使用高斯消去法求解方程组:```matlabfunction x = gauss_elimination(A, b)[n, m] = size(A);if n ~= merror('A must be a square matrix');endAb = [A, b];for k = 1 : n - 1for i = k + 1 : nfactor = Ab(i, k) / Ab(k, k);Ab(i, k : n + 1) = Ab(i, k : n + 1) - factor * Ab(k, k : n + 1); endendx = zeros(n, 1);x(n) = Ab(n, n + 1) / Ab(n, n);for i = n - 1 : -1 : 1x(i) = (Ab(i, n + 1) - Ab(i, i + 1 : n) * x(i + 1 : n)) / Ab(i, i); endend```通过以上的Matlab代码,我们可以实现高斯消去法的求解过程,并得到方程组的解。
第1节 gauss消元法
若系数矩阵A非奇异,即 det (A)≠0 ,则方程组有 惟一解 x =( x1, x2, …, xn )T . 根据 Gramer(克莱姆)法则,求解方程组(5.1)时, 要计算大量的行列式,所需乘法次数大约为
N=(n2-1)n!
当 n 较大时,这个计算量是惊人的。例 如,当 n= 20 时,约需乘法次数为 N=9.7×1020 如果用每秒一亿次的计算机来计算,需要三十万年时 间。可见Gramer法则不是一种实用的方法。 因此,必须构造出适合于计算机使用的线性方程组的求 解方法。
b
( 2) i
b
(1) i
l i 1b
(1) 1
, i 2,3, , n
第二步,设 a22(2)≠ 0 ,将第二列a22(2)以下各元素消成零,
即依次用
li 2
2 a i(2 ) ( 2) a 22
(i=3,4,…,n)
乘以矩阵[A(2),b(2)]的第二行再加到第i行,得到矩阵
这是与原线性方程组(5.1)等价的方程组.
(1 (1 ( ( a11) x1 a12) x 2 a11) x n b11) n (2 ( ( a 22) x 2 a 22 ) x n b22 ) n 对于等价方程组 ( n 1 ) ( n 1 ) ( n 1 ) a n 1n 1 x n 1 a n 1n x n bn 1 (n ( a nn) x n bnn )
(1 a12) (1 a 22) (1 a 32)
(1 a13) (1 a 23) (1 a 33)
( a11) n ( a 21) n ( a 31) n
( a n1) 2
( a n1) 3
JA2-1-高斯(Gauss)消去法
第二章解线性方程组的直接法§2.1 高斯(Gauss)消去法1.1 基本方法Ex用高期消去法解方程组1-1-2.7x18x211x3-3+ +=+ -5x1x23x3-4=x12x23x31+ +=解法1用高斯消元法利用Maple编程求解:restart;with(linalg):Gauss:=proc(A)local k,i,j,l,n;k:=0;i:=0;j:=0; # 此行可不设n:=vectdim(col(A,1)); # 取A的第一列的维数赋给nfor k from 1 to n-1 dofor i from k+1 to n dol[i,k]:=A[i,k]/A[k,k];for j from k to n+1 doA[i,j]:=A[i,j]-l[i,k]*A[k,j];od;od;od;print(A); # 高斯消元结果for k from n by -1 to 1 dofor i from k-1 by -1 to 1 dol[i,k]:=A[i,k]/A[k,k]; # 如果让j从k+1开始,此行可放下一个for循环下一行,如选主元法中 for j from k to n+1 doA[k,j]:=A[k,j];A[i,j]:=A[i,j]-l[i,k]*A[k,j];od;od;od;print(A); # 约当消元结果for k to n doA[k,4]:=A[k,4]/A[k,k];A[k,k]:=1;od;print(A); # 行最简形 end: > >Warning, the protected names norm and trace have been redefined and unprotected> B:=matrix(3,4,[7,8,11,-3,5,1,-3,-4,1,2,3,1]);:= B ⎡⎣⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥7811-351-3-41231 > Gauss(B);⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥7811-30-337-767-13700-6111211 ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥700-210-3370-165700-6111211 ⎡⎣⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥100-30105001-2 法2 利用Maple 的linalg 库中已有的Gauss 消去法或Gauss-Jordan 消去法求解: > eq1:=7*x1+8*x2+11*x3=-3; eq2:=5*x1+x2-3*x3=-4; eq3:=x1+2*x2+3*x3=1;:= eq1 = + + 7x18x211x3-3 := eq2 = + - 5x1x23x3-4 := eq3 = + + x12x23x31> A:=genmatrix({eq1,eq2,eq3},{x1,x2,x3}); # 提系阵> B:=genmatrix({eq1,eq2,eq3},{x1,x2,x3},flag); # 提增广阵:= A ⎡⎣⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥5-311327118 # 所提系阵行与方程位置、甚至未知量量对应可能不对应 := B ⎡⎣⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥5-31-413217118-3# 所提增阵行与方程位置可能不对应 > gausselim(B); # linalg 程序库中提供的高斯(Gauss )消元法⎡⎣⎢⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥⎥5-31-40185959500-1-5 > gaussjord(B); # linalg 程序库中提供的Gauss-Jordan (约当)消元法⎡⎣⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥100-3010-20015 > x:=backsub(%); # 给出解向量(列向量):= x [],,-3-25> evalm(A&*x); # 验解的正确性[],,-41-3法3 用linesolve 求解> linsolve(A,col(B,4)); # 也可用来解矩阵方程[],,-3-25。
高斯(Gauss)消去法
( 1) 如果 a11 0 由于 det(A) 0
则 A 的第一列中至少有一个 元素不为零
如 ai(111) 0, 则将( A(1) , b (1) )的第一行与第 i1行 交换后消元
( 1) a11 0 0 ( 1) ( 1) a12 a1 n (2) (2) a22 a2 n (2) (2) an a 2 nn ( 1) b1 (2) b2 (2) bn
n n n 2 2 n O ( n ) MD 3 3 3
当n很大时
3 n3 n n n2 MD 3 3 3
3
3
四、高斯消去算法 输入: 输出
方程组的解 x1 , x 2 ,, x n或方法失败的信息
A, b的元素aij ,1 i n,1 j n 1 方程组的阶数 n;增广矩阵
对i n 1, n 2,..., 1
n ai ,n 1 aij x j j i 1 置xi
aii
S4 输出x1, x2 ,..., xn ; 停机.
作业: P49 习题1
i , j 2 ,3 , , n
i 2 ,3 , , n
( 1) ( 1) a12 a1 n (2) (2) a22 a2 n (2) (2) an a 2 nn ( 1) b1 (2) b2 (2) bn
( A( 1) , b( 1) )
且
因此, 第k 1步后, ( A(1) , b(1) )将化为
( 1) ( 1) a11 a 12 ( 1) ( 1) (2) (A ,b ) a 22 (k ) (k ) (A ,b ) (k ) aik mik ( k ) i k 1, , n akk
Gauss消去法求解线性方程组
Gauss消去法求解线性方程组
Gauss消去法,又称高斯-约旦消去法,是求解线性方程组的一种常用方法。
其基本思想是通过行变换将线性方程组转化为行最简形式,然后利用回代法求解。
以下是Gauss消去法求解线性方程组的详细步骤:
1. 将线性方程组的系数矩阵和常数向量组成增广矩阵。
2. 从第一行开始,将第一列的元素作为主元,并通过初等行变换将其它行的第一元素消成0。
3. 将第二行的第二个元素作为主元,并通过初等行变换将其它行的第二元素消成0。
4. 以此类推,直到将增广矩阵转化为行最简形式。
5. 利用回代法求解,即从最后一行开始,解出未知数依次代入上面的方程中求解。
其中,初等行变换包括以下三种:
1. 交换矩阵中两行的位置。
表示为 Ri<->Rj。
2. 将矩阵中某一行的每个元素乘以一个非零常数k。
表示为Ri*k。
3. 将矩阵中某一行的每个元素加上另一行对应元素的k倍。
表
示为 Ri+k*Rj。
Gauss消去法是一种较为常用的求解线性方程组的方法,但当系数矩阵存在奇异现象或行列式为0时,此方法无法求解。
此时可以采用LU分解法、SOR迭代法等其他方法进行求解。
21高斯消元法
对j= k+1~n+1(列)令 aij aij cakj
回代过程是解同解的上三角形方程组
a11x1 a12x2
a22 x2
a1,n1 xn1 a1n xn
a2,n1xn1 a2 ,n xn
a x n1,n1 n1 an1,n xn ann xn
素,……,第n-1步消去an-1,n-1下方元素。即第k 步将第k行的适当倍数加于其后各行,或可说是 从k+1~n行减去第k行的适当倍数,使它们的第k 列元素变为零,而其余列元素减去第k行对应列 元素的倍数。
因此,如把增广矩阵 A 变换前后都在计算
机上用同一数组A存储, 则消去过程可写为:
对k=1~n-1(步)做 对i= k+1~n(行)做
求出x2代回第一个方程时,因 10-5x1+2x2=1, 10-5x1’+2x2’=1 两式相减得10-5(x1- x1’)+2(x2- x2’)=0,可见 | x1- x1’ |=200 000| x2- x2’|
~x 表明 x1的误差被放大200 000倍, x1’自然失真。2
列主元消去法
为了避免出现小主元,在每次消元前进行选 主元。即每次消元前先选取所要消元的列中绝对 值最大的元素作为主元,然后再消元。
通常情况下稳定性彼此相差不大,所以一般 情况都只用列主元消去法。
复习题
1、何谓高斯消去法?它与一般消去法有 何不同?怎样计算行列式?
2、计算机上为什么不用克莱姆法与约当 消去法?
3、何谓主元消去法?有何优点?
具体为:
中选~x在主2第元k,步即的在第其k列中的找元出素绝a对kk值, a最k大~x1,1的k ,元素, aankpk,
高斯消去法高斯塞德尔迭代法
数值计算高斯消去法和高斯-塞德尔迭代法摘要虽然已学过加减消元法、代入消元法、矩阵变换法和Cramer 法则等,但是无法满足实际计算需要,故在此讨论在计算机上实现的有效而实用的解法。
线性方程组的解法大致分2类:直接法(高斯消去法)和迭代法(高斯-赛德尔迭代法),在此对着此类算法进行比较分析。
一、算法设计当计算线性方程组如下时,11112211211222221122n n n n n n nn n na x a x a xb a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (1-1)为方便起见,常将线性方程组表示成矩阵形式Ax b=其中1111n n nn a a A a a ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦1n x x x ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦1n b b b ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦并始终假定A 是非奇异的,即方程组的解存在且唯一。
1.1高斯消去法消去法就是按特定顺序进行的矩阵初等变换法,当消元按自然顺序进行时,称为高斯顺序消去法。
一般情况下的高斯顺序消去法的计算机算法如下,现将方程组(1-1)的增广矩阵记作(0)(0)(0)11111(0)(0)(0)11n n n nn nn a a a a a a ++⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦假设经k-1步消元后,增广矩阵化为(0)(0)(0)(0)1112111(1)(1)(1)22221(1)(1)(1)1(1)(1)(1)1nn nn k k k kk knkn k k k nk nnnn a a a a a a a a a a a a a ++---+---+⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦其中()s ij a 的上标表示是由s 步消元得到的植。
第k 步消元:设(1)0k kk a -≠,以第k 行为基础,将以后各行中的(1)k ik a -化为0,为此先计算(1)(1)/k k ik ik kk l a a --=然后以第i 行减去第k 行乘以ik l ,即以()(1)(1)k k k ij ij ik kj a a l a --=-()()1,,11,,j k n i k n =++=+于是得(0)(0)(0)11111(1)(1)(1)(1)11()()()11111()()()11n n k k k k kkkk knkn k k k k k k nk n k k k k nnnnn a a a a a a a a a a a a a +----+++++++++⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦经n-1步消元后,增广矩阵化为(0)(0)(0)11111(1)(1)(1)1(1)(1)1n n k k k kk knkn n n nn nn a a a a a a a a +---+--+⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦自下往上逐步回代即可求得其解(1)(1)1(1)(1)(1)11/()/(1,2,,1)n n n nn nnnk k k k kn kj j kk j k x a a x aax a k n n --+---+=+==-=--∑由行列式的初等变换和矩阵初等变换的关系可知,顺序消元法的每一步系数行列式之值不变,因此原方程组之系数行列式的值为(0)(2)(1)1122n nn a a a - ,可在求解过程中逐步累乘求得。
Gauss全主元消去法
Gaussian elimination with complete pivotingTo keep the Gaussian elimination method smooth operation,We must ensure that the pivot element 0)1(≠-a k kk and a k kk )1(-can not too small in each operation.So the selection of appropriate pivot elements in every step of elimination.,the maximum absolute value or the major elements as the pivot element ,this improved Gaussian elimination method named Gauss pivot element elimination. There have 3 methods to select pivot element,Gaussian elimination with partial pivoting 、scaled partial pivoting 、complete pivoting.Through access to some data,I introduce the Gaussian elimination with complete pivoting briefly.Completepivoting at the k th step searches all the entries ),()1(k j k i a k ij ≥≥-,to find the entry to the largest magnitude.Both row and column interchanges are performed to bring this entry to the pivot position.The specific steps :⎪⎪⎪⎩⎪⎪⎪⎨⎧=+++=+++=++++++a x a x a x a a x a x a x a a x a x a x a n n n nn n n n n n n n n )0(1,)0(2)0(21)0(1)0(1,2)0(22)0(221)0(21)0(1,1)0(12)0(121)0(11,, The k th elimination,find all ak ij )1(-(i=k ,k+1,,n; j=k,k+1 n),thea k )1(-μν is the pivot element.a a k ij k )1()1(max --=μνBoth row and column interchanges are performed to bring this entry to the pivot position.Move a k )1(-μν to (k,k).Until the n-1 step, the original equation into the same equations on triangular solution: ⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧==++=+++=++++-+-+++,,,,)1(1,)1()2(1,3)2(33)2(33)1(1,2)1(23)1(232)1(22)0(1,1)0(13)0(132)0(121)0(11a x a a x a x a a x a x a x a a x a x a x a x a n n n n n nn n n n n n n n n nBackward substitution :Backward substitution is the solution of triangular systems .If 0)1(≠-a n nn ,then⎪⎪⎩⎪⎪⎨⎧--=⎥⎦⎤⎢⎣⎡-==∑+=-----+-.1,,2,,1,11)1()1(1,)1()1(1,)1(, n i n i n i j j i ij i n i i ii i n n n n n n n x a a a x a a x Algorithm :function x=Gauss(A,b)B=[A,b];n=length(A);x=zeros(n,2);for i=1:nx(i,1)=i; %x 第一列数字i 代表x (i )endfor i=1:n-1[m,p]=max(abs(B(i:n,i:n)));%求绝对值最大系数所在行号和列号[l,q]=max(m);if m==0;disp('A 奇异')returnif p(q)+i-1>i %行变换pm=p(q)+i-1;C(i:n+1)=B(i,i:n+1);B(i,i:n+1)=B(pm,i:n+1);B(pm,i:n+1)=C(i:n+1);endif q+i-1>i %列变换q=q+i-1;D(1:n)=B(1:n,q);B(1:n,q)=B(1:n,i);B(1:n,i)=D(1:n);E(1:2)=x(q,:);%调换解的顺序x(q,:)=x(i,:);x(i,:)=E(1:2);endfor k=i+1:n %消元am=B(k,i)/B(i,i);B(k,i:n+1)=B(k,i:n+1)-am*B(i,i:n+1);endendx(n,2)=B(n,n+1)/B(n,n);for i=n-1:-1:1 %回代xx(i+1:n)=x(i+1:n,2);x(i,2)=(B(i,n+1)-B(i,i+1:n)*xx(i+1:n)')/B(i,i);endfor i=1:n-1 % 调换解的顺序[u,r]=min(x(i:n,1));if r+i-1>ir=r+i-1;xf(1:2)=x(i,1:2);x(i,1:2)=x(r,1:2);x(r,1:2)=xf(1:2);endendendFor example P89,Exercises2>> A=[1.19 2.11 -100 1;14.2 -0.122 12.2 -1;0 100 -99.9 1;15.3 0.110 -13.1 -1];b=[1.12;3.44;2.15;4.16]; x=Gauss(A,b)1.0000 0.17682.0000 0.01273.0000 -0.02074.0000 -1.1826。
线性代数 高斯(Gauss)消元法ppt课件
线
2x1 8x2 6x3 6 ③
性
方 程 组
② 2① ③ ①
x1 x2 2 x3 1 3x2 3x3 0 3x2 x3 2
① ② ③
“回代”求解得:
x1 2, x2 1, x3 1.
①② ③ 0.5
③①
2
x1 x1
x2 2x3 1 ① x2 x3 2 ②
线 性
解
(2) 可知方程组有无穷多解, 即对任意的 x2,有
方 程 组
x1 x2
2x2 x2,
7,
x3 2 .
其中 x2 为自由未知量。
即
x1 2 7 x2 k 1 0 ,
( k 任意)
x3 0 2
注意体会求解“结果”的写法及表达方式。
10
§4.2 高斯(Gauss)消元法
x1 4x2 3x3 3 ③
x1 x2 3x2
2x3 3x3
1 0
2x3 2
继续“消元”得:
x1
x2
2 1
x3 1
3
§4.2 高斯(Gauss)消元法
第 启示 四 章
线 性 方 程 组
事实上,从上述对线性方程组的求解过程中可知: 真正参与运算的是线性方程组的系数项和常数项, 而未知量并不需要参与运算。
2
x1 x1
x2 2x3 1 x2 x3 2
x1 4 x2 3 x3 3
① ② ③
② 2① ③ ①
x1 x2 2 x3 1 3x2 3x3 0 3x2 x3 2
① ② ③
2 1 1 2 1 1 2 1 2 8 6 6 1 1 2 1 2 1 1 2 1 4 3 3 1 1 2 1 0 3 3 0 0 3 1 2
研究生数值分析第四版第二章2.1Gauss消去法
2.1 Gauss消去法
一 、三角形方程组的解法 1.下三角形方程组 2.上三角形方程组
a11 x1 a12 x2 a1n xn b1 a22 x2 a2n xn b2 ann xn bn
b1 a11 x1 a x a x b2 21 1 22 2 an1 x1 an 2 x2 ann xn bn
a11(1) (1) a21 (1) ( A b) a31 an1(1)
a11(1) 0 0 0
a12
(1)
a13
(1)
a1n1(1)来自a1n(1)b1
a22 a32 an 2
(1) ( 2) ( 2)
第二章 线性方程组的解法
2.1 Gauss消去法
2.2 直接三角分解法 2.3 矩阵的条件数与病态方程组 2.4 迭代法
第二章 线性方程组的解法
2.1 Gauss消去法
一 、三角形方程组的解法 二、Gauss消去法
2.1 Gauss消去法
一 、三角形方程组的解法 1.下三角形方程组 2.上三角形方程组
求解线性方程组的方法可分为两大类: 直接法和迭代法 直接法(精确法):指在没有舍入误差的情况下经过 有限次运算就能得到精确解。 迭代法(逐次逼近法):从一个初始向量出发,按照一 定的计算格式,构造一个向量的无穷序列,其极限才是 所求问题的精确解,只经过有限次运算得不到精确解。 Cramer(克莱姆)法则是直接方法中的一种,根据 此法则,方程组(2.1)的解为
前代法
x1 b1 / a11
xi (bi aij x j ) / aii ,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(n k )(n k 2)
k 1
全部回代过程需作乘除法的总次数为
n (n i 1) n2 n
i1
22
于是Gauss消去法的乘除法运算总的次数为
MD n3 n2 n n3 O(n2 )
3
33
当n很大时
MD n3 n2 n
3
3
n3
3
四、高斯消去算法
输入:
方程组的阶数 n;增广矩阵 A, b的元素aij ,1 i n,1 j n 1
输出
方程组的解 x1, x 2 ,
,
x
或方法失败的信息
n
步骤
S1 对 k=1,2,…,n-1 做 S11~S12 S11 若akk 0,则输出方法失败的信息 ;停机. S12 对i k 1,..., n
置aik aik / akk ; 对j k 1,..., n 1
置aij aij aik akj.
2-1高斯(Gauss)消去法
一、消元过程
对线性方程组 Ax b 如果 det( A) 0
对其增广矩阵施行行初等变换:
A
(
A,
b)
记
(
A( 1 )
,
b(1)
)
a(1) 11
a(1) 21
a(1) 12
a(1) 22
a(1) n1
a(1) n2
a(1) 1n
a(1) 2n
b1(1) b2(1)
a(1) 1n
a(2) 2n
b1(1) b2( 2 )
a(n) nn
bn( n )
可知
a(i) ii
0
i 1,2, , n
因此, 上三角形方程组 A(n)x b(n) 有唯一解
二、回代过程
由于
a(i) ii
0
i 1,2, , n
所以
xn
bn(n) a(n)
nn
b(i) i
n
a(i ij
b( k 1) i
bi(k )
mik bk(k )
i, j k 1, , n i k 1, , n
当经过k n 1步后, ( A(1), b(1) )将化为
( A(1) , b(1) )
a(1) 11
( A(n) , b(n) )
由于 det( A) 0
a(1) 12
a(2) 22
a(1) 11
(
A(
2
)
,
b
(
2
)
)
0
a(1) 12
a(2) 22
0
a(2) n2
a(1) 1n
a(2) 2n
b1(1) b2( 2 )
a(2) nn
bn( 2
)
如果
a(1) 11
0
由于 det( A) 0
则 A的第一列中至少有一个 元素不为零
如
a(1) i11
0,则将( A(1) ,b(1) )的第一行与第i1行
a(1) nn
bn(1)
假定
a(1) 11
0
定义行乘数
mi1
a(1) i1
a(1) 11
第i行 第1行 mi1 ,则
a(2) ij
a(1) ij
mi1a1(1j)
b(2) i
b(1) i
mi
b(1)
11
i 2,3, , n
i, j 2,3, , n i 2,3, , n
( A(1) , b(1) )
S2 若ann 0,则输出方法失败的信息 ;停机. S3 置xn an,n1 / ann ;
对i n 1, n 2,...1,
n
ai,n1 aij x j
置xi
j i 1
aii
S4 输出x1, x2,..., xn ;停机.
作业:
P49 习题1
mik
a(k ) ik
a(k ) kk
i k 1, , n
第i行 第k行 mik ,则
a(k ) kk
a(k ) nk
a(1) 1n
a(2) 2n
b(1) 1
b(2) 2
a(k ) kn
bk(
k
)
a(k ) nn
bn( k
)
a( k 1) ij
a(k ) ij
mik
a(k kj
)
)
x
j
xi
j i 1
a(i) ii
i n 1, n 2, ,2,1
因此得到线性方程组 Ax b 的解
三、高斯消去法的计算量
作第k步消元时 乘法次数: (n k )(n k 1)次 除法次数: (n k )次
作第k步消元乘除法运算总次数为 (n k)(n k 2)次
完成全部n 1步消元需作乘除法运算总次数为
交换后消元
且
a(1) 11
0
a(1) 12
a(2) 22
a(1) 1n
a(2) 2n
b1(1) b2( 2 )0a(2) n2
a(2) nn
bn( 2
)
因此, 第k 1步后,( A(1) , b(1) )将化为
( A(1) , b(1) )
a(1) 11
a(1) 12
a(2) 22
( A(k ) , b(k ) )