beyondhxf 发表于 2010-10-22 09:57

如何简化sym型数据

>> syms x
>> m=3.1485580954953 - 0.153713355883619i;
>> m*x
ans =
(886240316601687/281474976710656-692263412279335/4503599627370496*i)*x其实问题很简单,本来m的值是比较简洁的,
m=3.1485580954953 - 0.153713355883619i;
可与x组合成一个sym型数据时,自动变成了分数形式的:
886240316601687/281474976710656-692263412279335/4503599627370496*i
这样可能加大了计算的复杂程度,如何让m*x变成:
(3.1485580954953 - 0.153713355883619i)*x


Happy99 发表于 2010-10-22 10:57

sym不很熟, 刚试了下, 或许vpa可达成LZ要的格式

但个人以为matlab自动变成了分数形式, 一定有其目的
而且不至於加大了计算的复杂程度, 反而更动预设有此可能吧!

rocwoods 发表于 2010-10-22 15:21

向Chaching说的那样,直接vpa(m*x)即可,或者:
syms x
m = sym(3.1485580954953 - 0.153713355883619i,'d');
m*x

ans =

x*(3.1485580954953000798468565335497 - 0.15371335588361900725828945724061*i)

beyondhxf 发表于 2010-10-22 21:06

回复 rocwoods 的帖子

感谢回复。

zhouyang664 发表于 2010-10-22 21:11

>> syms x
>> m=3.1485580954953 - 0.153713355883619i;
>> m*x
ans =
(886240316601687/281474976710656-692263412279335/4503599627370496*i)*x
vpa(ans,10)%10是要保留的位数,
可以help-->vpa
页: [1]
查看完整版本: 如何简化sym型数据