已知变量a、b、c,a=(b=4)+(c=6)、a+=a-=a*a,分别计算两个表达式中a的值并输出。
时间: 2023-03-28 14:02:31 浏览: 286
根据运算符优先级,先计算括号内的赋值运算,b被赋值为4,c被赋值为6,所以a的值为6。然后再计算a-=a*a,即a=a-a*a,a的值为-30。所以第一个表达式中a的值为-30。
第二个表达式中,先计算a*a,即6*6,a的值变为36。然后再计算a-=36,即a=a-36,a的值为-30。所以第二个表达式中a的值也为-30。
相关问题
已知int a=’R’;则正确的表达式是() A. a%10 B. a=int(3e2) C. 2*a=a++ D. a=a+a=a+3
正确的表达式是 B. a=int(3e2)。
根据题意,将字符 'R' 赋值给 int 类型的变量 a,会将字符的 ASCII 码值 82 赋值给 a。因此,选项 A 中的 a%10 的结果为 2,选项 C 中的 2*a=a++ 的结果为 false,选项 D 中的 a=a+a=a+3 的结果为 85。
而选项 B 中的 int(3e2) 表示将 3*10^2 转换为 int 类型,即 300。因此,选项 B 是正确的表达式。
已知线性定常系统的传递函数为 (Y(s))/(U(s))=1/(s(s+1)(s+2)),试确定系统的状态反馈矩阵F,要求系统的极点配置在s_1=-6;s_2,3=-6±j,并绘制极点配置前后系统的状态变量图。
首先,我们需要将传递函数转化为状态空间模型。设系统的状态向量为x=[x1 x2 x3],则系统的状态空间模型为:
dx/dt = Ax + Bu
y = Cx + Du
其中,A、B、C、D分别为系统的状态矩阵、输入矩阵、输出矩阵和直接传递矩阵,它们可以通过传递函数求解得到。
传递函数可以表示为:
Y(s)/U(s) = 1/(s(s+1)(s+2))
= A/(s-s1) + B/(s-s2) + C/(s+1) + D/(s+2)
其中,s1=-6,s2=-6±j3为所要求的极点。
通过分式分解,可以求得A、B、C、D的值:
A = -1/12
B = -1/4 + j*sqrt(3)/12
C = -1/4 - j*sqrt(3)/12
D = 1/2
将A、B、C、D代入状态空间模型中,得到:
dx/dt = [[0 1 0],[-2 0 2],[-1 -3 -2]]x + [[0],[0],[1]]u
y = [1 0 0]x
为了使系统的极点配置在s1=-6;s2,3=-6±j,需要设计状态反馈矩阵F。由于A矩阵是3阶的,因此需要选择一个3维的列向量F=[f1 f2 f3],使得A-BF的特征值为所要求的极点。
根据极点配置的要求,可得:
det(sI-A+BF) = (s+6)^2*(s+6-j3)*(s+6+j3)
det([-s -1 0; 2 -s-2 -2; 1 -3 -2-s] + [f1;f2;f3]*[0 0 1]) = (s+6)^2*(s+6-j3)*(s+6+j3)
通过解方程,可以求得F的值:
F = [18 -24 -7]
将F代入状态空间模型中,得到:
dx/dt = [[0 1 0],[-2 0 2],[-1 -3 -2]]x + [[0],[0],[1]]u - [[18],[-24],[-7]]y
y = [1 0 0]x
接下来,我们可以绘制极点配置前后系统的状态变量图。这里只绘制了状态变量x1和x2。
极点配置前:
![Before Pole Placement](https://i.imgur.com/8eLvg9c.png)
极点配置后:
![After Pole Placement](https://i.imgur.com/8dYu4tq.png)
可以看到,极点配置后系统的状态响应更加快速,且没有过冲。
阅读全文