matlab怎样求线性方程组,MATLAB线性方程组求解
有唯一解线性方程组求法
对于一般的,有唯一解的线性方程组,我们可以转换成矩阵的形式:
Ax=bAx=bAx=b 则可以用矩阵运算求解x,即x=A\b
有无穷解的线性方程组求法
齐次线性方程组的通解
求解齐次线性方程组基础解系的函数是null
Z=null(A)表示返回矩阵A的基础解系组成的矩阵。Z还满足ZTZ=I
Z=null(A,‘r’)得出的Z不满足ZTZ=I,但得出的矩阵元素多为整数,顾一般都带参数r。
非齐次线性方程组通解
非齐次线性方程组在求出基础解析后还要求一个特解。对于矩阵形式的非齐次线性方程组Ax=bAx=bAx=b 特解x0x_0x0的求法为x0=pinv(A)*b;其中函数pinv的意思是伪逆矩阵。
例如求解线性方程组:
f(x)={x1+2x2+2x3=1x2−2x3−2x4=2x1+3x2−2x4=3f(x)=\left\{
\begin{aligned}
x_1+2x_2+2x_3=1\\
x_2-2x_3-2x_4=2\\
x_1+3x_2-2x_4=3\\
\end{aligned}
\right.f(x)=⎩⎪⎨⎪⎧x1+2x2+2x3=1x2−2x3−2x4=2x1+3x2−2x4=3
由输出结果可知方程的解为
x=k1[−6210]+k2[−4201]+[13/7746/77−1/11−40/77](k1,k2∈R)x=k_1 \begin{bmatrix} -6\\2\\1\\0\\ \end{bmatrix}
+k_2 \begin{bmatrix} -4\\2\\0\\1\\ \end{bmatrix}
+\begin{bmatrix} 13/77\\46/77\\-1/11\\-40/77\\ \end{bmatrix}
\quad (k_1,k_2 ∈R)x=k1⎣⎢⎢⎡−6210⎦⎥⎥⎤+k2⎣⎢⎢⎡−4201⎦⎥⎥⎤+⎣⎢⎢⎡13/7746/77−1/11−40/77⎦⎥⎥⎤(k1,k2∈R)
利用Gauss消元法求解线性方程组
在线性代数中,我们主要的方法就是Gauss消元法。MATLAB中将矩阵化为行阶梯型的函数是:R=rref(A)R=rref(A)R=rref(A)
我们可以用线性代数知识,编写一个函数,给入矩阵A和b,给出方程的解,函数自动判断是有唯一解还是无穷解。
先搭建出函数的框架
function varargout = ZJX_solvebygauss(varargin)
%ZJX_solvebygauss 用高斯消元法解线性方程组
% A是系数矩阵,b是常熟矩阵。varargin={A,b};如果b为0,则不输入b
% varargout=[S flag],S给出结果
% flag为0无解;1唯一解;2齐次通解;3非齐次通解
A=cell2mat(varargin(1));
Alie=length(A);Asum=numel(A);Ahang=Asum/Alie;
if(nargin==2)
b=cell2mat(varargin(2));
else
b(Ahang,1)=0;
end
B=A; B(:,Alie+1)=b;
varargout(1)={S};
if(nargout==2)
varargout(2)={flag};
end
end
现在完成了基本框架的构建,其中varargout等含义参见函数部分的内容。现在我们已经得到了矩阵A、b,A的行数Ahang,A的列数Alie,增广矩阵B。现在在中间的空格位置进行运算。
程序设计
Ar=rank(A); Br=rank(B);
B=rref(B);
if (Ar
flag=0; S=0;
elseif (Ar==Br && Ar==Alie)
flag=1; S=B(:,Alie+1);
else
%将能构成单位矩阵的列号存储在行向量I中,即存储了极大线性无关向量的编号
%将剩余列号存入行向量C中
for i=1:Ar
for j=1:Alie
if(B(i,j)==1)
I(i)=j;
break
end
end
end
C=setdiff(1:Alie,I);
%由线性代数知识可得基础解系
ILim=length(I); CLim=length(C);
S(Alie,CLim)=0;%初始化S,S行数为A列数,S列数为C的维度
for i=1:CLim
S(C(i),i)=-1;
for j=1:ILim
S(I(j),i)=B(j,C(i));
end
end
if(nargin==1)
flag=2;
else
flag=3;
S(Alie,CLim+1)=0;
for i=1:Ar
S(I(i),CLim+1)=B(i,Alie+1);
end
end
end
测试
同样求之前的方程组通解
{x1+2x2+2x3=1x2−2x3−2x4=2x1+3x2−2x4=3\left\{
\begin{aligned}
x_1+2x_2+2x_3=1\\
x_2-2x_3-2x_4=2\\
x_1+3x_2-2x_4=3\\
\end{aligned}
\right.⎩⎪⎨⎪⎧x1+2x2+2x3=1x2−2x3−2x4=2x1+3x2−2x4=3
如图,带方程b则S最后一列是特解,不带b则没有特解。日后我们可以直接调用这个函数方便求解。而且比较结果我们发现,这样求出来的特解形式要简单一些。
matlab怎样求线性方程组,MATLAB线性方程组求解相关推荐
- matlab求曲线极值程序,matlab函数求极值matlab函数求极值.ppt
matlab函数求极值matlab函数求极值 * * 函数的极值 1.一元函数的极值 函数命令:fminbnd 调用格式:[x,feval,exitflag,output]=fminbnd(fun,x ...
- matlab中求立方根,MATLAB基础入门
MATLAB有许多使用方法,但最基本,也是入门时首先要掌握的是MATLAB命令窗口(Command Window)的使用方法. MATLAB命令窗口是用于输入数据,运行MATLAB函数和脚本,并显示结 ...
- matlab trapz求二重积分,matlab求积分(超详细,含int integral integral2/3 quad trapz
matlab求积分 matlab求积分函数工具: int 用法1: 格式: int(fun,x,a,b) 功能: 计算定积分 用法2: 格式: int(f,x) 功能: 计算不定积分 注: 使用int ...
- matlab 线性规划求最大值,MATLAB求解线性规划(含整数规划和01规划)问题.pdf
MATLAB求解线性规划(含整数规划和01规划)问题 MATLAB 求解线性规划(含整数规划和0-1 规划)问题 线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约 束的,变量范围为有 ...
- Matlab中求线性函数的最小值,求解多元线性函数的绝对值的最小值
十分感谢您在百忙之中能给予我帮助!很惭愧,我是应急现用现学的,找到了咱们网站.我手里的教材是清华大学出版的<MATLAB6.5在科学计算中的应用>,在网上同样下载了MATLAB6.5的应用 ...
- matlab近似计算求积分,matlab 实验二 定积分的近似计算
实验二定积分的近似计算 利用牛顿-莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分 ...
- matlab表达式求值,Matlab进行表达式求值(含参变量代入求值)
(一)前言 本文简单介绍如何使用matlab中的eval()函数与subs()函数进行表达式(含参/不含参)的求值. (二)不含参表达式 对于一个表达式的求值运算,我们使用eval函数求解,如eval ...
- 在matlab中求协方差,matlab里面的求协方差函数
一:matlab里面关于方差和协方差的几点需要注意的 求均值的函数:mean 求方差的函数:var 标准差: 方差: 求协方差的函数:cov 1 如果a,b是向量,则: cov(a,b)相当于是[D( ...
- matlab编程求平均,matlab中的分组平均函数grpstats的用法
群组函数grpstats 前面讨论到之平均值求法,通常应用于整个数组之值,若要应用到比较复杂的分组平均问题,则必须使用不同的函数才能达成.此项指令之格式如下: means = grpstats(X, ...
- matlab中求立方根,matlab实现求复数立方根的函数代码怎么写
z2] a=[a1; a2] 来表示z 和 a=a1 + i a2 然后我们用两个实数z1和z2来写f(z) 所以 f(z: function [z, z2, 我们来求解根, niter]=ComCu ...
最新文章
- 从原则、方案、策略及难点阐述分库分表
- Docker官方Centos镜像下安装Elasticsearch【详细步骤】
- Linux内存映射--mmap函数
- php u6536编码转,详谈PHP编码转换问题
- django版本区别/与版本匹配
- node08-express
- android 音频播放总结 soundlPool,MediaPlay
- linux系统是微内核结构,科普:微内核操作系统现状
- Matlab添加BNT工具箱
- 高性能计算(HPC)的前景、如何学习HPC
- 保存OpenCV中Mat_Vec3f格式的图像
- POJ2135:Farm Tour
- matlab win10 精简版下载,完美解决win10无法运行matlab问题
- 简易的NTC-10K-3950测温
- Glide 加载圆形图片
- C语言指针理解(一)
- 时间流逝,岁月里所有的狼狈
- 计算机运行加减乘除哪个最慢,计算机算加减乘除的时间对比
- 教你怎么用Python每天自动给对象免费发短信
- 2.2 架构模式在新浪微博的应用[读书敲录]
热门文章
- 微服务生态组件之Spring Cloud LoadBalancer详解和源码分析
- python根据时间序列画折线图_时间序列模型的python实现
- 威联通nas怎么更换大硬盘_QNAP 篇一:记一次换硬盘引发的折腾
- c语言关键字code什么意思,C语言中的32个关键字分别是什么意思?
- 10计算机网络需要密码是多少钱,Win10宽带连接不用每次都要输入密码的办法
- 停止在csdn发文及上传资源的声明
- d3d透视逆向篇:第4课 方法一之D3D9游戏黑屏优化1 HOOK
- Java后端工程师在做什么
- css所有缩写属性,CSS常见属性缩写与全写对比
- 七剑下天山(二)疑问篇