EDA365电子论坛网
标题:
使用roots()显示求解后的多项式,显示输出已经截断
[打印本页]
作者:
kekek
时间:
2021-3-24 17:44
标题:
使用roots()显示求解后的多项式,显示输出已经截断
我的代码:
3 Y- _/ J0 t6 w+ @ J
clear all
# F7 ]" ?) ]5 G$ G4 Y' s) q
syms xc Rw xt yt b h C; % 定义符号
1 V7 K3 A$ Q' k) f: p8 ]5 }% W2 h* s
eqn = (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% z
sol = 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