原文: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随笔之求解线性方程的更多相关文章

  1. Matlab随笔之线性规划

    原文:Matlab随笔之线性规划   LP(Linear programming,线性规划)是一种优化方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为:min xs.t. ...

  2. Matlab随笔之指派问题的整数规划

    原文:Matlab随笔之指派问题的整数规划 注:除了指派问题外,一般的整数规划问题无法直接利用Matlab函数,必须Matlab编程实现分支定界法和割平面解法. 常用Lingo等专用软件求解整数规划问 ...

  3. 欧几里德&扩展以及求解线性方程学习总结--附上poj1061解题报告

    欧几里德算法: 欧几里德就是辗转相除法,调用这个gcd(a,b)这个函数求解a,b的最大公约数 公式: gcd(a,b)=gcd(b,a%b):并且gcd(a,b)=gcd(b,a)=gcd(-a,b ...

  4. Matlab随笔之矩阵入门知识

    原文:Matlab随笔之矩阵入门知识 直接输入法创建矩阵 – 矩阵的所有元素必须放在方括号“[ ]”内: – 矩阵列元素之间必须用逗号“,”或空格隔开,每行必须用“;”隔开 – 矩阵元素可以是任何不含 ...

  5. Matlab随笔之画图函数总结

    原文:Matlab随笔之画图函数总结 MATLAB函数画图 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATL ...

  6. Matlab随笔之分段线性函数化为线性规划

    原文:Matlab随笔之分段线性函数化为线性规划 eg: 10x,            0<=x<=500 c(x)=1000+8x,    500<=x<=1000 300 ...

  7. Matlab随笔之插值与拟合(上)

    原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...

  8. Matlab随笔之插值与拟合(下)

    原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matl ...

  9. Matlab随笔之判别分析

    原文:Matlab随笔之判别分析 从概率论角度,判别分析是根据所给样本数据,对所给的未分类数据进行分类. 如下表,已知有t个样本数据,每个数据关于n个量化特征有一个值,又已知该样本数据的分类,据此,求 ...

随机推荐

  1. [Node.js] Pass command line arguments to node.js

    Command line arguments are often used to modify the behavior of an application or specify needed par ...

  2. Codeforces 138C(区间更新+离散化)

    题意:有n棵树在水平线上,给出每棵树的坐标和高度,然后向左倒的概率和向右倒的概率,和为1,然后给出了m个蘑菇的位置,每一个蘑菇都有一个魔法值,假设蘑菇被压死了,也就是在某棵树[a[i] - h[i], ...

  3. How to use ftp in a shell script

    转载How to use ftp in a shell script How to use ftp in a shell script Bruce EdigerBruce Ediger's home ...

  4. 用户之间imp的问题

    今天同事说申请了一个从生产导出的dump文件,须要导入測试库进行測试. 之前做的基本都是本库导出,本库导入的操作,比如:imp test/***@test tables=tbl_fuel file=H ...

  5. 【u008】瑞瑞的木棍

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 瑞瑞有一堆的玩具木棍,每根木棍的两端分别被染上了某种颜色,现在他突然有了一个想法,想要把这 些木棍连在 ...

  6. 于 Android NDK 的学习之旅-----数据传输(基本数据类型和数组传输)

    之前的一些文章都有涉及到上层和中间层的数据传输,简单来说,也就是参数和返回值的使用.因为中间层要做的最多的也就是数据传输与转换,下面来介绍下这方面的知识. 数据传输可分为 基本数据类型传输 和 引用数 ...

  7. 从0到1打造直播 App(直播流程介绍整理 <mark><转>)

    注明:原创 2016-10-27 李智文 腾讯Bugly 概要 分享内容: 互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——……..从直播1.0秀场时代(YY),2.0游戏直播(斗 ...

  8. 项目中使用了个quartz包,启动时提示Quartz version update check failed

    <span style="font-family: Arial, Helvetica, sans-serif;">2015-09-13 00:12:02 Abstrac ...

  9. RAC sysdate

    rac的sysdate可能不一致,这个需要注意.

  10. 具体分析contrex-A9的汇编代码__switch_to(进程切换)

    //函数原型:版本号linux-3.0.8 struct task_struct *__switch_to(structtask_struct *, struct thread_info *, str ...