MATLAB线性方程组的迭代求解法

作者:凯鲁嘎吉 - 博客园
http://www.cnblogs.com/kailugaji/

一、实验目的

1. 借助矩阵按模最大特征值,判断解方程组的Jacobi迭代法所得迭代序列的敛散性。

2. 会在Jacobi迭代法所得迭代序列收敛时,用修改后的Gauss-Seidel迭代法。

3. 会逐次超松驰迭代法。

二、实验原理

三、实验程序

四、实验内容

用上面前二种方法求解4元线性方程组的近似解,所选方程组尽可能可以用多种方法求得收敛解。

注:要注意判断迭代法收敛性,方法之一就是用程序求矩阵的按模最大特征值。

五、解答

1.(程序)

(1)Jacobi迭代法源程序:

function x=jacobi(a,b,x0,n,tol,m)
x=zeros(n,1);
for k=0:m
for i=1:n
s=0;
for j=1:n
if j~=i
s=s+a(i,j)*x0(j,1);
end
end
x(i,1)=(b(i,1)-s)/a(i,i);
if norm(x-x0,inf)<tol
break;
end
x0(i,1)=x(i,1);
end
end

(2)Gauss-Seidel迭代法源程序:

function x=gauss_seidel(a,b,x0,n,tol,m)
x=zeros(n,1);
for k=0:m
for i=1:n
s=0;s2=0;
for j=1:i-1
s2=s2+a(i,j)*x(j,1);
end
for j=i+1:n
s=s+a(i,j)*x0(j,1);
end
x(i,1)=(b(i,1)-s-s2)/a(i,i);
if norm(x-x0,inf)<tol
break;
end
x0(i,1)=x(i,1);
end
end

2.(运算结果)

(1)求解线性方程组

>> a=[8 -3 2;4 11 -1;6 3 12];b=[20 33 36]';x0=[0 0 0]';
>> x=jacobi(a,b,x0,3,1e-6,50) x = 3.0000
2.0000
1.0000

(2)Gauss-Seidel迭代法

>>  a=[8 -3 2;4 11 -1;6 3 12];b=[20 33 36]';x0=[0 0 0]';
>> x=gauss_seidel(a,b,x0,3,1e-6,50) x = 3.0000
2.0000
1.0000

3.(拓展(方法改进、体会等))

逐次超松驰迭代法源程序:

function x=SOR(a,b,x0,n,w,tol,m)
x=zeros(n,1);
for k=0:m
for i=1:n
s=0;s2=0;
for j=1:i-1
s2=s2+a(i,j)*x(j,1);
end
for j=i+1:n
s=s+a(i,j)*x0(j,1);
end
x(i,1)=(1-w)*x0(i,1)+w*(b(i,1)-s-s2)/a(i,i);
if norm(x-x0,inf)<tol
break;
end
x0(i,1)=x(i,1);
end
end

运算结果:

>>  a=[-4 1 1 1;1 -4 1 1;1 1 -4 1;1 1 1 -4];b=[1 1 1 1]';x0=[0 0 0 0]';
>> x=SOR(a,b,x0,4,1,1e-6,20) x = -1.0000
-1.0000
-1.0000
-1.0000

