计算方法_全主元消去法_matlab程序
第三章MATLAB线性方程组及矩阵特征值

情形2:m<n(不定方程)
- 0.8000
情形3:m>n(超定方程),多用于曲线拟合。
解线性方程组的一般函数文件如下:
function [x,y]=line_solution(A,b)
[m,n]=size(A);y=[];
if norm(b,1)>0
%非齐次方程组
if rank(A)==rank([A,b]) %方程组相容
for i=1:3
if i~=2, a(i,:)=a(i,:)-a(i,2)*a(2,:); end
end
a
a(3,:)=a(3,:)/a(3,3)
for i=1:3;
if i~=3, a(i,:)=a(i,:)-a(i,3)*a(3,:); end;
end; a A_inv = a(:,4:6) A*A_inv
2in
ai 2
,对调2
r2行.
消元:用a22把ai2消为0 (i 3, 4, , n) :
第2 行
ai 2 a22
第i行,则
aij
a2 j
ai 2 a22
aij (i
3, 4,
, n;j
2, 3,
, n 1)
到此原方程组化为
a11x1 a12 x2 a13 x3
a22 x2 a23 x3
2, 3,
, n;j 1, 2,
, n 1)
到此原方程组化为
a11 x1 a12 x2 a22 x2
ai2 x2
an2 x2
a1n xn a1,n1 a2n xn a2,n1
ain xn ai,n1
ann xn an,n1
(2) 找r2,使 ar2 2
西安交通大学计算方法B大作业

计算方法上机报告姓名:学号:班级:目录题目一------------------------------------------------------------------------------------------ - 4 -1.1题目内容 ---------------------------------------------------------------------------- - 4 -1.2算法思想 ---------------------------------------------------------------------------- - 4 -1.3Matlab源程序----------------------------------------------------------------------- - 5 -1.4计算结果及总结 ------------------------------------------------------------------- - 5 - 题目二------------------------------------------------------------------------------------------ - 7 -2.1题目内容 ---------------------------------------------------------------------------- - 7 -2.2算法思想 ---------------------------------------------------------------------------- - 7 -2.3 Matlab源程序---------------------------------------------------------------------- - 8 -2.4计算结果及总结 ------------------------------------------------------------------- - 9 - 题目三----------------------------------------------------------------------------------------- - 11 -3.1题目内容 --------------------------------------------------------------------------- - 11 -3.2算法思想 --------------------------------------------------------------------------- - 11 -3.3Matlab源程序---------------------------------------------------------------------- - 13 -3.4计算结果及总结 ------------------------------------------------------------------ - 14 - 题目四----------------------------------------------------------------------------------------- - 15 -4.1题目内容 --------------------------------------------------------------------------- - 15 -4.2算法思想 --------------------------------------------------------------------------- - 15 -4.3Matlab源程序---------------------------------------------------------------------- - 15 -4.4计算结果及总结 ------------------------------------------------------------------ - 16 - 题目五----------------------------------------------------------------------------------------- - 18 -5.1题目内容 --------------------------------------------------------------------------- - 18 -5.2算法思想 --------------------------------------------------------------------------- - 18 -5.3 Matlab源程序--------------------------------------------------------------------- - 18 -5.3.1非压缩带状对角方程组------------------------------------------------- - 18 -5.3.2压缩带状对角方程组---------------------------------------------------- - 20 -5.4实验结果及分析 ------------------------------------------------------------------ - 22 -5.4.1Matlab运行结果 ---------------------------------------------------------- - 22 -5.4.2总结分析------------------------------------------------------------------- - 24 -5.5本专业算例 ------------------------------------------------------------------------ - 24 - 学习感悟-------------------------------------------------------------------------------------- - 27 -题目一1.1题目内容计算以下和式:0142111681848586n n S n n n n ∞=⎛⎫=--- ⎪++++⎝⎭∑,要求: (1)若保留11个有效数字,给出计算结果,并评价计算的算法; (2)若要保留30个有效数字,则又将如何进行计算。
使用全选主元高斯消去法求解线性方程组程序

