怎么用MATLAB解带参数的一元三次方程 50

解方程:(-8)*(x^3)+9*(x^2)-16*((t)^2)=0X用含有t的代数式表示。其中t的值在0.2左右。我们知道,在0<t<0.25的时候,以上方程有三个实... 解方程:
(-8)*(x^3) + 9*(x^2) - 16* ((t)^2) = 0
X 用含有 t 的代数式表示。
其中t的值在0.2左右。
我们知道,在 0<t<0.25的时候, 以上方程有三个实数解, 其中一个小于零,两个大于零。
以下是我的MATLAB代码:
syms x t;
f = (-8)*(x^3) + 9*(x^2) - 16* (t^2);
w = solve(f,x);
disp(w);

为什么MATLAB得到的含有t三个解:
第一个: 把t = 0.2 带进去, 根号下是负数, 无法计算
第二个: 带有虚数 i
第三个: 带有虚数 i

请问: 如何得到实数解。不要让我直接把t 换成0.2, 我是要用含有t的代数式去别的方程解出t,解出来, t 是不等于0.2 但是很接近0.2的实数。
展开
 我来答
tianxiawulang
推荐于2017-11-27 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2593万
展开全部

提几点想法供参考:

 

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<t<0.25,而是 |t| ≤ sqrt(27/256),对于临界点 t≈0.3248,对应的三个根为 [ 3/4, -3/8, 3/4]。

 

根轨迹分析的基本思路是,令 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能得到实数结果,我还没想太明白。

Sievers分析仪
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
兔子和小强
2015-03-31 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1398万
展开全部
real(sub(w, t, 0.2))

t=0.2代进去后三个解都是实数。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ea116ba
2015-03-31 · TA获得超过1419个赞
知道小有建树答主
回答量:1132
采纳率:87%
帮助的人:295万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式