MATLAB线性方程组的迭代求解法的更多相关文章

  1. [MATLAB] 利用遗传算法函数求目标函数的最优解

    最近接触到了遗传算法以及利用遗传算法求最优解,所以就把这些相关的内容整理记录一下. 一.遗传算法简介(摘自维基百科) 遗传算法(英语:genetic algorithm (GA))是计算数学中用于解决 ...

  2. QR分解迭代求特征值——原生python实现(不使用numpy)

    QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...

  3. MATLAB PCHIP函数一阶求导分析

    MATLAB PCHIP函数一阶求导分析 摘要:本文首先根据三次立方插值的一般表达式,得出分段三次立方插值时,每个小区间上的各次项系数.分析发现,三次项.二次项.一次项系数都与小区间端点处的一阶导数值 ...

  4. UVA725 Division (暴力求解法入门)

    uva 725 Division Write a program that finds and displays all pairs of 5-digit numbers that between t ...

  5. Matlab - 线性方程组求解

    常用函数:det 计算矩阵的行列式的值inv 求矩阵的逆阵rank 求矩阵的秩[V D]=eig(A) 求矩阵A的特征值和特征向量poly 求矩阵的特征多项式rref 用初等变换将矩阵化成行阶梯形nu ...

  6. matlab(4) Logistic regression:求θ的值使用fminunc / 画decision boundary(直线)plotDecisionBoundary

    画decision boundary(直线) %% ============= Part 3: Optimizing using fminunc =============% In this exer ...

  7. matlab练习程序(求向量间的旋转矩阵与四元数)

    问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ​角度到v2,u垂直于v1-v2 ...

  8. 九度OJ 1166:迭代求立方根 (迭代)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3695 解决:1700 题目描述: 立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0 ...

  9. Matlab依据样本随机数求概率曲线

    相关Matlab函数:hist, bar, cdfplot, ksdensity (1) hist函数 n = hist(Y, x)  假设x是一个向量,返回x的长度个以x为中心的,Y的分布情况. 比 ...

随机推荐

  1. Re:从零开始的MySQL入门学习

    Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器.由于这四个软件都是免费或开放式源码软件,因此使用这种不用花一分钱(人工成本除外)就可以建立起一 ...

  2. Kafka项目实战-用户日志上报实时统计之分析与设计

    1.概述 本课程的视频教程地址:<Kafka实战项目之分析与设计>  本课程我通过一个用户实时上报日志案例作为基础,带着大家去分析Kafka这样一个项目的各个环节,从而对项目的整体设计做比 ...

  3. apache tomcat搭建负载均衡(实现集群中的session同步)

    原理:tomcat 做个WEB服务器有它的局限性,处理能力低,效率低.承受并发小(1000左右).但目前有不少网站或者页面是JSP的.并采用了tomcat做为WEB,因此只能在此基础上调优. 目前采取 ...

  4. jquery easyui datagrid mvc server端分页排序筛选的实现

    1自定义一个ModelBinder public class filterRule { public string field { get; set; } public string op { get ...

  5. 设计node.js搭建多人博客的思路(不讲数据库)

    1.1.4:搭建多人博客 1.功能分析 搭建一个简单的多人注册,登录,发表文章及登出功能的博客 2.设计目标 未登录:主页左侧导航显示home.login.register,右侧显示已发表文章,发表日 ...

  6. 数据结构-Python3.7<三>

    上一篇:流程控制-Python<二> 因为列表具有pop.append.insert方法,因此列表可以当作堆.栈使用.由于性能问题,不建议当作堆.(堆:队列优先,先进先出(FIFO—fir ...

  7. 【转】Win10年度更新开发必备:VS2015 Update 3正式版下载汇总

    微软在06月27日发布了Visual Studio 2015 Update 3 .在MSDN中微软也提供下载,而且MSDN的Visual Studio 2015 Update 3与官方免费下载的文件是 ...

  8. [MongoDB] MongoDB增删查改

    MongoDB的三元素,数据库.集合.文档,集合就是表,文档就是行 开启MongoDB,cd切换到MongoDB的安装目录下的bin目录里,使用命令mongod 开启,参数:--dbpath 路径,把 ...

  9. quartz部署出现找不到表的情况,错误提示: Table 'heart_beat.QRTZ_LOCKS' doesn't exist

    描述一下,本地可以,部署到Linux就不行,Linux上的数据库是本地直接拷贝上去的,项目环境是Spring Boot2.1.Shiro.MyBatis.Redis.swagger.Bootstrap ...

  10. bootstrap网站后台从设计到开发之登录

    节后综合征缓了两天,今天把登录界面的主要后台代码分享给大家. protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPo ...