求解线性方程组的方法

目录

一,线性方程组的直接解法

1.高斯消元法
(1).原理和算法
(2).Matlab函数
(3).运行实例

2.用主元法进行高斯消元
(1).原理和算法
(2).Matlab函数
(3).运行实例

3.用按比例主元法进行高斯消元
(1).原理和算法
(2).Matlab函数
(3).运行实例

二,用迭代法求解线性方程组

1.雅可比迭代法
(1).原理和算法
(2).Matlab函数
(3).运行实例

2.高斯塞达尔迭代法
(1).原理和算法
(2).Matlab函数
(3).运行实例

一,线性方程组的直接解法
1.高斯消元法

(1).原理和算法

(2).Matlab函数

function x=Gauss(A,b)
n=size(A,1);
x=zeros(n,1);
for i=1:n-1 for t=i+1:n%用第i行的从第i+1行开始消去,一直消到最后一行m(t,i)=-A(t,i)/A(i,i); %后一行首位/前一行首位得到消元乘数for j=i:n %第i行从第i个开始乘乘数,消去第i+1行第i个元素A(t,j)=A(t,j)+m(t,i)*A(i,j);endb(t)=b(t)+m(t,i)*b(i); %该行b也随之变化end
end%完成所有行消元,因为最后一行最后一列元素不用消,所以循环到n-1
for i=1:ny(i)=b(i);
end
for i=n:-1:1t=n;while i<ty(i)=y(i)-A(i,t)*x(t);t=t-1;endx(i)=y(i)/A(i,i);
end%回代求解

(3).运行实例
求解线性方程组:
x1+ x2 + x3+x4=4
2x1+ x2 + x3+x4=5
3x1+2x2+x3 +x4=7
4x1+3x2+2x3+x4=10

2.用主元法进行高斯消元
(1).原理和算法

(2).Matlab函数

function x=Gauss(A,b)
n=size(A,1);
x=zeros(n,1);
for i=1:n-1 q=i;%q用来存储列元素最大的列数,假设第i行最大for p=i:n%第i列内从第i行开始寻找最大元素if A(q,i)<A(p,i)q=p; endendA([i q],:)=A([q i],:); %元素最大行与第i行交换temp=b(i);b(i)=b(q);b(q)=temp; %该两行b也随之交换
for t=i+1:n %用第i行的从第i+1行开始消去,一直消到最后一行m(t,i)=-A(t,i)/A(i,i); %后一行首位/前一行首位得到消元乘数for j=i:n %第i行从第i个开始乘乘数,消去第i+1行第i个元素A(t,j)=A(t,j)+m(t,i)*A(i,j);endb(t)=b(t)+m(t,i)*b(i); %该行b也随之变化end
end%完成所有行消元,因为最后一行最后一列元素不用消,所以循环到n-1
for i=1:ny(i)=b(i);
end
for i=n:-1:1t=n;while i<ty(i)=y(i)-A(i,t)*x(t);t=t-1;endx(i)=y(i)/A(i,i);
end%回代求解

(3).运行实例
求解线性方程组:
x1+ x2 + x3+x4=4
2x1+ x2 + x3+x4=5
3x1+2x2+x3 +x4=7
4x1+3x2+2x3+x4=10

3.用按比例主元法进行高斯消元
(1).原理和算法


(2).Matlab函数

function x=Gauss(A,b)
n=size(A,1);
x=zeros(n,1);
for i=1:n-1 for r=i:n %选出每行的最大元素并和该行第一个元素相除h=r; %h用来存储行元素最大的行数,假设第i个最大for k=r:n%第r行内从第1个开始寻找最大元素if A(r,h)<A(r,k)h=k; end%最终h保留的为元素最大的列数endD(r)=A(r,r)/A(r,h);%存储在数列内endq=i;%q用来存储列元素最大的列数,假设第i行最大for p=i:n%第i列内从第i行开始寻找最大比值if D(q)<A(p)q=p; end%最终q保留的为元素最大的行数endA([i q],:)=A([q i],:);%元素最大行与第i行交换temp=b(i);b(i)=b(q);b(q)=temp; %该两行b也随之交换
for t=i+1:n%用第i行的从第i+1行开始消去,一直消到最后一行m(t,i)=-A(t,i)/A(i,i); %后一行首位/前一行首位得到消元乘数for j=i:n %第i行从第i个开始乘乘数,消去第i+1行第i个元素A(t,j)=A(t,j)+m(t,i)*A(i,j);endb(t)=b(t)+m(t,i)*b(i); %该行b也随之变化end
end%完成所有行消元,因为最后一行最后一列元素不用消,所以循环到n-1
for i=1:ny(i)=b(i);
end
for i=n:-1:1t=n;while i<ty(i)=y(i)-A(i,t)*x(t);t=t-1;endx(i)=y(i)/A(i,i);
end%回代求解

