文章目录

  • 0.0 题目
  • 0.1 线性代数问题
    • (1)用数值法和解析法求解下面的Sylvester方程,并验证得到的结果
    • (2)试配平下面的化学反应方程式(不需要手算)

0.0 题目

0.1 线性代数问题

(1)用数值法和解析法求解下面的Sylvester方程,并验证得到的结果

[3−6−405142−24−63−673−13100−11004034]X+X[3−21−2−92−2−19]=[−21−14125−616−4−4−66−3]\begin{aligned} \begin{bmatrix} 3 & -6 & -4 & 0 & 5 \\ 1 & 4 & 2 & -2 & 4 \\ -6 & 3 & -6 & 7 & 3 \\ -13 & 10 & 0 & -11 & 0 \\ 0 & 4 & 0 & 3 & 4 \end{bmatrix} \boldsymbol{X}+\boldsymbol{X}\left[\begin{array}{rrr} 3 & -2 & 1 \\ -2 & -9 & 2 \\ -2 & -1 & 9 \end{array}\right]=\begin{bmatrix} -2 & 1 & -1 \\ 4 & 1 & 2 \\ 5 & -6 & 1 \\ 6 & -4 & -4 \\ -6 & 6 & -3 \end{bmatrix} \end{aligned} ⎣⎢⎢⎢⎢⎡​31−6−130​−643104​−42−600​0−27−113​54304​⎦⎥⎥⎥⎥⎤​X+X⎣⎡​3−2−2​−2−9−1​129​⎦⎤​=⎣⎢⎢⎢⎢⎡​−2456−6​11−6−46​−121−4−3​⎦⎥⎥⎥⎥⎤​​

A=[3 -6 -4 0 5;1 4 2 -2 4;-6 3 -6 7 3;-13 10 0 -11 0;0 4 0 3 4]
B=[3 -2 1;-2 -9 2;-2 -1 9]
X0=[-2 1 -1;4 1 2;5 -6 1;6 -4 -4;-6 6 -3]
  • 数值解
% 数值解
X = sylvester(A,B,-X0)

实验结果为:

X =-4.0569  -14.5128    1.56530.0356   25.0743   -2.74089.4886   25.9323   -4.41772.6969   21.6450   -2.88517.7229   31.9100   -3.7634
  • 解析解

    主要思想是设置关于ttt的指数形式,最后的求解包含ttt

