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个量化特征有一个值,又已知该样本数据的分类,据此,求 ...
随机推荐
- 关于stm32的RAM大小
- Android自定义组件系列【5】——进阶实践(1)
接下来几篇文章将对任老师的博文<可下拉的PinnedHeaderExpandableListView的实现>分步骤来详细实现,来学习一下大神的代码并记录一下. 原文出处:http://bl ...
- IOS开发中经常使用的宏定义
ios讨论群1群:135718460 有些时候.我们须要将代码简洁化,这样便于读代码.我们能够将一些不变的东东抽取出来.将变化的东西作为參数. 定义为宏,这样在写的时候就简单多了. 以下例举了一些经常 ...
- C++ 快速入门笔记:基本语法
数据类型 枚举类型 enum color { red, green, blue } colors; colors = blue; 默认情况下,第一个名称的值是 0,后面的依次加 1.也可以自定初始值: ...
- numpy tricks(二)—— 删除多维数组的行或列
numpy.delete numpy 下的多维数组,如果要删除其中的某些行,或某些列,不可以用置空的方式,进行设置: A[1, :] = None, ⇒ 会将 A 中的第一行数据全部置为 Nan 1. ...
- javaScript判断输入框是否为空
其中获得和失去焦点的时候都判断了一次 <script> function fun01(f,s){//有参函数 参数不需要参数类型!! try{ var v = document.getEl ...
- Identifying a distributed denial of service (DDOS) attack within a network and defending against such an attack
The invention provides methods, apparatus and systems for detecting distributed denial of service (D ...
- Git远程操作具体解释
Git是眼下最流行的版本号管理系统,学会Git差点儿成了开发人员的必备技能. Git有非常多优势,当中之中的一个就是远程操作非常简便.本文具体介绍5个Git命令,它们的概念和使用方法,理解了这些内容. ...
- WINDOWS 同步(Interlocked,InterlockedExchangeAdd,Slim读/写锁,WaitForSingleObject,CreateWaitableTimer等等)
NOTE0 在以下两种基本情况下,线程之间需要相互通信: 需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性: 一个线程需要通知其它线程某项任务已经完成 1.原子访问:Interlocked ...
- 学习OpenCV研究报告指出系列(二)源代码被编译并配有实例project
下载并安装CMake3.0.1 要自己编译OpenCV2.4.9的源代码.首先.必须下载编译工具,使用的比較多的编译工具是CMake. 以下摘录一段关于CMake的介绍: CMake是一个 ...