rankD = 4
polyD =
1.0000 -2.0000 -32.0000 532.0000 595.0000
normD =
16.6958
小结:det、rank、poly、norm分别求出矩阵的行列式、秩、特征多项式以及范数
5 求解下面的线性代数方程,并验证得出的解真正满足原方程。
21?2?3213??7?4??1?90??9153?2??7??7??64?21?2?X???, (b)??X??? (a)???2?2115???1??9153?2??117?????????3213??1?0???2?2115???2?1?答案:
(a).
程序:
A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13]; B=[4;7;-1;0]; X=inv(A)*B
结果: X =
0.4979 0.1445 0.0629 -0.0813 (b)
A=[1 3 2 13;7 2 1 -2;7 15 3 -2; -2 -2 11 5]; B=[9 0;6 4;11 7;-2 -1]; X=inv(A)*B
结果
X =
0.9247 0.4695 0.4140 0.2186 -0.1907 0.0791
0.5550 -0.0987
小结:求矩阵A*B=C,已知A,C求B,则应用逆矩阵来求解即B=(A*(-1))*C
6 假设有一组实测数据 x y 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 2.3201 2.6470 2.9707 3.2885 3.6008 3.9090 4.2147 4.5191 4.8232 5.1275 用最小二乘法拟合,求出相应的二次函数。 答案:
程序
x=0.1:0.1:1;
y=[2.3201 2.6470 2.9707 3.2885 3.6008 3.9090 4.2147 4.5191 4.8232 5.1275]; p=polyfit(x,y,2) 结果: p =
-0.1563 3.2828 1.9967
小结:polyfit是最小二乘拟合的函数,本题说明用最小二乘拟合求得的二次函数为y=-0.1563*x^2+3.2828*x+1.9967
7 考虑线性微分方程
y(4)?3y(3)?3y?4y?5y?u???输入信号u?e?3t?e?5tsin(4t??/3)
方程初值y(0)?1,y(1)(0)?y(2)(0)?1/2,y(3)?0.2,
(1) 试用Simulink搭建起系统的仿真模型,并绘制出仿真结果曲线。
(2) 将给定的微分方程转换成状态方程,并建立S函数,再利用Simulink进行仿真。 答案: (1)
参数设置:
Integrator1,2,3,4:Initial condition分别设置成0.2,0.5,0.5,1 Gain0,1,2, 3:gain 分别设置成3,3,4,5
Sine Wave: Frequency(rad/sec)设置成 4 ;phase(rad)设置成 pi/3
Transfer Fcn :Numerator coefficients设置成 [1] ; Denominator coefficients 设置成[1 5] Transfer Fcn1:Numerator coefficients设置成[1] ; Numerator coefficients设置成[1 3] Add : List of signs 设置成 ++----
仿真模型:
(2)
建立相应的S函数:
function[sys,x0,str,ts]= reds7_2 (t,x,u,flag,A,B,C,D) switch flag case 0
[sys,x0,str,ts]=mdlInitializeSizes(A,D); case 1
sys=mdlDerivatives(t,x,u,A,B); case 3
sys=mdlOutputs(t,x,u,C,D); case {2,4,9}
sys=[]; otherwise
error(['Unhandled flag=',num2str(flag)]); end
function[sys,x0,str,ts]=mdlInitializeSizes(A,D) sizes=simsizes;
sizes.NumContStates=size(A,1); sizes.NumDiscStates=0;
sizes.NumOutputs=size(A,1)+size(D,1); sizes.NumInputs=size(D,2); sizes.DirFeedthrough=1; sizes.NumSampleTimes=1; sys=simsizes(sizes); x0=[1;0.5;0.5;0.2]; str=[]; ts=[-1 0];
function sys=mdlDerivatives(t,x,u,A,B) sys=A*x+B*u;
function sys=mdlOutputs(t,x,u,C,D) sys=[C*x+D*u;x];
由此建立仿真模型
ufcnyreds7_2S-FunctionScopeClockEmbeddedMATLAB Function
仿真曲线:

