慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。
- matlab : R2018a 64bit
- os : win7
- type setting : markdown
- blog : https://blog.csdn.net/yushaopu
- github : https://github.com/GratefulHeartCoder
code
clear
clc
% 制作时间:2016-09-26
% 制作人:心少朴
% 制作原因:自控原理留了作业,写完了后,想验证一下自己写的对不对,于是写了这个小代码
% 这个代码,没有捕捉异常的工序,所以请使用的时候,小心点哦。
syms s t tao;
%因为u(tao)是单位阶跃响应,所以在t>0时,u=1
u=1;
%A[1 0;1 1] B[1;1] X0[1;0]
%输入已知条件
A=input('请输入题目已知的A矩阵,如果不会输入,请参考模板:一个三行三列[1 2 3;4 5 6;7 8 9]:\n');
fprintf('A矩阵是:');
A
B=input('请输入题目已知的B矩阵\n')
fprintf('B矩阵是:');
B
X0=input('请输入题目已知的X0矩阵\n')
fprintf('X0矩阵是:');
X0
%计算e^At
sizeOfA=size(A);
fprintf('s*I-A的结果:');
sI_A=s*eye(sizeOfA(1))-A
fprintf('对s*I-A求逆矩阵:\n');
fprintf('行列式为:')
hOfsI_A=det(sI_A)
fprintf('伴随矩阵为:')
bOfsI_A=det(sI_A)*inv(sI_A)
fprintf('逆矩阵为:')
nOfsI_A=inv(sI_A)
fprintf('对sI_A的逆矩阵进行拉普拉斯逆变换的结果是:');
lnOfsI_A=ilaplace(nOfsI_A)
fprintf('e^At为:')
lnOfsI_A
%计算e^A(t-tao)
fprintf('e^A(t-tao)为:')
t_taoOfEJuzhen=subs(lnOfsI_A,t,t-tao)
fprintf('\n\n最后的结果是:')
x_t=lnOfsI_A*X0+int(t_taoOfEJuzhen*B,tao,0,t)
result
请输入题目已知的A矩阵,如果不会输入,请参考模板:一个三行三列[1 2 3;4 5 6;7 8 9]:
[1 0;1 1]
A矩阵是:
A =
1 0
1 1
请输入题目已知的B矩阵
[1;1]
B =
1
1
B矩阵是:
B =
1
1
请输入题目已知的X0矩阵
[1;0]
X0 =
1
0
X0矩阵是:
X0 =
1
0
s*I-A的结果:
sI_A =
[ s - 1, 0]
[ -1, s - 1]
对s*I-A求逆矩阵:
行列式为:
hOfsI_A =
(s - 1)^2
伴随矩阵为:
bOfsI_A =
[ s - 1, 0]
[ 1, s - 1]
逆矩阵为:
nOfsI_A =
[ 1/(s - 1), 0]
[ 1/(s - 1)^2, 1/(s - 1)]
对sI_A的逆矩阵进行拉普拉斯逆变换的结果是:
lnOfsI_A =
[ exp(t), 0]
[ t*exp(t), exp(t)]
e^At为:
lnOfsI_A =
[ exp(t), 0]
[ t*exp(t), exp(t)]
e^A(t-tao)为:
t_taoOfEJuzhen =
[ exp(t - tao), 0]
[ exp(t - tao)*(t - tao), exp(t - tao)]
最后的结果是:
x_t =
2*exp(t) - 1
2*t*exp(t)
>>
resource
感恩曾经帮助过 心少朴 的人。
matlab优秀,值得学习。基础知识 + 专业知识 + matlab = ?
注:此文是自学笔记所生,质量中下等,故要三思而后行。新手到此,不可照搬,应先研究其理象数,待能变通之时,自然跳出深坑。