2015-09-07 7 views
0

У меня есть список корней, и я хочу построить реальные/мнимые части. Если s=allroots(), r=realpart() и i=imagpart(), все с makelist(). Так как length(s) может получить ... длинный, есть ли способ построить точку за точкой и пронумеровать? Собственно, нумерационная часть меня больше всего волнует. Я могу просто использовать points(r,i) и выполнить эту работу, но я хотел бы знать их происхождение до и после некоторых алгоритмов сортировки. Не всегда необходимо строить все баллов, я могу распечатать до номер, но я должен быть в состоянии видеть их порядок сортировки.(wx) Максимальный график по точкам, пронумерованный

Я попытался multiplot_mode, но он не работает:

multiplot_mode(wxt)$ 
for i:1 thru length(s) do draw2d(points([r[i]],[i[i]]))$ 
multiplot_mode(none)$ 

Все, что я получаю один пункт. Теперь, если это должно сработать, полезно использовать draw2dlabel(["label",posx,posy]), но могу ли я как-то оценить i в цикле for внутри ""?

Или, есть ли другой способ сделать это? С Октавом? или Scilab? Я на Linux, кстати.


Просто чтобы быть ясно, вот что я в настоящее время сделать: (я не могу добавлять изображения, вот ссылка: i.stack.imgur.com/hNYZF.png)

... и вот код wxMaxima:

ptest:sortd(pp2); length(ptest); 
draw2d(proportional_axes=xy,xrange=[sort(realpart(s))[1]-0.1,sort(realpart(s))[length(s)]+0.1], 
yrange=[sort(imagpart(s))[1]-0.1,sort(imagpart(s))[length(s)]+0.1],point_type=0, 
label(["1",realpart(ptest[1]),imagpart(ptest[1])]),points([realpart(ptest[1])],[imagpart(ptest[1])]), 
label(["2",realpart(ptest[2]),imagpart(ptest[2])]),points([realpart(ptest[2])],[imagpart(ptest[2])]), 
label(["3",realpart(ptest[3]),imagpart(ptest[3])]),points([realpart(ptest[3])],[imagpart(ptest[3])]), 
label(["4",realpart(ptest[4]),imagpart(ptest[4])]),points([realpart(ptest[4])],[imagpart(ptest[4])]), 
label(["5",realpart(ptest[5]),imagpart(ptest[5])]),points([realpart(ptest[5])],[imagpart(ptest[5])]), 
label(["6",realpart(ptest[6]),imagpart(ptest[6])]),points([realpart(ptest[6])],[imagpart(ptest[6])]), 
label(["7",realpart(ptest[7]),imagpart(ptest[7])]),points([realpart(ptest[7])],[imagpart(ptest[7])]), 
label(["8",realpart(ptest[8]),imagpart(ptest[8])]),points([realpart(ptest[8])],[imagpart(ptest[8])]), 
label(["9",realpart(ptest[9]),imagpart(ptest[9])]),points([realpart(ptest[9])],[imagpart(ptest[9])]), 
label(["10",realpart(ptest[10]),imagpart(ptest[10])]),points([realpart(ptest[10])],[imagpart(ptest[10])]), 
label(["11",realpart(ptest[11]),imagpart(ptest[11])]),points([realpart(ptest[11])],[imagpart(ptest[11])]), 
label(["12",realpart(ptest[12]),imagpart(ptest[12])]),points([realpart(ptest[12])],[imagpart(ptest[12])]),/* 
label(["13",realpart(ptest[13]),imagpart(ptest[13])]),points([realpart(ptest[13])],[imagpart(ptest[13])]), 
label(["14",realpart(ptest[14]),imagpart(ptest[14])]),points([realpart(ptest[14])],[imagpart(ptest[14])]),*/ 
color=red,point_type=circle,point_size=3,points_joined=false,points(realpart(pp2),imagpart(pp2)),points_joined=false, 
color=black,key="",line_type=dots,nticks=50,polar(1,t,0,2*%pi))$

Это только для 14 нулей. Для более высоких заказов это было бы очень болезненно.

ответ

1

Я понимаю, что проблема в том, что вы хотите автоматически построить все points([realpart(...), imagpart(...)]). Мой совет состоит в том, чтобы составить список выражений points через makelist, затем append, который перечислит любые другие аргументы построения графика, затем apply функцию построения графика в прилагаемый список. Что-то вроде:

my_labels_and_points : 
    apply (append, 
      makelist ([label ([sconcat (i), realpart (ptest[i]), imagpart (ptest[i])]), 
         points ([realpart (ptest[i])], [imagpart (ptest[i])])], 
        i, 1, length (ptest))); 
all_plot_args : append ([proptional_axes=..., ...], my_labels_and_points, [color=..., key=..., ...]); 
apply (draw2d, all_plot_args); 

Общая идея заключается в том, чтобы создать список планировавших аргументов, а затем применить функцию построения графиков для этого.

+0

Это выглядит очень многообещающе. Я попробую, но только завтра, когда я вернусь с обновлениями. –

+0

Это работает! Я сделал это в функции, вот код (возможно, детский):

func(u,n):=block(, pnts:apply(append, makelist([ label([sconcat(i),realpart(u[i]),imagpart(u[i])]), points([realpart(u[i])],[imagpart(u[i])]) ],i,1,n)), args:append([proportional_axes=xy,xrange=[sort(realpart(s))[1]-0.1,sort(realpart(s))[length(s)]+0.1], yrange=[sort(imagpart(s))[1]-0.1,sort(imagpart(s))[length(s)]+0.1],point_type=0],pnts), return(apply(draw2d,args)))$
и вот фото: https://i.stack.imgur.com/njV0Y.png Спасибо, я не могу проголосовать, но я буду отмечать он как выбранный. :-) –

+0

'pre' похоже не работает. Во всяком случае, это тест для изображения: func (makelist (rhs (allroots (float (sum (x^k, k, 0,100))) [k]), k, 1,100), 40). Это нужно несколько секунд, чтобы думать, но это работает! –

 Смежные вопросы

  • Нет связанных вопросов^_^