Matlab随笔之求解线性方程
理论知识补充:
%矩阵除分为矩阵右除和矩阵左除。
%矩阵右除的运算符号为“/”,设A,B为两个矩阵,则“A/B”是指方程X*B=A的解矩阵X。
%矩阵A和B的列数必须是相等。
% 矩阵左除的运算符号为“\”,设A,B为两个矩阵,则“B\A”是指方程B*X=A的解矩阵X。
%矩阵A和B的行数必须是相等。
%求解多项式的解,用roots函数
%求解定解方程组(未知数个数等于方程总数)
%A*x=b
A=[,;
,];
b=[;];
y=A\b
z=inv(A)*b
运行结果:
y =
1
2
z =
1
2
%求解不定方程组(未知数个数大于方程总数)
A=[4,5,1;
1,2,3];
b=[3;5];
x=A\b
运行结果:
x =
0
0.3077
1.4615
%求解超定方程组(未知数个数小于方程总数)
A=[1,1;
-2,-4;
1,-2];
b=[2;-3;2];
x=A\b
求解输出如下图所示,需要说明时,求得结果是以一最小二乘近似解。
x =
1.8182
-0.1299
%求解奇异方程组(多个方程之间有重复)
A=[1,2,1;
-2,-4,-2;
1,-2,5];
b=[6;-12;3];
x=A\b
此时,结果为
警告: 矩阵为奇异工作精度。
> In test at 5 x = NaN
NaN
NaN
此时,可以做同解异构,如下:
A=[1,2,1;
-2,-4,-2;
1,-2,5;
0,0,0];
b=[6;-12;3;0];
x=A\b
运行结果为:
x =
0
2.2500
1.5000
总结:将上面的所有情况封装起来,做成一个函数,代码如下:
function X=solveEquation(A,b)
% 解方程A*x=b
% A为系数方程,b为列向量
[temp1,temp2]=size(b);
if(temp2~=)%判断b是否为列向量
disp('b不是列向量!');
return
end
[c,d]=size(A);%c为方程数,d为未知量个数
if(c~=temp1)
disp('A,b行数不一致!');
return
end
if(c==d)
if(det(A)==)%奇异方程组
disp('奇异方程组问题');
A=[A;zeros(,d)];
b=[b;];
X=A\b;
return
end
%定解方程组
disp('定解方程组问题');
X=A\b;
return
elseif(c>d)%超定方程
disp('超定方程组问题');
X=A\b;
return
else
disp('不定方程问题');
X=A\b;
return
end
Matlab随笔之求解线性方程的更多相关文章
- Matlab随笔之线性规划
原文:Matlab随笔之线性规划 LP(Linear programming,线性规划)是一种优化方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为:min xs.t. ...
- Matlab随笔之指派问题的整数规划
原文:Matlab随笔之指派问题的整数规划 注:除了指派问题外,一般的整数规划问题无法直接利用Matlab函数,必须Matlab编程实现分支定界法和割平面解法. 常用Lingo等专用软件求解整数规划问 ...
- 欧几里德&扩展以及求解线性方程学习总结--附上poj1061解题报告
欧几里德算法: 欧几里德就是辗转相除法,调用这个gcd(a,b)这个函数求解a,b的最大公约数 公式: gcd(a,b)=gcd(b,a%b):并且gcd(a,b)=gcd(b,a)=gcd(-a,b ...
- Matlab随笔之矩阵入门知识
原文:Matlab随笔之矩阵入门知识 直接输入法创建矩阵 – 矩阵的所有元素必须放在方括号“[ ]”内: – 矩阵列元素之间必须用逗号“,”或空格隔开,每行必须用“;”隔开 – 矩阵元素可以是任何不含 ...
- Matlab随笔之画图函数总结
原文:Matlab随笔之画图函数总结 MATLAB函数画图 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATL ...
- Matlab随笔之分段线性函数化为线性规划
原文:Matlab随笔之分段线性函数化为线性规划 eg: 10x, 0<=x<=500 c(x)=1000+8x, 500<=x<=1000 300 ...
- Matlab随笔之插值与拟合(上)
原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...
- Matlab随笔之插值与拟合(下)
原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matl ...
- Matlab随笔之判别分析
原文:Matlab随笔之判别分析 从概率论角度,判别分析是根据所给样本数据,对所给的未分类数据进行分类. 如下表,已知有t个样本数据,每个数据关于n个量化特征有一个值,又已知该样本数据的分类,据此,求 ...
随机推荐
- 【2005】N只猴子选大王
Time Limit: 3 second Memory Limit: 2 MB N只猴子选大王.选举办法如下:从头到尾1.2.3报数,凡报3的退出,余下的从尾到头1.2.3报数,凡报3退出:余下的又从 ...
- SpringBoot 使用 @Value 从 YAML文件读取属性(转)
在 YAML中有如下配置 paypal: mode:live 在类中,通过 @Value属性读取 @Value("${paypal.mode}") private String m ...
- [Elm] Functions in Elm
Functions are an important building block in Elm. In this lesson we will review stateless functions, ...
- Android 节日短信送祝福(功能篇:1-数据库操作类与自定义ContentProvider)
首先,还是展示一下部分目录结构: 在节日短信送祝福的功能实现方面,为了能够方便直观展示实现过程,小编我以Java文件为基础,一个一个来展示,免得到时候这个java文件写点,一下又跳到另外一个java ...
- [tmux] Handle history in tmux sessions
In this lesson, we'll look at how to manage your history between tmux sessions, and ensure that your ...
- 安装innotop
安装方法一: 下载地址:https://github.com/innotop/innotop yum install -y perl-TermReadKey yum install -y perl-D ...
- Atom编辑器折腾记_(13)JS代码智能提示补全(插件:atom-ternjs)
题外话 官方正式版尽管内置了.autocomplete-plus;最为明显的一个功能就是记忆你已经输入过的名称进行匹配; 可是针对于某些语言来说,还是有些不足的-.当中JS的补全上就明显不足了-所以须 ...
- Myeclipse - Web项目转换技巧--处理Java项目、SVN非Web项目问题
喜欢从业的专注,七分学习的态度. 概述 对于Java调试,使用Eclipse习惯性的使用Junit调试,使用Myeclipse习惯性的将项目转成Web项目在Tomcat或Weblogic中调试,在My ...
- C#7模范和实践
C# 7 中的模范和实践 原文地址:https://www.infoq.com/articles/Patterns-Practices-CSharp-7 关键点 遵循 .NET Framework ...
- 《iOS8 Swift编程指南》类书图像
终于拿到了样书.虽然已经猜到这将是一本很厚的书(63万字),但要真正看到实体书或者当我吃了一惊: 从以下这张照片看则更直观了.居然比艾伦.J.马库斯的<投资学>(634页)还要厚: 这本书 ...