matlab编程求教,含参变量的方程,给出一系列的参变量的值,求方程相应的解 20
例如求解上述方程,a为参变量,给定a的一系列值如,a=2:50,如何求出相应的解X。若直接给定a等于某个值,得到的X解包含正负实数解和复数解,我限定了只要实数解,得到一正...
例如求解上述方程,a为参变量,给定a的一系列值如,a=2:50,如何求出相应的解X。
若直接给定a等于某个值,得到的X解包含正负实数解和复数解,我限定了只要实数解,得到一正一副,再限定只要其中的正数解,由于正数解都在第一个,我就写了X=(X(1,1)).
但一旦直接在开头写a=2:50,运行就会报错 展开
若直接给定a等于某个值,得到的X解包含正负实数解和复数解,我限定了只要实数解,得到一正一副,再限定只要其中的正数解,由于正数解都在第一个,我就写了X=(X(1,1)).
但一旦直接在开头写a=2:50,运行就会报错 展开
2个回答
展开全部
楼上 @兔子和小强 从理论上进行了分析,下面我从另外的角度进行说明。
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).')
绘图结果与上面第一张图一致。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询