作业帮 > 综合 > 作业

为什么用matlab算这个会出现复数?

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/29 18:41:54
为什么用matlab算这个会出现复数?
>> syms x u;
v=-19675*(x^2) + 5556.2*x - 109.75;
q=-4.1973*x + 2.1639;
cf=-0.0003*(v-u) + 0.0811;
f=0.5*3.14*0.27*0.001*cf*q*(v-u)^2;
res=int(f,x,0.05,0.18);
b=vpa(res);
solve(b-0.2)
ans =
42.309155108272078569729911709729-125.11218219192134613585563974728*i
42.309155108272078569729911709729+125.11218219192134613585563974728*i
358.08028292832080771770708102234
为什么用matlab算这个会出现复数?
你先看一下你的b
它是一个三次多项式.
理论上它有三个根.
要不然就是三个实根,
要不然就是一个实根和两个共轭的复根.

结果应当没有问题.
再问: 谢谢您的回答,我想要的实根就是两个复数的实数部分,即42.309155108272078569729911709729这个数,请问怎么改能达到这种效果呢?
再答: xx=solve(b-0.2) if isreal(xx(1)) value=real(xx(2)); %如果第一个根是实数的话,取第二个根的实部 else value=real(xx(1)); %如果第一个根是复数的话,取第一个根的实部 end value