2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19, 20  След.

А вам пакет PARI/GP интересен?
Да 85%  85%  [ 44 ]
Нет 4%  4%  [ 2 ]
Не уверен(а) 12%  12%  [ 6 ]
Всего голосов : 52
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение29.07.2018, 20:32 
Аватара пользователя


12/10/16
324
Almaty, Kazakhstan
Как отсортировать (от меньшего значения к большему) в коде вывод последовательностей функции от двух переменных?
Код:
for(i=1, 10, for(j=1, 5, print(i^2+j!)))

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 11:42 


16/08/05
815
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 
Аватара пользователя


12/10/16
324
Almaty, Kazakhstan
Спасибо, итого у вас получилось 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 
Заслуженный участник


20/08/14
5090
Россия, Москва
Я-то думал надо отсортировать матрицу, а не вектор ... С вектором разумеется 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 
Модератор
Аватара пользователя


11/01/06
5346
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 
Аватара пользователя


12/10/16
324
Almaty, Kazakhstan
Спасибо, пригодятся все варианты.
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 


21/05/16
2117
Аделаида
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 
Модератор
Аватара пользователя


11/01/06
5346
kotenok gav, так можно, но неэфективно. Вектор в цикле будет каждый раз пересчитываться.

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

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 23:35 
Заслуженный участник


20/08/14
5090
Россия, Москва
Был бы forall/foreach, выполняющийся над вектором для каждого элемента, получилось бы в строчку. Но я ничего подобного в хелпе не нашёл. Если только свою функцию задать ...
PS. Вместо числа 50 в цикле for удобно использовать конструкцию #b, выдающую размер вектора.

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


11/01/06
5346
Dmitriy40, см. apply()

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.07.2018, 23:55 
Заслуженный участник


20/08/14
5090
Россия, Москва
Спасибо!!
Вот тогда решение в одну строчку (воспользуюсь Вашим трюком с матрицей как более наглядным), даже два варианта:
Код:
[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 
Модератор
Аватара пользователя


11/01/06
5346
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 
Аватара пользователя


12/10/16
324
Almaty, Kazakhstan
Онлайн калькулятор PARI/GP :
https://pari.math.u-bordeaux.fr/gp.html
Там и справочник есть, только на английском.

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 17:11 


05/09/16
4604
Как проверить что натуральное $n=a^b; a,b>1$ т.е. $n$ является степенью (pure power, perfect power)?

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.07.2018, 19:17 
Заслуженный участник


20/08/14
5090
Россия, Москва
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.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 298 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17, 18, 19, 20  След.

Модераторы: Karan, PAV, Toucan, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group