如何在maxima中访问数组中的特定元素?

如何在maxima中访问数组中的特定元素?,maxima,Maxima,在使用solve命令解两个联立非线性方程组后,我得到一个x和y数组,我需要访问该数组中的特定元素 A: 0.500000000000000$ B: 0.709506070053745$ C: 0.242527534593605$ D: 0.719012140107490$ E: 0.357164044380080$ F:-0.505315948652670$ G: 0.181895650945204$ H: 0.300000000000000$ solve([ x^2*(A*y^3

在使用solve命令解两个联立非线性方程组后,我得到一个
x
y
数组,我需要访问该数组中的特定元素

A: 0.500000000000000$
B: 0.709506070053745$
C: 0.242527534593605$
D: 0.719012140107490$
E: 0.357164044380080$
F:-0.505315948652670$
G: 0.181895650945204$
H: 0.300000000000000$  

solve([
    x^2*(A*y^3+B*y-C)-D*x*y^2+E*y^3,
    A*x^2+(x/y^2)*(H*y+G)+F
    ] ,[x,y]),numer;

这里,
x
y
分别包含8个值,我只需要访问第二个元素。

Maxima在这里返回一个结果列表(Maxima数组略有不同)。列表中的每个元素都是一对方程(x=…和y=…)。对于阅读本文的其他人来说,结果如下

 [[x = .06111426947129051, y = .1679154401926679], 
  [x = - 6.026109660574413, y = .3056091599125177], 
  [x = .2909171173159695, y = .4452108480953128], 
  [x = .4561445354339108 %i + 1.180400961416986, 
   y = .8695950265919334 %i + .05136082885038127], 
  [x = 1.180400961416985 - .4561445354339104 %i, 
   y = .05136082885038127 - .8695950265919334 %i], 
  [x = .06097600174281474 %i - 0.77772869099467, 
   y = 0.792517152411182 %i - .5107285531053073], 
  [x = - .06097600174281463 %i - 0.77772869099467, 
   y = - 0.792517152411182 %i - .5107285531053073],
  [x = 0, y = 0]]
现在,从你的问题中,我不确定你是只想要每个
y
坐标,还是想要找到第二个解。对于第二个解决方案,只需使用
[n]
即可获得第n个东西。因此,如果我将上面的列表存储为变量
solns
,我可以使用

(%i12) solns[2];
(%o12)         [x = - 6.026109660574413, y = .3056091599125177]
如果希望每个
y
坐标,则必须映射到列表中。例如,尝试以下方法:

(%i14) map(lambda([pair], rhs(second(pair))), solns);
(%o14) [.1679154401926679,
        .3056091599125177,
        .4452108480953128, 
        .8695950265919334 %i + .05136082885038127,
        .05136082885038127 - .8695950265919334 %i, 
        0.792517152411182 %i - .5107285531053073, 
        - 0.792517152411182 %i - .5107285531053073,
        0]
(我稍微整理了一下输出的格式)。或者你也可以这样做

map(rhs, map(second, solns));
它给出了完全相同的答案,但不需要编写lambda表单