求解线性方程组的方法Matlab程序
求解线性方程组的方法
目录
一,线性方程组的直接解法
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程序相关推荐
- 牛顿-拉普森法求解线性方程组原理及matlab程序
牛顿-拉普森法求解线性方程组原理及matlab程序 牛顿-拉普森法原理 Nowton-Raphson方法matlab程序? 牛顿-拉普森法原理 在多变量微积分和矩阵理论的交叉点是求解非线性代数方程 ...
- 直接法 matlab,解线性方程组直接方法matlab用法.doc
解线性方程组直接方法matlab用法 在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法. 2.1 方程组的逆矩阵解法及其MATLAB程序 2.1.3 线性方程组有解的判定 ...
- 分步傅里叶算法_分布傅里叶算法求解非线性薛定谔的matlab程序问题
[size=14.399999618530273px]分布傅里叶算法求解非线性薛定谔的matlab程序里,我注释的可能也有错误,请指导@alpha=0; %光纤损耗值,单位dB/km alph=al ...
- 基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex)
基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex) 参考文献:基于双层优化的微电网系统规划设计方法 摘要:规划设计是微电网系统核心技术体系之一.从分布式电源的综合优化(组 ...
- 考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序
考虑储能电池参与一次调频技术经济模型的容量配置方法matlab程序 参考文献:考虑储能电池参与一次调频技术经济模型的容量配置方法 摘要 :规模间歇电源并网引起的电网频率问题,导致对引入储能辅助调频的研 ...
- 【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
线性方程组迭代解法公式类似非线性方程求根的简单迭代法公式, 有Jacobi迭代法. Seidel迭代法及Sor法等. 题目1-Jacobi迭代法和Seidel迭代法 来源:<数值分析>第5 ...
- MATLAB求解线性方程组的八种方法
MATLAB求解线性方程组的八种方法 求解线性方程分为两种方法–直接法和迭代法 常见的方法一共有8种 直接法 Gauss消去法 Cholesky分解法 迭代法 Jacobi迭代法 Gauss-Seid ...
- matlab实现ica,ica算法matlab程序
ICA使用的是smooth之后的数据. 使用GIFT软件做独立成分分割 ? 软件包如同SPM 只需添加到matlab搜索路 径中保存然后在matlab中输入:gift 即可调 用. ? 其使用.... ...
- matlab的lb ub,多目标规划matlab程序实现
以下为<多目标规划matlab程序实现>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. 优化与决策 --多目标线性 ...
最新文章
- 2018-3-5 (论文—网络评论中结构化信息处理的应用于研究)笔记三(互信息,信息增益,期望交叉熵,基于词频的方法,CHI统计)
- vibe前景提取改进算法
- 系统架构师学习笔记_第二章_连载
- 算法提高课-图论-单源最短路的建图方式-AcWing 1128. 信使:dijkstra、 最短路取最大值
- python爬虫教程(一)
- opencv进阶学习笔记6:使用鼠标在图像上绘制矩形框或者多边形框
- react-navigation设置navigationOptions中Static中使用 this 的方法
- SAP CRM中间件队列CSAPR_HIERR3PRODHIER
- Ubuntu换源失败:Could not get lock /var/lib/apt/lists/lock - open
- 方法~作用于对象~失败_消息三:ActiveMQ Topic 消息失败重发
- 大数据学习笔记05:ZooKeeper集群
- iOS 13.2正式版放出 支持AirPodsPro
- linux read命令详解
- 学习C# 3.0语法笔记(1)
- 20145120 《Java程序设计》实验一实验报告
- 【题解】Atcoder ARC#76 F-Exhausted?
- 【数据结构-串】手算KMP算法的next和nextval数组
- 计算机系统是几位怎么看,Win10系统如何查看系统位数是32位还是64位
- Android获取wifi的ip地址
- PIL获取照片exif 批量修改手机照片名字为拍摄时间
热门文章
- web微信Android版,android实现用户体验超棒的微信WebView进度条
- GODI2018基站
- 简要说明人工智能专业以及就业前景
- 程序开发团队---团队精神篇
- BOSS创投社群:暴利项目创业,他人笑我太疯癫,我笑他人看不穿!
- 基于springboot的学生管理系统
- python表达式3or5的值为_Python表达式10+5%3-True+False的值为____。
- 使用PING测试IP地址
- 计算机文件大小排序工具,如何对电脑文件夹进行排序
- 初学盲打,免费,免安装,高颜值的在线打字练习网站