2012-02-01 98 views
1

使用solve命令解決兩個同時發生的非線性問題後,我得到一個x和y的數組,並且需要訪問此數組中的特定元素。如何訪問maxima數組中的特定元素?

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

解決( [X^2 *(A * Y^3 + B * YC)-D * X * Y^2 + E * Y^3,A * X^2 +(X/Y^2)*(H * Y + G)+ F],[X,Y]),NUMER; 在這裏,'x'和'y'每個包含8個值,我需要訪問只說第二個元素。

回答

2

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表單。