登录论坛

查看完整版本 : [求助]关于 solve() 的疑问!


未注册
2008-11-11, 12:16
为什么同一个方程把 0.3 写成 3/10 和 0.3 解出来的结果不一样,而且第一个ans数据类型是结构体,里边还出现了虚数单位 i !! 这是怎么回事?
>> solve('10/3+2*x^3-3*x^2','x')

ans =

-1/6*(153+18*70^(1/2))^(1/3)-3/2/(153+18*70^(1/2))^(1/3)+1/2
1/12*(153+18*70^(1/2))^(1/3)+3/4/(153+18*70^(1/2))^(1/3)+1/2+1/2*i*3^(1/2)*(-1/6*(153+18*70^(1/2))^(1/3)+3/2/(153+18*70^(1/2))^(1/3))
1/12*(153+18*70^(1/2))^(1/3)+3/4/(153+18*70^(1/2))^(1/3)+1/2-1/2*i*3^(1/2)*(-1/6*(153+18*70^(1/2))^(1/3)+3/2/(153+18*70^(1/2))^(1/3))


>> solve('0.3+2*x^3-3*x^2','x')

ans =

-.28951924828608542762680297014191
.36325749109056761357673427729897
1.4262617571955178140500686928429
==================
%=====定义一个函数=====
function U = E_U( E,x)
U = U=E+2*x.^3-3*x.^2;
%========
>>E=0.3;
>>syms x;
>> y=E_U(E,x)

y =

3/10+2*x^3-3*x^2
>>solve(y)
就得到上面的结果,用solve(0.3+2*x^3-3*x^2)正常。

我要在一个循环里边用到 solve(y) 没法一个个改成小数,请问怎么办。
>> solve('10/3+2*x^3-3*x^2','x') 也一样的问题

pslpsl
2008-11-13, 12:07
sx=solve('10/3+2*x^3-3*x^2','x');
eval(sx)

halfuder
2008-11-14, 05:39
10\3的问题???是不是涉及到数据类型了啊?