(3).运行实例
求解线性方程组:
x1+ x2 + x3+x4=4
2x1+ x2 + x3+x4=5
3x1+2x2+x3 +x4=7
4x1+3x2+2x3+x4=10

二,用迭代法求解线性方程组
1.雅可比迭代法
(1).原理和算法

(2).Matlab函数

function x=jacobi(A,b,x0,tol,max)
[n,m]=size(A);
xold=x0;
C=-A;
for i=1:n C(i,i)=0;
end
for i=1:n C(i,:)=C(i,:)/A(i,i);
end
for i=1:n d(i,1)=b(i)/A(i,i);
end
i=1;
while i<=max xnew=C*xold+d; %雅可比迭代直接使用上一次的解E=norm(xnew-xold)if norm(xnew-xold)<=tol x=xnew;disp('Accuracy achieved!') return; else xold=xnew; end disp([xnew']); i=i+1;
end
x=xnew;

(3).运行实例

运行:

>> A=[3,-1,1;3,6,2;3,3,7];
b=[1,0,4]';
tol=0.0001;
max=20;
x0=[0;0;0;];
>> x=jacobi(A,b,x0,tol,max)
E =0.6615    0.3333         0    0.5714E =0.4292    0.1429   -0.3571    0.4286E =0.2839    0.0714   -0.2143    0.6633E =0.0607    0.0408   -0.2568    0.6327E =0.0406    0.0368   -0.2313    0.6640E =0.0127    0.0349   -0.2398    0.6548E =0.0060    0.0352   -0.2357    0.6592E =0.0025    0.0350   -0.2373    0.6574E =0.0010    0.0351   -0.2366    0.6581E =4.3591e-04    0.0351   -0.2369    0.6578E =1.7968e-04    0.0351   -0.2368    0.6579E =7.6131e-05Accuracy achieved!
n=12
x =0.0351-0.23690.6579

2.高斯塞达尔迭代法
(1).原理和算法

(2).Matlab函数

function x=gs(A,b,x0,tol,max)
[n,m]=size(A);
xold=x0;
C=-A;
for i=1:n C(i,i)=0;
end
for i=1:n C(i,:)=C(i,:)/A(i,i);
end
for i=1:n d(i,1)=b(i)/A(i,i);
end
i=1;
while i<=max xnew=xold;for j=1:nxnew(j,1)=C(j,:)*xnew+d(j,1); %高斯塞达尔迭代保持解的实时更新endE=norm(xnew-xold)if norm(xnew-xold)<=tol x=xnew;disp('Accuracy achieved!') return; else xold=xnew; end disp([xnew']); i=i+1;
end
x=xnew;

(3).运行实例

运行:

>> A=[3,-1,1;3,6,2;3,3,7];
b=[1,0,4]';
tol=0.0001;
max=20;
x0=[0;0;0;];
>> x=gs(A,b,x0,tol,max)E =0.6236 0.3333   -0.1667    0.5000E =
0.2582   0.1111   -0.2222    0.6190E =
0.0661  0.0529   -0.2328    0.6485E =
0.0154  0.0396   -0.2360    0.6556E =0.0039  0.0361   -0.2366    0.6573E =9.1975e-040.0354   -0.2368    0.6578E =2.2862e-040.0352   -0.2368    0.6579E =5.4682e-05Accuracy achieved!
n=8
x =0.0351-0.23680.6579

求解线性方程组的方法Matlab程序相关推荐

  1. 牛顿-拉普森法求解线性方程组原理及matlab程序

    牛顿-拉普森法求解线性方程组原理及matlab程序 牛顿-拉普森法原理 Nowton-Raphson方法matlab程序? 牛顿-拉普森法原理   在多变量微积分和矩阵理论的交叉点是求解非线性代数方程 ...

  2. 直接法 matlab,解线性方程组直接方法matlab用法.doc

    解线性方程组直接方法matlab用法 在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法. 2.1 方程组的逆矩阵解法及其MATLAB程序 2.1.3 线性方程组有解的判定 ...

  3. 分步傅里叶算法_分布傅里叶算法求解非线性薛定谔的matlab程序问题

    [size=14.399999618530273px]分布傅里叶算法求解非线性薛定谔的matlab程序里,我注释的可能也有错误,请指导@alpha=0;  %光纤损耗值,单位dB/km alph=al ...

  4. 基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex)

    基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex) 参考文献:基于双层优化的微电网系统规划设计方法 摘要:规划设计是微电网系统核心技术体系之一.从分布式电源的综合优化(组 ...

  5. 考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序

    考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序 参考文献:考虑储能电池参与一次调频技术经济模型的容量配置方法 摘要 :规模间歇电源并网引起的电网频率问题,导致对引入储能辅助调频的研 ...

  6. 【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)

    线性方程组迭代解法公式类似非线性方程求根的简单迭代法公式, 有Jacobi迭代法. Seidel迭代法及Sor法等. 题目1-Jacobi迭代法和Seidel迭代法 来源:<数值分析>第5 ...

  7. MATLAB求解线性方程组的八种方法

    MATLAB求解线性方程组的八种方法 求解线性方程分为两种方法–直接法和迭代法 常见的方法一共有8种 直接法 Gauss消去法 Cholesky分解法 迭代法 Jacobi迭代法 Gauss-Seid ...

  8. matlab实现ica,ica算法matlab程序

    ICA使用的是smooth之后的数据. 使用GIFT软件做独立成分分割 ? 软件包如同SPM 只需添加到matlab搜索路 径中保存然后在matlab中输入:gift 即可调 用. ? 其使用.... ...

  9. matlab的lb ub,多目标规划matlab程序实现

    以下为<多目标规划matlab程序实现>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. 优化与决策 --多目标线性 ...

最新文章

  1. 2018-3-5 (论文—网络评论中结构化信息处理的应用于研究)笔记三(互信息,信息增益,期望交叉熵,基于词频的方法,CHI统计)
  2. vibe前景提取改进算法
  3. 系统架构师学习笔记_第二章_连载
  4. 算法提高课-图论-单源最短路的建图方式-AcWing 1128. 信使:dijkstra、 最短路取最大值
  5. python爬虫教程(一)
  6. opencv进阶学习笔记6:使用鼠标在图像上绘制矩形框或者多边形框
  7. react-navigation设置navigationOptions中Static中使用 this 的方法
  8. SAP CRM中间件队列CSAPR_HIERR3PRODHIER
  9. Ubuntu换源失败:Could not get lock /var/lib/apt/lists/lock - open
  10. 方法~作用于对象~失败_消息三:ActiveMQ Topic 消息失败重发
  11. 大数据学习笔记05:ZooKeeper集群
  12. iOS 13.2正式版放出 支持AirPodsPro
  13. linux read命令详解
  14. 学习C# 3.0语法笔记(1)
  15. 20145120 《Java程序设计》实验一实验报告
  16. 【题解】Atcoder ARC#76 F-Exhausted?
  17. 【数据结构-串】手算KMP算法的next和nextval数组
  18. 计算机系统是几位怎么看,Win10系统如何查看系统位数是32位还是64位
  19. Android获取wifi的ip地址
  20. PIL获取照片exif 批量修改手机照片名字为拍摄时间

热门文章

  1. web微信Android版,android实现用户体验超棒的微信WebView进度条
  2. GODI2018基站
  3. 简要说明人工智能专业以及就业前景
  4. 程序开发团队---团队精神篇
  5. BOSS创投社群:暴利项目创业,他人笑我太疯癫,我笑他人看不穿!
  6. 基于springboot的学生管理系统
  7. python表达式3or5的值为_Python表达式10+5%3-True+False的值为____。
  8. 使用PING测试IP地址
  9. 计算机文件大小排序工具,如何对电脑文件夹进行排序
  10. 初学盲打,免费,免安装,高颜值的在线打字练习网站