2014 dxdy logo

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

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




На страницу Пред.  1, 2, 3, 4, 5 ... 55  След.

А вам пакет PARI/GP интересен?
Да 83%  83%  [ 58 ]
Нет 6%  6%  [ 4 ]
Не уверен(а) 11%  11%  [ 8 ]
Всего голосов : 70
 
 
Сообщение10.03.2009, 00:22 
Аватара пользователя
maxal, а у вас не найдется скомпилированного под Windows gp2c? Что-то я не пойму, как скрестить его исходники с офсайта и компилятор Dev-C++.

 
 
 
 
Сообщение13.03.2009, 17:26 
Аватара пользователя
Бодигрим
Я не работаю с виндой. А компилировать gp2c под виндой разработчики советуют с помошью cygwin или colinux.

 
 
 
 
Сообщение20.04.2009, 18:22 
maxal
Здравствуйте! Мне очень понравились ваши лекции.Я пишу курсовую работу : характеристика pari gp, сравнение с Maple. Если у вас есть какая либо, русскоязычная инф. по этому вопросу прошу помогите!

 
 
 
 
Сообщение26.04.2009, 16:06 
Аватара пользователя
Интересно было бы узнать о чтении из файла и записи в файл. Думаю обработать с помощью PARI большой объём данных.

К вопросу, зачем он нужен: он в десятки и сотни раз быстрее многих других калькуляторов. Интегралы и т.п. можно считать в Mathematica, а теорию чисел - в PARI.

Так что если есть Mathematica и PARI, то больше никаих Maple-ов не нужно :-)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение28.10.2009, 16:19 
Аватара пользователя
Droog_Andrey в сообщении #208364 писал(а):
Интересно было бы узнать о чтении из файла и записи в файл.

Вывод в файл включается командой \l - например:
Код:
? \l result.txt

При этом все, что печатается на экране будет дублироваться в файл result.txt в той же директории, откуда запущен gp. Можно указать файл с полным путем, если хочется его видеть в другом месте.
Выключается вывод в файл той же командой, но без аргумента:
Код:
? \l


Чтение из файла осуществляется командой \r, при этом файл сразу же интерпретируется в PARI/GP, поэтому его содержимое должно быть в синтаксисе PARI/GP (желательно без ошибок - в противном случае GP ругнется).
Например, файл myprog.gp может содержать следующий текст:
Код:
Q = [3,4,101];

{ runme(s) = my(t);
  for(j=s,#Q,
    t = Q[j];
    print(factor(t));
); }

В этом файле определяется массив Q и функция runme(). Многострочные команды нужно заключать в { ... }.

Загрузка и работа с содержимым этого файла в PARI/GP осуществляется, например, так:
Код:
? \r myprog.gp
? runme(2)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение28.10.2009, 16:51 
Аватара пользователя
Спасибо! :)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение03.03.2010, 01:43 
Аватара пользователя
Существуют ли пакеты, позволяющие решать в PARI/GP простейшие задачи линейного программирования?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение03.03.2010, 05:07 
Аватара пользователя
Бодигрим в сообщении #294075 писал(а):
Существуют ли пакеты, позволяющие решать в PARI/GP простейшие задачи линейного программирования?

Пакетов не знаю, но линейная алгебра (в том числе и целочисленная) в PARI/GP достаточно хорошо развита, поэтому простейшие задачи можно решать и без пакетов.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.09.2010, 19:27 
Установить число предвычесленных простых в 10 миллиардов не удается.
Код:
? default(primelimit,10^10)

Программа выдает ошибку: Integer too large.

Как обойти это ограничение?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.09.2010, 19:41 
Аватара пользователя
e7e5 в сообщении #356162 писал(а):
Как обойти это ограничение?

Это можно обойти только использованием 64-битной версии PARI/GP на 64-битной платформе.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.09.2010, 19:46 
maxal в сообщении #356169 писал(а):
Это можно обойти только использованием 64-битной версии PARI/GP на 64-битной платформе.


Какое ограничение по простым числам в этом случае?
И как можно 64-битную приспособить к 32-битной системе? может быть виртуальная машина поможет?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.09.2010, 20:00 
Аватара пользователя
e7e5 в сообщении #356172 писал(а):
Какое ограничение по простым числам в этом случае?

