chenwenli 发表于 2009-11-20 13:14

定义实数符号变量,求符号运算结果,结果是实部+虚步的形式,请高手帮忙!

符号运算,a b是两个实数,求(a+b*j)*(a+b*j)的结果,
要运算结果是:(a*a-b*b)+2*a*b*j的形式。即实部+虚部的形式。
求高手们帮忙解决一下,谢谢! 最好把matlab程序写出来!

syms a b real
d=(a+i*b)*(a+i*b), d=simplify(d)

d =
(a+i*b)^2

d =
(a+i*b)^2

这个是我编的程序,高手们看看怎么改才能得出实部+虚部的形式。 谢谢

[ 本帖最后由 ChaChing 于 2009-11-20 14:07 编辑 ]

ChaChing 发表于 2009-11-20 13:59

试不出LZ要的, 但可以取出实部及虚部
syms a b
d=(a+i*b)*(a+i*b), dd=expand(d); real(dd),imag(dd)

[ 本帖最后由 ChaChing 于 2009-11-20 14:02 编辑 ]

friendchj 发表于 2009-11-21 01:39

可以通过sym2str函数(可以在官网下载:http://www.mathworks.com/matlabcentral/fileexchange/19217-sym2str)实现:
clc
clear
syms a b real
d=(a+i*b)*(a+i*b);
d=expand(d);
disp()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-b.^2+a.^2+i*2.*a.*b
呵呵,有点复杂。感觉分别显示实部和虚部也挺好

ChaChing 发表于 2009-11-21 16:59

奇怪! 昨天明明试过 dd=expand(d); real(dd)
记得可以跑出a^2 - b^2
怎今天试都是
ans =
a^2/2 + i*a*b - b^2/2 + conj(a)^2/2 - i*conj(a)*conj(b) - conj(b)^2/2

chenwenli 发表于 2009-11-30 09:28

回复 板凳 friendchj 的帖子

谢谢你的指点!

chenwenli 发表于 2009-11-30 09:35

回复 地板 ChaChing 的帖子

谢谢你的指点!

ChaChing 发表于 2009-11-30 13:52

原帖由 ChaChing 于 2009-11-21 16:59 发表 http://www.chinavib.com/forum/images/common/back.gif
奇怪! 昨天明明试过 dd=expand(d); real(dd)
记得可以跑出a^2 - b^2
怎今天试都是
ans =
a^2/2 + i*a*b - b^2/2 + conj(a)^2/2 - i*conj(a)*conj(b) - conj(b)^2/2
刚又看了下, 原来是复制少个real!
syms a b real
d=(a+i*b)*(a+i*b), dd=expand(d); real(dd),imag(dd)
页: [1]
查看完整版本: 定义实数符号变量,求符号运算结果,结果是实部+虚步的形式,请高手帮忙!