A=sym(A)
B=sym(B)
X0=sym(X0)
syms t
% 解析解 dsolve方法
X(t)=any_matrix([5,3],'x',t)
x=dsolve(diff(X)==A*X+X*B,X(0)==X0)
X=[x.x11,x.x12,x.x13;x.x21,x.x22,x.x23,x.x31;...x.x32,x.x33,x.x41,x.x42,x.x43;x.x51,x.x52,x.x53]
% 解析解
X=simplify(expm(A*t)*X0*expm(B*t))
simplify(diff(X)-A*X-X*B)
subs(X,t,0)-X0
% 解析解 Kron方法(直积)
A0=kron(eye(3),A)+kron(B',eye(5));
X=expm(A0*t); x1=reshape(x,5,3)

其中,any_matrix函数如下,可以产生关于如x11(t),x12(t)x11(t),x12(t)x11(t),x12(t)这样的编号变量。

X(t) =[ x11(t), x12(t), x13(t)]
[ x21(t), x22(t), x23(t)]
[ x31(t), x32(t), x33(t)]
[ x41(t), x42(t), x43(t)]
[ x51(t), x52(t), x53(t)]
function A=any_matrix(nn,sA,varargin) % 生成任意矩阵
v=varargin; n=nn(1);
if length(nn)==1, m=n; else, m=nn(2); end
s=''; k=length(v); K=0; if n==1 || m==1, K=1; end
if k>0, s='('; for i=1:k, s=[s ',' char(v{i})]; ends(2)=[]; s=[s ')'];
end
for i=1:n, for j=1:m % 用循环结构逐个元素单独处理if K==0, str=[sA int2str(i),int2str(j) s];else, str=[sA int2str(i*j) s]; endeval(['syms ' str]); eval(['A(i,j)=' str ';']); % 指定相应的矩阵元素
end, end

遗憾的是,在处理四阶问题电脑可以顺利跑完,生成关于ete^tet的矩阵解,而对于五阶矩阵,电脑内存占用太多,上述方法运行失效,采用以下方法

function X=lyap3(A,B,C)
[nr,nc]=size(C);
A0=kron(A,eye(nc))+kron(eye(nr),B');
tryC1=C';X0=-inv(A0)*C1(:);X=reshape(X0,nc,nr)';
catcherror('矩阵奇异');
end

运行后结果如下,验证后为解析解

X = lyap3(sym(A),B,X0)ans =[ -434641749950/107136516451, -4664546747350/321409549353,   503105815912/321409549353]
[    3809507498/107136516451,  8059112319373/321409549353,  -880921527508/321409549353]
[ 1016580400173/107136516451,  8334897743767/321409549353, -1419901706449/321409549353]
[  288938859984/107136516451,  6956912657222/321409549353,  -927293592476/321409549353]
[  827401644798/107136516451, 10256166034813/321409549353, -1209595497577/321409549353]A*X+X*B+X0ans =[ 0, 0, 0]
[ 0, 0, 0]
[ 0, 0, 0]
[ 0, 0, 0]
[ 0, 0, 0]

(2)试配平下面的化学反应方程式(不需要手算)

KClO3+HCl→KCl+Cl2+H2O\begin{aligned} \mathrm{KClO}_{3}+\mathrm{HCl} \rightarrow \mathrm{KCl}+\mathrm{Cl}_{2}+\mathrm{H}_{2} \mathrm{O} \end{aligned} KClO3​+HCl→KCl+Cl2​+H2​O​

K4Fe(CN)6+KMnO4+H2SO4→KHSO4+Fe2(SO4)3+MnSO4+HNO3+CO2+H2\begin{aligned} \mathrm{K}_{4} \mathrm{Fe}(\mathrm{CN})_{6}+\mathrm{KMnO}_{4}+\mathrm{H}_{2} \mathrm{SO}_{4} \rightarrow \mathrm{KHSO}_{4}+\mathrm{Fe}_{2}\left(\mathrm{SO}_{4}\right)_{3}+\mathrm{MnSO}_{4}+\mathrm{HNO}_{3}+\mathrm{CO}_{2}+\mathrm{H}_{2} \end{aligned} K4​Fe(CN)6​+KMnO4​+H2​SO4​→KHSO4​+Fe2​(SO4​)3​+MnSO4​+HNO3​+CO2​+H2​​

配平方程式采用原子守恒方法,通过列等式来求得系数,目标函数为变量的系数和。

% KClO3 + HCl → KCl + Cl2 + H2O% KClO3 + 6HCl → 1KCl + 3Cl2 + 3H2O
% 变量包括
%     K C O H 以该顺序定义矩阵那么分别为
X1 = [1 1 3 0]
X2 = [0 1 0 1]
Y1 = [1 1 0 0]
Y2 = [0 2 0 0]
Y3 = [0 0 1 2]
A = [X1',X2']
b = [-Y1',-Y2',-Y3']
AA = [A,b]
%因此需要解的方程可以表示为
% AX1+BX2-CY1-DY2-EY3=0
% (A,B,-C.-D,-E)(X1,X2,X3,Y1,Y2,Y3)=0
% 因此在求解时候需要满足[x,fval] = linprog(ones(5,1),[],[],AA,zeros(4,1),ones(5,1))

实验结果如下,验证后该结果正确

Optimal solution found.
x =1.0000 6.0000 1.0000 3.0000 3.0000

在进行第二个方程配平时候,如果使用linprog会出现非整数解的情况,因此改为intlinprog,并将9个参数为整数的信息传给数组intcon

% 4K4Fe(CN)6 + 30KMnO4 + 82H2SO4 → 46KHSO4 + 2Fe2(SO4)3 + 30MnSO4 +24HNO3 + 24CO2 + 47H2% K4Fe(CN)6+KMnO4+H2SO4 → KHSO4+Fe2(SO4)3+MnSO4+HNO3+CO2+H2
% 变量包括
%     K F C N M H S O
X1 = [4 1 6 6 0 0 0 0]
X2 = [1 0 0 0 1 0 0 4]
X3 = [0 0 0 0 0 2 1 4]
Y1 = [1 0 0 0 0 1 1 4]
Y2 = [0 2 0 0 0 0 3 12]
Y3 = [0 0 0 0 1 0 1 4]
Y4 = [0 0 0 1 0 1 0 3]
Y5 = [0 0 1 0 0 0 0 2]
Y6 = [0 0 0 0 0 2 0 0]
A = [X1',X2',X3']
b = [-Y1',-Y2',-Y3',-Y4',-Y5',-Y6']AA = [A,b]
intcon = [1:9] %整数规划
[x,fval] = intlinprog(ones(9,1),intcon,[],[],AA,zeros(8,1),ones(9,1))

实验结果如下,验证后该结果正确

Optimal solution found.
x =4.0000 30.0000 82.0000 46.0000 2.0000 30.0000 24.0000 24.0000 47.0000

[MATLAB作业二]求解线性代数问题相关推荐

  1. MATLAB第2次作业,matlab作业二

    1.在同一平面中的两个窗口分别画出心形线和马鞍面. 要求: 1.在图形上加格栅.图例和标注 2.定制坐标 3.以不同角度观察马鞍面 2.以不同的视角观察球面 和 圆柱面 所围区域. subplot(2 ...

  2. galerkin有限元法matlab实现,有限元法求解二维Poisson方程的MATLAB实现

    有限元法求解二维Poisson方程的MATLAB实现 陈莲a,郭元辉b,邹叶童a [摘要]文章讨论了圆形区域上的三角形单元剖分.有限元空间,通过变分形式离散得到有限元方程. 用MATLAB编程求得数值 ...

  3. 应用MATLAB求解线性代数题目(四)——线性方程组

    目录 求解齐次线性方程组 求解非齐次线性方程组 同解方程组 向量形式.矩阵形式的方程组 则线性表出的问题可以通过方程组求解. 求解齐次线性方程组 求齐次线性方程组的基础解系的命令: B=null(A) ...

  4. 用matlab解单纯形法,实验二MATLAB编程单纯形法求解

    <实验二MATLAB编程单纯形法求解>由会员分享,可在线阅读,更多相关<实验二MATLAB编程单纯形法求解(11页珍藏版)>请在人人文库网上搜索. 1.北京联合大学 实验报告 ...

  5. matlab 高斯迭代法求解,高斯迭代法matlab算例

    Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法 Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法实验报告 1.熟悉 Gauss-Seidel 迭代法,并编写 ...

  6. 无差异曲线matlab算法,引入Matlab提高经济类线性代数应用能力

    摘要:文章针对线性代数教学中出现的计算冗繁.概念抽象现象,提出将Matlab软件工具引入教学,以提高学生解决实际问题的能力,并举例说明Matlab在经济模型及图形直观化上的作用. 关键词:线性代数:M ...

  7. matlab第八章答案,MATLAB课件第八章线性代数基础

    <MATLAB课件第八章线性代数基础>由会员分享,可在线阅读,更多相关<MATLAB课件第八章线性代数基础(15页珍藏版)>请在人人文库网上搜索. 1.第八章 线性代数基础1. ...

  8. 数值分析的matlab答案,Matlab作业3(数值分析)答案.doc

    Matlab作业3(数值分析)答案 Matlab作业3(数值分析) 机电工程学院 (院.系) 专业 班 组 学号 姓名 实验日期 教师评定 计算多项式乘法(x2+2x+2)(x2+5x+4). 答: ...

  9. 计算机在材料科学应用主要有,《计算机在材料科学与工程中的应用(专科)》武汉理工大学20春作业二...

    计算机在材料科学与工程中的应用(专科)-作业二 1.[单选题] 下面哪个方程可以用来描述多粒子体系?() 奥鹏作业答案可以联系QQ 76129 6021 A.薛定谔波动方程 B.普朗克公式 C.矩阵力 ...

最新文章

  1. centos7上开启单用户模式
  2. springBoot搭建activiti工作流
  3. linux虚拟机ip地址更改
  4. Python——中国大学MOOC——神经网络与深度学习——Matblotlib绘图基础
  5. C#动态生成html页
  6. 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
  7. python 爬关键词,Python爬虫实战:爬取微博热搜关键词
  8. phpcmsV9 添加内容:如何“增加复选框、下拉菜单”(含案例、截图)- 教程篇
  9. linearLayout和二级菜单联动
  10. [转载] python机器学习库sklearn——参数优化(网格搜索GridSearchCV、随机搜索RandomizedSearchCV、hyperopt)
  11. python开发mbus程序_一种PMBus总线电源模块的控制与实现
  12. Hacker Rank 上的 Even Tree 小议
  13. 中国民用航空飞行学院 - 人事工资薪酬管理系统
  14. 网页版微信为什么打不开连接服务器失败,电脑能上微信,但是打不开网页怎么回事?...
  15. 年轻人,你应该拒绝奶头乐
  16. 统计学-【假设检验】 知识点总结
  17. Android 全仿To圈儿录音界面实现
  18. 通过Java创建Socket 连接到服务器
  19. 独木舟上的旅行java_南阳ACM 题目71:独木舟上的旅行 Java版
  20. CCF A类会议或期刊----近两年对比学习相关论文

热门文章

  1. Invalid bound statement (not found): com.lin.dao.AccountDao.findAll 解决方式之一
  2. RecyclerView 官方分割线
  3. Android Studio模拟器AndroidWifi连接成功但无法访问网络问题
  4. P3373(线段树)
  5. 自学Java day8 项目-零钱通 从jvav到架构师
  6. 温州大学X袋鼠云:高等人才教育建设,如何做到“心中有数”
  7. 高通about.html 文件,高通case提交指南2015Oct(4)(1)
  8. Samba:centos服务器之间相互共享文件夹,可以用win10连接共享文件夹,并可以使用Docker部署
  9. 数学建模【规划模型--线性规划(整数规划、0-1规划)、非线性规划-附:案例分析、奶制品的生产和销售(详细求解过程)】
  10. Scikit Learn-聚类方法