xueeux 发表于 2009-1-8 06:47

求教:怎么将方程解出的数值赋值给另外一个变量

怎么将方程解出的数值赋值给另外一个变量?

例如:求解方程x^2+3*x+1=0
求解出两个解为:

ans =

1/2*5^(1/2)-3/2
-3/2-1/2*5^(1/2)

变换为数值形式:

str2num1/2*5^(1/2)-3/2
str2num -3/2-1/2*5^(1/2)

把这个两个字符串的数值形式赋值给变量x1和x2

现在的问题是,怎么样编辑好多句程序,实现自动赋值呢?

简单的小问题,望大家不吝赐教。

ChaChing 发表于 2009-1-8 09:56

回复 楼主 xueeux 的帖子

不很确定LZ要的
aa=solve('x^2+3*x+1=0')
bb=double(aa)

xueeux 发表于 2009-1-8 11:18

对对,就是这样的,谢谢chaching,我一直用str2num命令来着,郁闷

另外,在上面的式中bb是两个获多个值,怎么取其中的一个呢?

这里得到的bb是一个是一个数组吗?

ChaChing 发表于 2009-1-8 11:36

回复 板凳 xueeux 的帖子

数组是array吗? 抱歉有些术语, 我还不熟! bb is double array
取其中的第二个 bb(2), 这个很基础!

xueeux 发表于 2009-1-8 11:54

:@L 不好意思,本人matlab菜鸟,多谢指教。

xueeux 发表于 2009-1-8 14:23

我又试了一下,我计算的程序中,解出的两个字符串的数值是:

aaa =

22395957575131475102842832156547350528/522134283751219306779950651895245625+2251799813685248/522134283751219306779950651895245625*82223709700354724578836288622481514469054321^(1/2)
22395957575131475102842832156547350528/522134283751219306779950651895245625-2251799813685248/522134283751219306779950651895245625*82223709700354724578836288622481514469054321^(1/2)

当我用double命令时,得到

97    97    97

而用str2num才得到正确的数值,分别得到
81.9993
3.7869

这个为什么呢?

ChaChing 发表于 2009-1-8 15:07

回复 6楼 xueeux 的帖子

对symbolic个人也是菜鸟!
LZ前面部分的程序没给, 我没法试!

xueeux 发表于 2009-1-8 21:26

我直接用
double aaa 就得到97,97,97的结果
用double (aaa)就得到正确的结果了
不知道咋回事
:@L

ChaChing 发表于 2009-1-8 21:52

回复 8楼 xueeux 的帖子

LZ刚好试到一些需注意的地方, 我试着说明!
aa=solve('x^2+3*x+1=0');
若aa为sym object,则bb=double(aa)为sym转换函数
若下double aa它的意思等同double('aa'), 为将aa字元转变为ascii码(若我没记错!)
LZ可以逐行试试
double aa
double bb
double cc

[ 本帖最后由 ChaChing 于 2009-1-9 08:07 编辑 ]

ch_j1985 发表于 2009-1-8 23:19

回复 8楼 xueeux 的帖子

LZ是不是把C语言和Matlab混淆啦
doc double

ChaChing 发表于 2009-1-9 13:23

回复 8楼 xueeux 的帖子

看看希望对LZ有用
http://forum.vibunion.com/forum/viewthread.php?tid=75501&extra=&frombbs=1

xueeux 发表于 2009-1-17 10:32

看了chaching的帖子,讲的非常好,谢谢
建议chaching把matlab里的问题解决方法出本书,肯定热卖:lol

ch_j1985 发表于 2009-1-17 14:19

回复 12楼 xueeux 的帖子

振动论坛有关于Matlab的FAQ
页: [1]
查看完整版本: 求教:怎么将方程解出的数值赋值给另外一个变量