使用Mathematica观察多形式根的分布随参数的变化
有两种方式观察多项式的根随着参数变化:(1)直接制作一个小的动态视频;(2)绘制所有根形成的痕迹(locus)。
制作动态视频:
(*Arg-plane plotting routine with plotting range and point size*)
CRPlot[z_List, range_List, size_] :=Module[{r},r = Map[{Re[#], Im[#]} &, z];ListPlot[r, PlotStyle -> PointSize[size],AspectRatio -> 1, PlotRange -> {range, range},PlotRegion -> {{0.05, 0.95}, {0.05, 0.95}}]](* function, to extract complex roots of a polynomial equation*)
PolySolver[poly_] := z /. NSolve[poly == 0, z](*pylynomial: a simple quintic*)
mypoly[z_, \[Lambda]_] := z^5 + z^3 + z^2 + z + \[Lambda];(*to create a movie*)
Manipulate[CRPlot[PolySolver[mypoly[z, \[Lambda]]], {-2, 2}, 0.05],{\[Lambda], 0, 4, 0.2}]
这里有个好处:可以直接观察到根的分布随着参数改变是怎样变化的。
绘制Root Locus:将二维的复数点列延展成一维的复数点列,然后使用CRPLot进行绘制。
CRPlot[Flatten[Table[PolySolver[mypoly[z, \[Lambda]]], {\[Lambda], 0, 4, 0.2}]],{-2, 2}, 0.008]