使用全选主元高斯消去法求解线性方程组程序使用全选主元高斯消去法求解线性方程组程序' 参数n - Integer型变量,线性方程组的阶数' dblA - Double型n x n 二维数组,线性方程组的系数矩阵' dblB - Double型长度为n 的一维数组,线性方程组的常数向量,返回方程组的解向量' 返回值:Boolean型,求解成功为True,无解或求解失败为False'====函数代码如下====Public Function LEGauss(n As Integer, dblA() As Double, dblB() As Double) As Boolean ' 局部变量Dim i As Integer, j As Integer, k As IntegerDim nIs As IntegerReDim nJs(n) As IntegerDim d As Double, t As Double' 开始求解For k = 1 To n - 1d = 0#' 归一For i = k To nFor j = k To nt = Abs(dblA(i, j))If t > d Thend = tnJs(k) = jnIs = iEnd IfNext jNext i' 无解,返回If d + 1# = 1# Then LEGauss = FalseExit FunctionEnd If' 消元If nJs(k) <> k ThenFor i = 1 To nt = dblA(i, k)dblA(i, k) = dblA(i, nJs(k)) dblA(i, nJs(k)) = tNext iEnd IfIf nIs <> k ThenFor j = k To nt = dblA(k, j)dblA(k, j) = dblA(nIs, j) dblA(nIs, j) = tNext jt = dblB(k)dblB(k) = dblB(nIs)dblB(nIs) = tEnd Ifd = dblA(k, k)For j = k + 1 To ndblA(k, j) = dblA(k, j) / d Next jdblB(k) = dblB(k) / d For i = k + 1 To nFor j = k + 1 To ndblA(i, j) = dblA(i, j) - dblA(i, k) * dblA(k, j) Next j dblB(i) = dblB(i) - dblA(i, k) * dblB(k)Next iNext kd = dblA(n, n)' 无解,返回If Abs(d) + 1# = 1# ThenLEGauss = FalseExit FunctionEnd If' 回代dblB(n) = dblB(n) / dFor i = n - 1 To 1 Step -1t = 0#For j = i + 1 To nt = t + dblA(i, j) * dblB(j)Next jdblB(i) = dblB(i) - tNext i' 调整解的次序nJs(n) = nFor k = n To 1 Step -1If nJs(k) <> k Thent = dblB(k)dblB(k) = dblB(nJs(k))dblB(nJs(k)) = tEnd IfNext k' 求解成功LEGauss = TrueEnd Function。
gauss列主元素消去法matlab

高斯列主元素消去法是一种解线性方程组的常用方法,特别在数值分析和线性代数中应用广泛。
在Matlab中,我们可以使用该方法来解决大规模的线性方程组,包括矩阵的求解和矩阵的反转。
一、高斯列主元素消去法的基本原理高斯列主元素消去法是一种基于矩阵消元的方法,它通过一系列的矩阵变换将原始的线性方程组转化为上三角形式,然后再进行回代求解。
这个方法的核心就是通过矩阵的变换来简化原始的线性方程组,使得求解过程更加简单高效。
在Matlab中,我们可以利用矩阵运算和函数来实现高斯列主元素消去法,如`lu`分解函数和`\"`运算符等。
通过这些工具,我们能够快速地求解各种规模的线性方程组并得到准确的结果。
二、高斯列主元素消去法在Matlab中的实现在Matlab中,我们可以通过调用`lu`函数来实现高斯列主元素消去法。
该函数返回一个上三角矩阵U和一个置换矩阵P,使得PA=LU。
通过对U进行回代求解,我们可以得到线性方程组的解。
除了`lu`函数之外,Matlab还提供了一些其他的函数和工具来帮助我们实现高斯列主元素消去法,比如`\"`运算符和`inv`函数等。
通过这些工具的组合使用,我们能够更加灵活地进行线性方程组的求解,并且可以方便地处理特殊情况和边界条件。
三、高斯列主元素消去法的应用与局限性高斯列主元素消去法在实际应用中具有广泛的适用性,特别是对于大规模的线性方程组或者稀疏矩阵的求解。
通过Matlab中的工具和函数,我们可以快速地求解各种规模的线性方程组,并得到高精度的数值解。
然而,高斯列主元素消去法也存在一些局限性,比如对于奇异矩阵或者接近奇异矩阵的情况时,该方法的求解精度可能会下降。
在实际应用中,我们需要结合具体的问题和矩阵特性来选择合适的求解方法,以确保得到准确的结果。
四、个人观点和总结作为一种经典的线性方程组求解方法,高斯列主元素消去法在Matlab 中具有较好的实现和应用效果。
通过对其原理和实现细节的深入理解,我们能够更加灵活地应用该方法,并且能够更好地理解其适用性和局限性。
三种消元法程序——数学软件实验报告

