matlab编程求教,含参变量的方程,给出一系列的参变量的值,求方程相应的解

例如求解上述方程,a为参变量,给定a的一系列值如,a=2:50,如何求出相应的解X。

若直接给定a等于某个值,得到的X解包含正负实数解和复数解,我限定了只要实数解,得到一正一副,再限定只要其中的正数解,由于正数解都在第一个,我就写了X=(X(1,1)).
但一旦直接在开头写a=2:50,运行就会报错

楼上 @兔子和小强 从理论上进行了分析,下面我从另外的角度进行说明。

 

1、可以用控制理论里面的根轨迹方法来求出a=2:50时方程根的分布情况:

s=tf('s');
rlocus(s^7/(s^2+1)^7,2:50)

由图可见,对于给定的a值,方程根本就没有实数根,更不要说正数解了。如果把a的范围放大到0~inf的范围,得到完整的根轨迹如下:

rlocus(s^7/(s^2+1)^7)
ylim([-3 3])
axis equal

可见,对于a>0,方程不存在正数根。对于a<0的情况,可以用下面的命令绘图:

rlocus(-s^7/(s^2+1)^7)
ylim([-3 3])
axis equal

可见,只有a<0的时候,方程才可能出现正数解(进一步可以确定,方程存在正数解的要求大约是a<-128)。

 

2、上面用到了控制系统工具箱的rlocus函数,如果未安装该工具箱,或者对根轨迹的概念不熟悉,也可以用roots函数直接求根:

syms a x
f=a*x^7+(x^2+1)^7;
r=arrayfun(@(a){roots(sym2poly(subs(f)))},2:50);
plot(cell2mat(r).')

绘图结果与上面第一张图一致。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-19
该方程的解是 x^2 - a^(1/7)x + 1 = 0 的解。利用二次方程根的公式可直接写出解。
但是,当 a = 2:50 时,Δ<0,方程不存在实数解。本回答被网友采纳