EDA365电子论坛网

标题: 使用roots()显示求解后的多项式,显示输出已经截断 [打印本页]

作者: kekek    时间: 2021-3-24 17:44
标题: 使用roots()显示求解后的多项式,显示输出已经截断
我的代码:3 Y- _/ J0 t6 w+ @  J
clear all
# F7 ]" ?) ]5 G$ G4 Y' s) qsyms xc Rw xt yt b h C; % 定义符号
1 V7 K3 A$ Q' k) f: p8 ]5 }% W2 h* seqn = (xt-xc)^2+(Rw+4*h*xt^2/b^2-h)^2-Rw^2 == 0; % 表达式- [/ l! P7 O; ~- S( t# @7 ^  V( o
col = collect(eqn)            % 合并同类项
& G: j5 ?, `- F# |2 x% zsol = solve(col,xt);          % 求解以xt为自变量得形式( \0 z, {8 q* I
s = vpa(sol,3)                % 限制显示精度) {* Q3 G, H' A; F( b( V
s = roots(sol)                % 显示解
# x- X. @0 C2 k7 b5 J6 l0 A
. i6 j' z% p- _' }, y: H我的想法:
4 v4 X% H5 D1 ~! g0 ^将多项式(xt-xc)^2+(Rw+4*h*xt^2/b^2-h)^2-Rw^2 == 0,将xt提到前面表示为xt=...的形式
  z- Z$ C+ q  v: A. y' e1 m结果显示太长,请问什么原因,还是本来解就这么多,有没有简化的办法,谢谢+ @  `  a4 s  P& v! m

作者: shuddkk    时间: 2021-3-24 18:10
你的写法值得商榷。首先,高次多项式构造的方程,求解析解很困难(五次以上没有求根公式,你这个是四次的也很麻烦);然后,你这个方程里面很多变量都没有给定具体数值,用vpa也顶多在系数、幂次上的有确切数值的地方有些效果,对于未赋值的那些变量是不会有效果的;最后,你写的这个roots(sol)根本就不对,这等于是"将sol(实际为一元四次方程的四个根)依次作为某一元三次多项式的系数,并求解该一元三次方程的根",这个复杂系数的方程的根,除非某些特例,只会更加复杂
作者: 大小的小    时间: 2021-3-24 19:02
来学习一下
作者: llbnmo    时间: 2021-3-25 13:42





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2