查看: 2662|回复: 14|关注: 0

[已解决] 带符号的复数——求取其实部与虚部问题

[复制链接]

新手

7 麦片

财富积分


050


5

主题

46

帖子

0

最佳答案
代码出来以后,z4的只是简单带入s=iw,并没有真正表示实部。
大神,怎么处理呢???
  1. clear all ;
  2. clc;
  3. syms s w Mm Ms C1 C2 C3 C4 C5 C6 Cm Cs K Kc Bc n ; %对符号声明
  4. z=Mm*s^2 + (Cm +C2*Bc)*s + C2*Kc;                      %所求取实部的复数公式
  5. z0=subs( z,s, i*w);                                                   
  6. z1=real(z0)                                                               %求取z公式的实部

  7. z2=-(C4*s*(-Ms*s^2+(Ms*K-C5)*s))/(Ms*s^2+(Ms*K+Cs)*s);%所求取实部的复数公式
  8. z3=subs( z2,s, i*w);
  9. z4=real(z3)                                                                %求取z2公式的实部
复制代码
1555661650(1).png

MATLAB 基础讨论
版块优秀回答者

中级

925 麦片

财富积分


5001500


0

主题

1512

帖子

201

最佳答案
  • 关注者: 36
发表于 2019-4-19 16:44:15 | 显示全部楼层
关键你用的是符号运算呀!你定义的Mm等参数是复数还是实数都不知道呀!如果imag(w*(Cm+Bc*C2))解出来是个实数呢!

MATLAB 基础讨论
版块优秀回答者

中级

925 麦片

财富积分


5001500


0

主题

1512

帖子

201

最佳答案
  • 关注者: 36
发表于 2019-4-19 16:46:35 | 显示全部楼层 |此回复为最佳答案
clear all ;
clc;
syms s
syms w Mm Ms C1 C2 C3 C4 C5 C6 Cm Cs K Kc Bc n real; %对符号声明
z=Mm*s^2 + (Cm +C2*Bc)*s + C2*Kc;%所求取实部的复数公式
z0=subs( z,s, i*w);
z1=real(z0)%求取z公式的实部

z2=-(C4*s*(-Ms*s^2+(Ms*K-C5)*s))/(Ms*s^2+(Ms*K+Cs)*s);%所求取实部的复数公式
z3=subs( z2,s, i*w);
z4=real(z3)%求取z2公式的实部
不知道这是不是你想解的,如果这些参数中存在实数,你需要另外说明,‘’syms 参数名 real‘’形式就好了

新手

7 麦片

财富积分


050


5

主题

46

帖子

0

最佳答案
 楼主| 发表于 2019-4-19 16:56:24 | 显示全部楼层

大哥威武,我明白了。你的是对的。谢谢帮助。

MATLAB 基础讨论
版块优秀回答者

中级

925 麦片

财富积分


5001500


0

主题

1512

帖子

201

最佳答案
  • 关注者: 36
发表于 2019-4-19 17:06:49 | 显示全部楼层
moona 发表于 2019-4-19 16:56
大哥威武,我明白了。你的是对的。谢谢帮助。

麻烦给个最佳答案,你的支持是我的动力!可以加我qq:1336965895,有问题可以找我

新手

7 麦片

财富积分


050


5

主题

46

帖子

0

最佳答案
 楼主| 发表于 2019-4-23 12:14:26 | 显示全部楼层
WarnerChang 发表于 2019-4-19 17:06
麻烦给个最佳答案,你的支持是我的动力!可以加我qq:1336965895,有问题可以找我 ...

clear all;
syms s w Mm Ms C1 C2 C3 C4 C5 C6 Cm Cs K Kc Bc n  real ;
T=1;
z8=(C3*C4*exp(-s*T)*s*(-Ms*s^2+(Ms*K-Cs)*s))/(Ms*s^2+(Ms*K+Cs)*s);
z10=real(z9)%求取z8的实部

运行结果:z10 =

imag((C3*C4*w*exp(-w*i)*(w*(Cs - K*Ms)*i - Ms*w^2))/(w*(Cs + K*Ms)*i - Ms*w^2))

大哥,这个为啥又带imag?如果把z8分母去掉,运行结果是可以得到准确的实部,加上z8的分母,运行结果就是带imag···

MATLAB 基础讨论
版块优秀回答者

中级

925 麦片

财富积分


5001500


0

主题

1512

帖子

201

最佳答案
  • 关注者: 36
发表于 2019-4-23 14:42:22 | 显示全部楼层
moona 发表于 2019-4-23 12:14
clear all;
syms s w Mm Ms C1 C2 C3 C4 C5 C6 Cm Cs K Kc Bc n  real ;
T=1;

(w*(Cs + K*Ms)*i - Ms*w^2))你看他的分母是带有i的,不是纯实数

新手

7 麦片

财富积分


050


5

主题

46

帖子

0

最佳答案
 楼主| 发表于 2019-4-23 15:14:55 | 显示全部楼层
WarnerChang 发表于 2019-4-23 14:42
(w*(Cs + K*Ms)*i - Ms*w^2))你看他的分母是带有i的,不是纯实数

对,不过我的目的就是为了求取整个Z8公式的实部(破涕而笑)。matlab运行出来就带imag,导致运算不完整。我应该怎么解决这个问题?

MATLAB 基础讨论
版块优秀回答者

中级

925 麦片

财富积分


5001500


0

主题

1512

帖子

201

最佳答案
  • 关注者: 36
发表于 2019-4-23 15:51:29 | 显示全部楼层
moona 发表于 2019-4-23 15:14
对,不过我的目的就是为了求取整个Z8公式的实部(破涕而笑)。matlab运行出来就带imag,导致运算不完整。 ...

这个好像不能整,因为你可以发现你的分子中含有exp(-w*i)这就是一个欧拉公式呀!

新手

7 麦片

财富积分


050


5

主题

46

帖子

0

最佳答案
 楼主| 发表于 2019-4-23 16:52:24 | 显示全部楼层
WarnerChang 发表于 2019-4-23 15:51
这个好像不能整,因为你可以发现你的分子中含有exp(-w*i)这就是一个欧拉公式呀! ...

欧拉可以分解为(cos(t)+i*sin(t)),当z8不含分母时,求实部很顺利,当其含分母时,求实部则为imag。
好奇怪matlab为啥不能求出实部(含分母时)···
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表