Matlab-8:松弛迭代法(SOR)
function [x,n,flag]=sor(A,b,eps,M,max1)
%sor函数为用松弛迭代法求解线性方程组
%A为线性方程组的系数矩阵
%b为线性方程组的常数向量
%eps为精度要求
%M为超弛因子
%max1为最大迭代次数
%u为线性方程组的解
%n为迭代次数
%flag为指标变量,flag='OK!'表示迭代收敛达到指标要求
%flag='fail!'表示迭代失败
if nargin<5
max1=10000;
end
if nargin<4
M=1;
end
if nargin<3
eps=1e-11;
end
k=length(A);
n=0;
x=zeros(k,1);
y=zeros(k,1);
flag='OK!';
while 1
y=x;
for i=1:k
z=b(i);
for j=1:k
if j~=i
z=z-A(i,j)*x(j);
end
end
if abs(A(i,i))<1e-10 | n==max1
flag='fail!';
return;
end
z=z/A(i,i);
x(i)=(1-M)*x(i)+M*z;
end
if norm(y-x,inf)<eps
break;
end
n=n+1;
end
算法推导:
Matlab-8:松弛迭代法(SOR)的更多相关文章
- Matlab-9:中心差分方法解常微分算例(SOR完整版)
函数文件: function [x,n,flag]=sor(A,b,eps,M,max1) %sor函数为用松弛迭代法求解线性方程组 %A为线性方程组的系数矩阵 %b为线性方程组的常数向量 %eps为 ...
- MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根
MATLAB用二分法.不动点迭代法及Newton迭代(切线)法求非线性方程的根 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验原理 二.实验步骤 ...
- 牛顿迭代法解非线性方程组(MATLAB版)
牛顿迭代法,又名切线法,这里不详细介绍,简单说明每一次牛顿迭代的运算:首先将各个方程式在一个根的估计值处线性化(泰勒展开式忽略高阶余项),然后求解线性化后的方程组,最后再更新根的估计值.下面以求解最简 ...
- matlab中的开方sqrt用牛顿迭代法实现的代码
function kaifang = KAIFANG(a)g0=a/2;g1=(g0+a./g0)/2;for i=0 : 299g0=g1;g1=(g0+a./g0)/2;endkaifang = ...
- MATLAB线性方程组的迭代求解法
MATLAB线性方程组的迭代求解法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验目的 1. 借助矩阵按模最大特征值,判断解方程组的Jacobi ...
- Jacobi与SOR迭代法的实现与性能比较及均匀间距与Chebyshev插值的实现、性能分析及二者生成的插值误差比较
这篇文章给出(1)Jacobi与SOR迭代法的实现与性能比较及(2)均匀间距与Chebyshev插值的实现.性能分析及二者生成的插值误差比较,给出完整的实现代码,没有进行性能优化,仅供参考. (1)J ...
- MATLAB学习笔记(七)——MATLAB解方程与函数极值
(一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...
- Kmeans算法的应用实例(Matlab版本)
K-means是一种经典的聚类算法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最 ...
- Numerical Methods with MATLAB(1)
目前正在阅读MATLAB相关的书籍:Numerical Methods with MATLAB,现在感觉这本书写的还行, 细致基础,而且写的比较清楚,同时把malab和数值算法结合在一起. 目前刚看完 ...
随机推荐
- CF776B Sherlock and his girlfriend
题目地址 题目链接 题解 这题很有意思啊qwq.本来是写算出每个数的质约数的,然后写到一半发现,质约数互相不影响,有质约数的数肯定是合数. 所以合数染一种色,质数染一种色就好 #include < ...
- Visual Studio 安装easyX且导入graphics库后,outtextxy提示未定义标示符
1.点击 “项目” ,然后点击 “属性”. 2. 然后点击左侧 “配置与属性” 下的 “常规” ,在点击 “字符集” ,选择 “使用多字节字符集” 即可解决问题
- 配置SSH无密码登录
首先进入目录 : /home/zuoyan/.ssh 在-的 .ssh 下 使用命令生成密钥 ssh-keygen -t rsa 敲4下回车 然后将公钥配置到需要的机器上,复制的目标机器最后是用户名 ...
- 通过sql语句修改表的结构
1.修改表的列名 oracle: ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名sqlserver:exec sp_rename '[表名].[列名]','[表名].[新 ...
- C语言 分割字符串
对指针的操作有点迷糊 只好采用下面一些比较low的手段 char str[100]; char delims[] = ";"; char *result = NULL; sprin ...
- SyncDictionary
using System; using System.Collections; using System.Collections.Generic; using System.Threading; us ...
- 简单Promise回顾
1:传统的CallBack回调函数let ajax=function(callback){ //dosomething this.setTimeout(()=>{ callback&&a ...
- MAC office2016 安装及激活
Office 下载地址: http://www.xitongtiandi.net/soft_yy/4285.html 破解补丁下载地址: https://bbs.feng.com/tencentdow ...
- mysql / sqlserver / oracle 常见数据库分页
空闲时间里用着mysql学习开发测试平台和测试用具, 在公司里将可用的测试平台部署,将数据库换成sqlserver 巴望着能去用oracle的公司 mysql中的分页 limit是mysql的语法se ...
- eclipse打开失败
以前eclipse运行好好的,某一次运行启动不了,一直图标那里转圈,不能启动, 运行eclipsec.exe后,查看发现出现以下错误 SLF4J: Class path contains multip ...