怎么用MATLAB解带参数的一元三次方程
答案:3 悬赏:80 手机版
解决时间 2021-11-08 09:04
- 提问者网友:泪痣哥哥
- 2021-11-07 23:45
怎么用MATLAB解带参数的一元三次方程
最佳答案
- 五星知识达人网友:蕴藏春秋
- 2021-11-08 00:09
提几点想法供参考:
1、之所以代入t=0.2会得到有虚部的解,是由数值计算误差造成的。你可以试试:
>> syms x t;
>> f = (-8)*(x^3) + 9*(x^2) - 16* (t^2);
>> w = solve(f,x);
>> double(subs(w,sym(0.2)))
ans =
1.0528
-0.2419
0.3141此种情况下,0.2是以符号量的形式代入之后再转换为double类型,计算就不会有数值误差。
2、可以用根轨迹分析的方法得出,方程有三个实数解的条件并非0
根轨迹分析的基本思路是,令 K= t^2,则可以用
s=tf('s');
rlocus(16/(8*s^3-9*s^2))画出方程根随K=0→∞的变化情况,而由根轨迹两个分支的分离点坐标可以求出K,进而得到t。
3、要想得到实根的表达式,可以试一下real(w):
>> subs(real(w),0.2)
ans =
1.0528
-0.2419
0.3141
>> subs(real(w),0.32)
ans =
0.8216
-0.3701
0.6735注意,这和楼上的 real(sub(w, t, 0.2)) 完全不是一回事。real(w) 得到的表达式似乎更复杂一些,但究竟为什么subs能得到实数结果,我还没想太明白。
1、之所以代入t=0.2会得到有虚部的解,是由数值计算误差造成的。你可以试试:
>> syms x t;
>> f = (-8)*(x^3) + 9*(x^2) - 16* (t^2);
>> w = solve(f,x);
>> double(subs(w,sym(0.2)))
ans =
1.0528
-0.2419
0.3141此种情况下,0.2是以符号量的形式代入之后再转换为double类型,计算就不会有数值误差。
2、可以用根轨迹分析的方法得出,方程有三个实数解的条件并非0
根轨迹分析的基本思路是,令 K= t^2,则可以用
s=tf('s');
rlocus(16/(8*s^3-9*s^2))画出方程根随K=0→∞的变化情况,而由根轨迹两个分支的分离点坐标可以求出K,进而得到t。
3、要想得到实根的表达式,可以试一下real(w):
>> subs(real(w),0.2)
ans =
1.0528
-0.2419
0.3141
>> subs(real(w),0.32)
ans =
0.8216
-0.3701
0.6735注意,这和楼上的 real(sub(w, t, 0.2)) 完全不是一回事。real(w) 得到的表达式似乎更复杂一些,但究竟为什么subs能得到实数结果,我还没想太明白。
全部回答
- 1楼网友:狂恋
- 2021-11-08 01:09
- 2楼网友:西风乍起
- 2021-11-08 00:18
real(sub(w, t, 0.2))
t=0.2代进去后三个解都是实数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