MATLAB线性方程组的迭代求解法
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线性方程组的迭代求解法的更多相关文章
- [MATLAB] 利用遗传算法函数求目标函数的最优解
最近接触到了遗传算法以及利用遗传算法求最优解,所以就把这些相关的内容整理记录一下. 一.遗传算法简介(摘自维基百科) 遗传算法(英语:genetic algorithm (GA))是计算数学中用于解决 ...
- QR分解迭代求特征值——原生python实现(不使用numpy)
QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...
- MATLAB PCHIP函数一阶求导分析
MATLAB PCHIP函数一阶求导分析 摘要:本文首先根据三次立方插值的一般表达式,得出分段三次立方插值时,每个小区间上的各次项系数.分析发现,三次项.二次项.一次项系数都与小区间端点处的一阶导数值 ...
- UVA725 Division (暴力求解法入门)
uva 725 Division Write a program that finds and displays all pairs of 5-digit numbers that between t ...
- Matlab - 线性方程组求解
常用函数:det 计算矩阵的行列式的值inv 求矩阵的逆阵rank 求矩阵的秩[V D]=eig(A) 求矩阵A的特征值和特征向量poly 求矩阵的特征多项式rref 用初等变换将矩阵化成行阶梯形nu ...
- matlab(4) Logistic regression:求θ的值使用fminunc / 画decision boundary(直线)plotDecisionBoundary
画decision boundary(直线) %% ============= Part 3: Optimizing using fminunc =============% In this exer ...
- matlab练习程序(求向量间的旋转矩阵与四元数)
问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ角度到v2,u垂直于v1-v2 ...
- 九度OJ 1166:迭代求立方根 (迭代)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3695 解决:1700 题目描述: 立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0 ...
- Matlab依据样本随机数求概率曲线
相关Matlab函数:hist, bar, cdfplot, ksdensity (1) hist函数 n = hist(Y, x) 假设x是一个向量,返回x的长度个以x为中心的,Y的分布情况. 比 ...
随机推荐
- ACM学习<3>
排序算法: 基本:冒泡,快速,选择,堆,插入,shell 多路并归: 1.冒泡排序: 思想:交换排序,通过相邻的交换来达到排序的目的. 流程: ...
- leetcode — remove-nth-node-from-end-of-list
/** * Source : https://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/ * * Created by lve ...
- 实验吧 貌似有点难 伪造ip
解题链接: http://ctf5.shiyanbar.com/phpaudit/ 解答: 点击View the source code —>代码显示IP为1.1.1.1即可得到KEY—> ...
- SpringMvc @ResponseBody字符串中文乱码原因及解决方案
今天突然发现一个问题,后来在网上也找到了很多解决思路,自己也查找到了问题所在,记录一下. @RequestMapping(value = "/demo1") @ResponseBo ...
- 团队作业4——beta阶段冲刺
Deadline: 2018-12-16 22:00PM,以博客提交至班级博客时间为准 提交: (a) 项目课堂演示: (b) 1篇冲刺准备+5篇冲刺随笔,: (c) 1篇用户使用用报告: (d) 1 ...
- c# 数组协变
class a{} class b:a{} a[] arr=new a[3]; a[] arr2=new a[3]; 给arr 数组赋值 arr[0]=new a(); arr2[0]=new b() ...
- [PHP] 算法-复制复杂链表的PHP实现
复杂链表的复制: 1.在旧链表中每个结点的后面复制出一个结点,隔代 2.把旧链表的随机指向部分,复制到新添加的结点上 3.把新结点从旧链表中拆分出来成新链表 1. linklist=head whil ...
- 【Spring】5、利用自定义注解在SpringMVC中实现自定义权限检查
转自:http://www.tuicool.com/articles/6z2uIvU 先描述一下应用场景,基于Spring MVC的WEB程序,需要对每个Action进行权限判断,当前用户有权限则允许 ...
- 如何在表单中使用Ajax
1.HTML就是一个简单表单验证,有登录按钮,点击登录会发送Ajax, 这里就是简单如果用户名为:zhouzhiruo,密码为:123456,就是登录成功,否则登录失败 应该在发送请求之前对input ...
- 【23】备忘录模式(Memento Pattern)
一.引言 在上一篇博文分享了访问者模式,访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离.而今天要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起 ...