北京大学数学软件实验任务书课程名称数学软件实验班级数学0901 学号0912020112 姓名****实验课题线性方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验目的熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成实验内容线性方程组高斯消去法线性方程组高斯列主元消去法线性方程组高斯全主元消去法成绩100 教师****实验一 高斯消去法求解线性方程组【实验名称】高斯消去法求解线性方程组【实验目的】进一步熟悉理解Guass 消元法解法思路,提高matlab 编程能力。
【实验要求】已知线性方程矩阵,利用软件求解线性方程组的解。
【实验原理】消元过程:设0)0(11≠a ,令乘数)0(11)0(11/a a m i i -=,完成以下步骤: 首先,进行消元操作(消去第i 个方程组的i x )1i m ×第1个方程+第i 个方程(i=2,3,.....n ),则第i 个方程变为1)1(2)1(2...i n in i b x a x a =++;这样消去第2,3,... ,n 个方程的变元i x 后。
原线性方程组变为:⎪⎪⎪⎩⎪⎪⎪⎨⎧=++=++=++)1()1(2)1(2)1(2)1(22)1(22)0(1)0(11)0(11... . .... ...n n nn n n n n n b x a x a b x a x a b x a x a这样就完成了第一步消元。
回代过程:在最后的一方程中解出n x ,得:)1()1(/--=n nnn n n a b x ;再将n x 的值代入倒数第二个方程,解出1-n x ,依次往上反推,即可求出方程组的解,其通项为:3,...,1-n 2,-n k /)()1(1)1()1(=-=-+=--∑k kk nk j j k kjk kk a x abx【程序设计】function maintest1 clc clear allnum=input('please input the order n=') A=zeros(num,num); for i=1:num for j=1:numA(i,j)=input(''); endend Aif det(A)~=0for i=1:numb(i)=input('');endb=b'num=length(b)for k=1:num-1for i=k+1:numif A(k,k)~=0l=A(i,k)/A(k,k);A(i,:)=A(i,:)-A(k,:).*l;b(i)=b(i)-b(k)*l;endendendAB%回代求xx(num)=b(num)/A(num,num);for i=num-1:-1:1sum=0;for j=i+1:numsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endxend【实验结论】高斯消元能很好的求解线性方程组,和用克莱姆法则求解方程组该算法简单而且求解次数少。
利用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程序及运行结果

1.列主元高斯消去法M文件function[x]=gauss(a,b)n=length(a);x=zeros(n,1);a=[a b];for k=1:n-1max=k;for i=k+1:nif a(i,k)>a(max,k)max=i;endendtemp=a(k,k:n+1);a(k,k:n+1)=a(max,k:n+1);a(max,k:n+1)=temp;for i=k+1:na(i,k)=-a(i,k)/a(k,k);a(i,k+1:n+1)=a(i,k+1:n+1)+a(i,k)*a(k,k+1:n+1);endendx(n,1)=a(n,n+1)/a(n,n);for i=n-1:-1:1sum=0;for j=i+1:nsum=sum+x(j,1)*a(i,j);endx(i,1)=(a(i,n+1)-sum)/a(i,i);endMatlab运行结果2.LU三角分解法M文件function y=LU(A,B);n=length(A);A=[A B];for k=1:n-1;for i=k:n;if(abs(A(i,k))==max(abs(A(k:n,k))))P(k)=i;temp=A(k,:);A(k,:)=A(i,:);A(i,:)=temp;endendfor j=k+1:n;A(j,k)=A(j,k)/A(k,k);A(j,k+1:n+1)=A(j,k+1:n+1)-A(j,k)*A(k,k+1:n+1);endendP(n)=n;L(1,1)=1;L(2:n,1)=A(2:n,1);L(1,2:n)=0;U(1,1)=A(1,1);U(2:n,1)=0;U(1,2:n)=A(1,2:n);for i=2:n;L(i,1:i-1)=A(i,1:i-1);L(i,i)=1;L(i,i+1:n)=0;U(i,1:i-1)=0;U(i,i:n)=A(i,i:n);endx(n) = A(n,n+1)/U(n,n);for k = n-1:-1:1x(k)=A(k,n+1);for p=n:-1:k+1;x(k) = x(k)-U(k,p)*x(p); endx(k)=x(k)/U(k,k);endxLUPEndMatlab运行结果3.龙贝格(Romberg)算法M文件function[t]=romberg(f,a,b,e)t=zeros(15,4);t(1,1)=(b-a)/2*(f(a)+f(b));for k=2:4sum=0;for i=1:2^(k-2)sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));endt(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;for i=2:kt(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);endendfor k=5:15sum=0;for i=1:2^(k-2)sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));endt(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;for i=2:4t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);endif k>6if abs(t(k,4)-t(k-1,4))<edisp(['答案',num2str(t(k,4))]);break;endendendif k>=15disp(['溢出']);endMatlab运行结果4.最小二乘法M文件function[a,max,det]=zuixiaoerchengfa(x,y,r) n=length(x);c=ones(n,r+1);for i=2:r+1for j=1:nc(j,i)=x(j)^(i-1);endendA=c'*c;b=c'*y';a=inv(A)*b;det=0;max=0;for i=1:nsum=a(1);for j=2:r+1sum=sum+a(j)*x(i)^(j-1);endcc=abs(y(i)-sum);if cc>maxmax=cc;enddet=det+cc^2;enddet=sqrt(det);Matlab运行结果§2.1.1 二分法的MATLAB主程序function [k,x,wuca,yx]=erfen(a,b,abtol)a(1)=a; b(1)=b;ya=fun(a(1)); yb=fun(b(1)); %程序中调用的fun.m 为函数if ya* yb>0,disp('注意:ya*yb>0,请重新调整区间端点a和b.'), returnendmax1=-1+ceil((log(b-a)- log(abtol))/ log(2)); % ceil是向+方向取整∞for k=1: max1+1a;ya=fun(a); b;yb=fun(b); x=(a+b)/2;yx=fun(x); wuca=abs(b-a)/2; k=k-1;[k,a,b,x,wuca,ya,yb,yx]if yx==0a=x; b=x;elseif yb*yx>0b=x;yb=yx;elsea=x; ya=yx;endif b-a< abtol , return, endendk=max1; x; wuca; yx=fun(x);§2.1.2 不动点迭代法的MATLAB主程序function [k,piancha,xdpiancha,xk,yk]=diedai2(x0,tol,ddmax) x(1)=x0;for i=1: ddmaxx(i+1)=fun(x(i));piancha=abs(x(i+1)-x(i));xdpiancha=piancha/( abs(x(i+1))+eps);i=i+1;xk=x(i);yk=fun(x(i)); [(i-1) piancha xdpiancha xk yk]if (piancha<tol)|(xdpiancha< tol)k=i-1; xk=x(i);return;endendif i>ddmaxdisp('迭代次数超过给定的最大值ddmax')k=i-1; xk=x(i);yk=fun(x(i));[(i-1) piancha xdpiancha xk yk];return;endP=[(i-1),piancha,xdpiancha,xk,yk]';§2.1.3 艾特肯加速迭代法的MATLAB主程序function [k,xk,yk,p]= Aitken (x0,tol, ddmax)x(1)=x0;for i=1: ddmaxx1(i+1)=fun(x(i)); x2(i+1)=fun(x1(i+1));x(i+1)=x2(i+1)-(x2(i+1)-x1(i+1))^2/(x2(i+1)-2*x1(i+1)+ x(i));piancha=abs(x(i+1)-x(i));xdpiancha= piancha/( abs(x(i+1))+eps);i=i+1; xk=x(i);yk=fun(x(i));if (piancha<tol)|(xdpiancha<tol)k=i-1; xk=x(i); yk=fun(x(i));m=[0,1:i-1]; p=[m',x1',x2',x'];return;endendif i>ddmaxdisp('迭代次数超过给定的最大值ddmax')k=i-1; xk=x(i); yk=fun(x(i));m=[0,1:i-1]; p=[m',x1',x2',x'];return;endm=[0,1:i-1]; p=[m',x1',x2',x'];§2.1.4 牛顿切线法的MATLAB主程序function [k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ftol,gxmax) x(1)=x0;for i=1: gxmaxx(i+1)=x(i)-fun(x(i))/(dfun(x(i))+eps);piancha=abs(x(i+1)-x(i));xdpiancha= piancha/( abs(x(i+1))+eps); i=i+1;xk=x(i);yk=fun(x(i)); [(i-1) xk yk piancha xdpiancha]if (abs(yk)<ftol)&((piancha<tol)|(xdpiancha< tol))k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]return;endendif i>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。
matlab中的基本运算

