Skandalli писал(а):... А можно как-то все значения var_n убрать в вектор, куда-то еще?
что бы в дальнейшем оперировать только вектором? строить график, например, по нему...
Конечно, можно!
Два варианта решения проблемы:
1) Если для последовательности тех объектов, которые Вы строите, есть явная функция от номера каждого объекта в этой последовательности, то проще всего использовать не циклы, а команду
seq.
Например, построить десяти мерный вектор, элементы которого являются последовательными квадратами натуральных чисел, проще всего так:
<seq(n^2, n=1..10)>;
2) Если же такая простая формула неизвестна, то используется перебор в цикле, обычно с некоторым условием, определяющим Ваши объекты.
Например, нужно построить список 10 первых простых чисел, оканчивающихся на 1.
n:=0: L:=[]:
for k from 2 while n<10 do
if isprime(k) and irem(k, 10)=1 then L:=[op(L), k]: n:=n+1: fi:
od:
L;
[11, 31, 41, 61, 71, 101, 131, 151, 181, 191]
Пояснение к коду. Переменная
n называется счётчиком и позволяет контролировать число шагов. Вначале создаём пустой список
L , а затем на каждом шаге добавляем в него нужный нам объект.
Более сложный пример, требующий вложенных циклов. Нужно составить список 10 первых пифагоровых троек, упорядоченных по возрастанию гипотенузы. Если у двух треугольников гипотенузы равные, то упорядочиваем по возрастанию меньшего катета.
n:=0: L:=[]:
for c while n<10 do
for a to c-2 do
for b from a+1 to c-1 do
if a^2+b^2=c^2 then L:=[op(L), [a,b,c]]: n:=n+1: fi:
od: od: od:
L;
[[3, 4, 5], [6, 8, 10], [5, 12, 13], [9, 12, 15], [8, 15, 17], [12, 16, 20], [7, 24, 25], [15, 20, 25], [10, 24, 26], [20, 21, 29]]