2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19 ... 55  След.

А вам пакет PARI/GP интересен?
Да 83%  83%  [ 58 ]
Нет 6%  6%  [ 4 ]
Не уверен(а) 11%  11%  [ 8 ]
Всего голосов : 70
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение29.07.2018, 20:32 
Аватара пользователя
Как отсортировать (от меньшего значения к большему) в коде вывод последовательностей функции от двух переменных?
Код:
for(i=1, 10, for(j=1, 5, print(i^2+j!)))

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 11:42 
Soul Friend
Код:
S=Set(); for(i=1, 10, for(j=1, 5, S=setunion(S, [i^2+j!]))); print(S)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 12:53 
Аватара пользователя
Спасибо, итого у вас получилось 777 сообщений.
Только что сам решил как сделать, и хотел написать ответ, но вы опередили. Но у меня немного по другому:
Код:
а=vector(50);
for(n=1, 50, for(i=1, 10, for(j=1, 5, a[n]=i^2+j! ; n++)));
vecsort(a)

Но в вашем случае можно не заботиться о размере вектора, и повторений нет.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 19:03 
Я-то думал надо отсортировать матрицу, а не вектор ... С вектором разумеется vecsort решает задачу.
У vecsort есть третий параметр, им можно например исключить дубли.
Чтобы не задавать размер вектора в начале можно использовать concat:
Код:
v=[];for(i=1, 10, for(j=1, 5, v=concat(v,[i^2+j!])));v=vecsort(v)

Soul Friend в сообщении #1329527 писал(а):
и повторений нет.
Таки есть, числа 10 и 124 повторяются дважды. :D

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 19:15 
Аватара пользователя
Soul Friend в сообщении #1329410 писал(а):
Как отсортировать (от меньшего значения к большему) в коде вывод последовательностей функции от двух переменных?
Код:
for(i=1, 10, for(j=1, 5, print(i^2+j!)))

как вариант:
Код:
vecsort(concat(vector(10,i,vector(5,j,i^2+j!))))

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 20:48 
Аватара пользователя
Спасибо, пригодятся все варианты.
Dmitriy40 в сообщении #1329592 писал(а):
Таки есть, числа 10 и 124 повторяются дважды.

У меня все code-ы записаны, у dmd нет повторений.
Для удобства вывода в В-файл испорчу красивый код от maxal:
Код:
b=vecsort(concat(vector(10,i,vector(5,j,i^2+j!))));
for(i=1, 50, print(i, "  ", b[i]))

Сократить бы это всё в одну строчку.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 22:23 
Soul Friend в сообщении #1329617 писал(а):
Сократить бы это всё в одну строчку.

Код:
for(i=1, 50, print(i, "  ", vecsort(concat(vector(10,i,vector(5,j,i^2+j!))))[i]))

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 22:54 
Аватара пользователя
kotenok gav, так можно, но неэфективно. Вектор в цикле будет каждый раз пересчитываться.

Вот ещё вариант кода:
Код:
vecsort(concat(Vec(matrix(10,5,i,j,i^2+j!))))

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 23:35 
Был бы forall/foreach, выполняющийся над вектором для каждого элемента, получилось бы в строчку. Но я ничего подобного в хелпе не нашёл. Если только свою функцию задать ...
PS. Вместо числа 50 в цикле for удобно использовать конструкцию #b, выдающую размер вектора.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 23:43 
Аватара пользователя
Dmitriy40, см. apply()

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 23:55 
Спасибо!!
Вот тогда решение в одну строчку (воспользуюсь Вашим трюком с матрицей как более наглядным), даже два варианта:
Код:
[print1(x," ")|x<-vecsort(concat(Vec(matrix(10,5,i,j,i^2+j!))))];
apply(x->print1(x," "),vecsort(concat(Vec(matrix(10,5,i,j,i^2+j!)))));
Уф, таки получилось и с apply(), но с этими стрелочками туда-сюда фиг разберёшься. :-(

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 00:16 
Аватара пользователя
Dmitriy40, если построчно и с номерами, то
Код:
k=0; [print(k++," ",x)|x<-vecsort(concat(Vec(matrix(10,5,i,j,i^2+j!))))];

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 15:42 
Аватара пользователя
Онлайн калькулятор PARI/GP :
https://pari.math.u-bordeaux.fr/gp.html
Там и справочник есть, только на английском.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 17:11 
Как проверить что натуральное $n=a^b; a,b>1$ т.е. $n$ является степенью (pure power, perfect power)?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 19:17 
wrest
Код:
? ?ispower
ispower(x,{k},{&n}): if k > 0 is given, return true (1) if x is a k-th power, false (0) if not. If k is omitted, return the maximal k >= 2 such that x = n^k is a perfect power, or 0 if no such k exist. If n is present, and the function returns a non-zero result, set n to the k-th root of x.

 
 
 [ Сообщений: 824 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19 ... 55  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group