- 积分
- 0
- 注册时间
- 2009-5-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 zhaoyan24 于 2009-5-25 09:50 编辑
各位亲爱的大虾!我是matlab编程刚入门的新手,现遇到了非常棘手的问题,就是我在提取一元三次方程解中的实根时遇到了“Conversion to double from sym is not possible“,不知如何解决!请求帮助,不胜感激!程序如下
%其中 t和p是事先赋值好的常量
for i=1:n
t=b+(i-1)*bc; t=t/Tk;
for j=1:nv
p=p0+(j-1)*pb; p=p/Pk; %给t和p赋值,t和p是下面一元三次方程中变量v的系数
syms v
f1=sprintf('3*p*v^3-(8*t+p)*v^2+9*v-3=0');
f1=subs(f1);
v1=solve(f1,v); %求解方程
for k=1:length(v1)
v4(k)=isreal(v1(k));
if v4(k)==1
v3(nv*(i-1)+j)=v1(k,1); %提取实根
else
v3(nv*(i-1)+j)=0;
end
end
end
end
提示错误为“Conversion to double from sym is not possible
Error in ==> state2 at 37 (就是“%提取实根”那一行)
v3(nv*(i-1)+j)=v1(k,1); |
|