Должно влезать в 32 бита, то есть быть меньше $2^{32} = 4294967296$.
e7e5 в сообщении #356172 писал(а):
И как можно 64-битную приспособить к 32-битной системе?

Вероятнее всего, никак.

-- Sat Sep 25, 2010 12:34:38 --

e7e5
Впрочем, последовательные простые (любого размера) можно получать "на лету", пользуясь, например, nextprime():

Код:
? m=0; while(m<100, m=nextprime(m+1); print1(m,", ") )
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101,

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.09.2010, 21:16 
Можно ли сказать, сколько потребуется оперативки для формирования в памяти 10^11 простых? У меня при любом размере parisize ошибка. И сколько примерно времени это займёт? На 10^10 ушло пол-минуты.

Ещё. Есть ли способ быстро на ходу формировать свой массив простых, быстро его пополнять и быстро в нём искать? setsearch - довольно быстр, видимо бинарный поиск реализует, но setunion - тормоз, как и listput для массива List.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.09.2010, 21:45 
Аватара пользователя
dmd в сообщении #356207 писал(а):
Можно ли сказать, сколько потребуется оперативки для формирования в памяти 10^11 простых?

Если я правильно помню, то для $10^{11}$ простых 8GB оперативки хватает, 4GB - вроде нет.
dmd в сообщении #356207 писал(а):
Есть ли способ быстро на ходу формировать свой массив простых, быстро его пополнять и быстро в нём искать?

Не знаю, насколько это поможет, но вот моя реализация хеш-таблицы (все ключи должны быть уникальными):
Код:
\\ create hashtable
{ ht_create() = [Set(),listcreate()] }


\\ kill hashtable
{ ht_kill(h) = listkill(h[2]); }


\\ insert (key,value) into hashtable
{ ht_insert(h,key,value) = local(p,l);
\\  print(h);
  p = setsearch(h[1],key);
  if(p, h[2][p]=value; return(h));
  p = setsearch(h[1],key,1);
  l=h[2];
  if(p>#l,listput(l,value),listinsert(l,value,p));
  return([setunion(h[1],Set([key])),l]);
}


\\ check if key is defined in the hashtable
{ ht_search(h,key) = setsearch(h[1],key); }


\\ query value for a given key
{ ht_value(h,key) = local(p);
  p = setsearch(h[1],key);
  if(p==0,error("ht_value error: key ",key," is not in the hashtable"));
  return(h[2][p]);
}


-- Sat Sep 25, 2010 13:48:37 --

P.S. Если встроенных возможностей PARI/GP не хватает, то можно переключиться на C/C++ и использовать PARI в качестве библиотеки.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение26.09.2010, 16:52 
maxal в сообщении #356225 писал(а):
Если встроенных возможностей PARI/GP не хватает, то можно переключиться на C/C++ и использовать PARI в качестве библиотеки.

Если имели в виду gp2c, то это само собой. Если вызов функций из libpari в своём приложении - увы, нет достаточного опыта. Хотя интересно посмотреть на примеры.

Ещё интересно узнать, как организовать пакетное сохранение данных в файл. Вызывать write отдельно для каждого найденного числа (строки чисел вектора/матрицы) - не эффективно медленно.

-- Вс сен 26, 2010 19:11:36 --

делал двоичный поиск в массиве простых, упорядоченных по возрастанию, получилось так:
Код:
zsearch(p:int, Y:list)=
\\zsearch(p:int, Y:vec)=
{
local(j, i1, i2, it, t):int;
if(p<5, j= 0:int,
i1= 1:int;
i2= (#Y):int;
t= -1:int;
while(p!=t,
  it= ((i2+i1)\2):int;
  t= Y[it]:int;
\\  t= Y[it][1]:int;
  if(p<t, i2= (it-1):int,
   if(p>t, i1= (it+1):int,
    j= it:int; break
   )
  );
  if((i1>i2), j= 0:int; break)
)
);
return(j)
};

 
 
 [ Сообщений: 825 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 55  След.


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