matlab中的基本运算Matlab是一种强大的数学软件,广泛应用于科学、工程和技术领域,其基本运算功能非常丰富。
本文将介绍一些常见的基本运算,并探讨它们在实际应用中的用途和意义。
我们来谈谈Matlab中的数学运算。
Matlab可以进行各种基本的数学运算,如加法、减法、乘法和除法等。
这些运算在处理数值数据时非常有用,可以快速计算出结果。
通过合理地利用这些基本运算,我们可以解决各种数学问题,从简单的算术运算到复杂的数值计算都可以轻松应对。
除了基本的数学运算,Matlab还具备一些特殊的运算功能,如矩阵运算和向量运算。
矩阵运算可以方便地进行线性代数的计算,如矩阵乘法、矩阵求逆和矩阵转置等。
这些运算在科学和工程领域中非常常见,可以用来解决各种线性方程组和最优化问题。
向量运算则可以用来处理一维数组数据,如向量加法、向量点乘和向量叉乘等。
这些运算在信号处理和图像处理等领域中非常有用,可以对数据进行快速处理和分析。
Matlab还支持一些特殊的数学函数,如三角函数、指数函数和对数函数等。
这些函数可以用来计算各种复杂的数学问题,如求解三角方程、求解微分方程和计算概率分布等。
通过合理地应用这些数学函数,我们可以解决各种实际问题,如信号处理、图像处理、控制系统和优化问题等。
除了数学运算,Matlab还具备一些其他的基本运算功能,如逻辑运算和位运算等。
逻辑运算可以用来进行条件判断和逻辑运算,如与运算、或运算和非运算等。
这些运算在编程和逻辑推理中非常有用,可以用来设计复杂的算法和判断条件。
位运算可以用来对二进制数据进行操作,如位与、位或和位移等。
这些运算在计算机科学和电子工程中非常常见,可以用来进行数字电路设计和编程等。
在实际应用中,Matlab的基本运算功能可以帮助我们解决各种实际问题。
例如,在信号处理中,我们可以利用Matlab的数学运算功能对信号进行滤波、频谱分析和信号重构等。
在图像处理中,我们可以利用Matlab的矩阵运算和向量运算功能对图像进行滤波、边缘检测和图像增强等。
Gauss消去matlab程序

