MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]关于 solve() 的疑问! (https://www.labfans.com/bbs/showthread.php?t=5270)

未注册 2008-11-11 12:16

[求助]关于 solve() 的疑问!
 
为什么同一个方程把 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

回复: [求助]关于 solve() 的疑问!
 
sx=solve('10/3+2*x^3-3*x^2','x');
eval(sx)

halfuder 2008-11-14 05:39

回复: [求助]关于 solve() 的疑问!
 
10\3的问题???是不是涉及到数据类型了啊?


所有时间均为北京时间。现在的时间是 02:57

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.