作业帮 > 综合 > 作业

各位大神们,我在用matlab解一个高次方程时出了问题.它只给我返回了一个虚根.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 00:05:55
各位大神们,我在用matlab解一个高次方程时出了问题.它只给我返回了一个虚根.
clc
clear
syms hc1
E0=7.1260;
q=11;
fai=0.9030;
g=9.8;
A=3.76;
f=(hc1+(q^2)/(2*g*(fai^2)*hc1^2))-E0-((1.05*(hc1/2)*(sqrt(1+8*((q^2)/(g*hc1^3)))-1))+(q^2)/(2*g*(1.05*(hc1/2)*(sqrt(1+8*((q^2)/(g*hc1^3)))-1))^2)-A)
hc0=solve(f)
事实上我在用maple求解后发现它有七个根,包括一个实根,事实上我想要的就是那个实根.我用了inline函数把实根找到了,可是想不通为什么这个solve不行,(不要说有定理证明五次以上没解析解……)最重要的是,我想请教一下除了inline把实根找到以外,还可不可以用别的方法啊,最好能显示出七个根那种.谢谢大家啊.
你要精确到多少?
{{hc1 -> -3.17846 - 3.71375 I},
{hc1 -> -3.17846 + 3.71375 I},
{hc1 -> -1.0783 - 0.47485 I},
{hc1 -> -1.0783 + 0.47485 I},
{hc1 -> 1.01888},
{hc1 -> 3.41177 - 2.33841 I},
{hc1 -> 3.41177 + 2.33841 I}}
再问: 恩 是的 是那个实根。。。。想问问用matlab怎么写啊,我用maple与inline找到了实根,但在matlab中不会写可以显示全部的代码。。。
再答: matlab自带引擎直接用solve本来就不能求出所有根,解决方法有两种 1.如果你电脑上同时装了maple(你貌似是装了),那就让matlab使用maple引擎,设置方法和版本有点关系,我不知道你是什么版本 2.如果只想知道实根的话,先用plot先做出函数图象,然后知道大概0点在什么位置,然后用fzero或者fsovle求出实根