%消元过程 for i=k+1:n 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 end
贵州师范大学数学与计算机科学学院
%回代过程 if abs(A(n,n))<1e-10 index=0; return; end 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
贵州师范大学数学与计算机科学学院
Gauss列主元消去法 列主元消去法Matlab程序 (2) 列主元消去法 程序
function X=Gausslzxq(A,B) % Input A is an N×N nonsingular matrix % B is an N×1 vector % Output X is an N×1 matrix containing the solution to AX=B % Initialize X and the temporary storage matrix C [N N]=size(A); X=zeros(N,1); C=zeros(1,N+1); Az=[A B]; % 形成增广矩阵: Az=[A | B]
贵州师范大学数学与计算机科学学院
if a_max<1e-10 index=0; 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; end return;
贵州师范大学数学与计算机科学学院
matlab求解方程的几种方法

牛顿切线法的MATLAB 主程序function[k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ftol,gxmax)x(1)=x0;for i=1: gxmaxx(i+1)=x(i)-fun(x(i))/(dfun(x(i))+eps);piancha=abs(x(i+1)-x(i));xdpiancha= piancha/( abs(x(i+1))+eps); i=i+1;xk=x(i);yk=fun(x(i)); [(i-1) xk yk piancha xdpiancha]if (abs(yk)<ftol)&((piancha<tol)|(xdpiancha< tol))k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]return ;endendif i>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax 。
')k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]return ;end[(i-1),xk,yk,piancha,xdpiancha]';例 3 用牛顿切线法求方程013223=+-x x 在9.04.00和-=x 的近似根,要求精度310-=ε.解1)先将上面的主程序作为M 文件保存;2)再保存如下的两个M 文件:function y=fun(x)y=2*x^3-3*x^2+1;function y=dfun(x)y=6*x^2-6*x;3)最后在工作窗口输入命令>> [k,xk,yk,piancha,xdpiancha]=newtonqx(-0.4,0.001, 0.001,100) 运行后输出初始值4.00-=x 和9.00=x 的迭代结果分别为:k =3,xk =-0.5000,yk =-7.7025e-007,piancha =3.5825e-004,xdpiancha =7.1650e-004 k =7,xk =0.9993,yk =1.5903e-006,piancha =7.2896e-004,xdpiancha =7.2949e-0041 高斯消元法及其MATLAB 程序f unction [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例1 用高斯消元法和MATLAB 程序求解下面的非齐次线性方程组。
高斯消元法,列主元素消元法及LU分解法的matlab程序

§2.2.1高斯消元法的MATLAB程序f unction [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=[2.51 1.48 4.53;1.48 0.93 -1.30 ;2.68 3.04 -1.48];b=[0.05;1.03;-0.53];[RA,RB,n,X] =gaus (A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =1.4531-1.5892-0.2749§2.2.2 列主元素消元法的MATLAB程序function [RA,RB,n,X]=liezhu(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-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);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=[2.51 1.48 4.53;1.48 0.93 -1.30 ;2.68 3.04 -1.48];b=[0.05;1.03;-0.53];[RA,RB,n,X]=liezhu(A,b)请注意:因为RA=RB=n,所以此方程组有唯一解.RA =3RB =3n =3X =1.4531-1.5892-0.2749§2.2.3 LU分解法的MATLAB程序function hl=zhjLU(A)[n n] =size(A); RA=rank(A);if RA~=ndisp('请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下:'), RA,hl=det(A);returnendif RA==nfor p=1:nh(p)=det(A(1:p, 1:p));endhl=h(1:n);for i=1:nif h(1,i)==0disp('请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:'), hl;RAreturnendendif h(1,i)~=0disp('请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:')for j=1:nU(1,j)=A(1,j);endfor k=2:nfor i=2:nfor j=2:nL(1,1)=1;L(i,i)=1;if i>jL(1,1)=1;L(2,1)=A(2,1)/U(1,1);L(i,1)=A(i,1)/U(1,1);L(i,k)=(A(i,k)- L(i,1:k-1)*U(1:k-1,k))/U(k,k);elseU(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);endendendendhl;RA,U,Lendend运行命令及结果a=[2.51 1.48 4.53;1.48 0.93 -1.30 ;2.68 3.04 -1.48];hl=zhjLU(A)请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:RA =3U =2.5100 1.4800 4.53000 0.9300 -3.97110 0 -0.0837L =1.0000 0 00.5896 1.0000 01.0677 1.5696 1.0000hl =2.5100 0.1439 13.6410>> U=[2.5100 1.4800 4.53000 0.9300 -3.97110 0 -0.0837];>>L= [1.0000 0 00.5896 1.0000 01.0677 1.5696 1.0000];>> b=[0.05;1.03;-0.53];U1=inv(U); L1=inv(L); X=U1*L1*b,x=A\bX =-111.8440110.953125.7324x =1.4531-1.5892-0.2749例2.1: 用高斯消元法求解下面的非齐次线性方程组。
MATLAB实现列主元消去法求解任意线性方程组的解

%MATLAB实现列主元消去法求解任意线性方程组的解clear allclose allclcformat longedisp('请输入参数');K=input('维数n=');ticA=100*rand(K);% A元素是0-100for i=1:KA(i,i)=sum(abs(A(i,:)))+25*rand(1); %对角占优的量为0~25endb=zeros(K,1);for i=1:K;x=0;for r=1:K;x=x+A(i,r);endb(i,1)=x;end%产生b矩阵,b中的元素为A中对应行的和,目的是使方程解全为 1jd=input('控制精度jd=');A=[A b]; %矩阵增广for k=1:K-1B=A(k:K,k); %先将第k列可能作为主元的元素取出方至矩阵BP=max(abs(B)); %%选主元Pif(P<jd) %控制小主元disp('无解');break;elseu=find((abs(B))==P); %计算主元所在行相对与k行的位置if(u~=1)A([k,u],:)=A([u,k],:); %换行endm=A(k+1:K,k)/A(k,k); %求出各行行乘数并放至矩阵mfor i=1:length(m)A(k+i,k:K+1)=A(k+i,k:K+1)-m(i)*A(k,k:K+1); %消元按行进行endendendif A(K,K)==0disp('无解'); %若矩阵A不满秩,则无解elsex(K)=A(K,K+1)/A(K,K); %由最后一行首先求出方程组的第一个解x(n) for i=K-1:-1:1 %计算第i个解x(i)for j=1:1:K-i %利用回代思想A(i,K+1)=A(i,K+1)-A(i,i+j)*x(i+j); %减去已知部分endx(i)=A(i,K+1)/A(i,i);endenddisp('方程组的解');x=x' %输出方程组的解toct=1:K;yy=abs(x'-1)/1;plot(t,yy);title('绝对误差图')。
全主元素消去法解方程组

全主元素消去法解方程组一、构建增广矩阵全主元素消去法解方程组的第一步是构建增广矩阵。
增广矩阵是在原方程组的基础上,将方程的右侧添加到矩阵中形成的。
这样可以方便后续的计算和消元过程。
二、主元素选择与全主元素概念在全主元素消去法中,主元素的选择至关重要。
主元素是增广矩阵中所在行最左侧的非零元素。
在选择主元素时,需要遵循一些原则,例如选取绝对值最大的元素作为主元素。
此外,为了避免出现除以零的错误,应该尽量避免选择零作为主元素。
全主元素是指一个方程中的所有非零元素都被选为主元素。
在全主元素消去法中,要求每个方程至少有一个非零元素被选为主元素,这样可以保证算法的正确性和稳定性。
三、全主元素消去过程全主元素消去法的核心思想是通过一系列的行变换,将增广矩阵转换为阶梯形矩阵。
在消元过程中,需要反复使用主元素进行消元操作,直到所有方程都变为阶梯形。
消元过程中需要遵循一定的规则,例如在进行行变换时,需要保持矩阵的行列式值不变。
四、回带求解未知数当增广矩阵转换为阶梯形矩阵后,可以回带求解未知数。
回带过程是从阶梯形矩阵的最后一行开始,逐行向上计算,最终得到所有未知数的值。
在回带过程中,需要注意保持计算的精度和稳定性,以避免舍入误差和数值不稳定性。
五、方程组无解或矛盾的判断在全主元素消去法解方程组的过程中,需要注意判断方程组是否有无解或矛盾的情况。
当某个方程中所有的主元素都为零时,说明该方程没有解;当两个或多个方程中的主元素相互矛盾时,说明方程组存在矛盾,无法得到唯一的解。
在这些情况下,需要根据具体情况进行处理,例如报错或返回特定的标记值。
六、计算过程中舍入误差的处理在计算机计算过程中,舍入误差是一个不可避免的问题。
为了避免舍入误差对解的精度和稳定性产生影响,需要注意以下几点:1. 选择合适的舍入精度:根据问题的需求和实际情况,选择合适的舍入精度,以保证解的精度和稳定性。
2. 使用低阶舍入模式:低阶舍入模式可以减少舍入误差的影响,提高解的精度和稳定性。