2014 dxdy logo

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

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




На страницу Пред.  1 ... 32, 33, 34, 35, 36, 37, 38 ... 55  След.

А вам пакет PARI/GP интересен?
Да 83%  83%  [ 58 ]
Нет 6%  6%  [ 4 ]
Не уверен(а) 11%  11%  [ 8 ]
Всего голосов : 70
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение22.11.2022, 17:11 
gris в сообщении #1570971 писал(а):
Сделал в PARI кусок для LaTeX:

Там у них что-то для картинок имеется
Цитата:
Functions for PostScript or SVG output
in the same way that printtex allows you to have a TeX output corresponding to printed results, the functions plotexport, plothexport and plothrawexport convert a plot to a character string in either PostScript or Scalable Vector Graphics format. This string can then be written to a file in the customary way, using write. These export routines are available even if no Graphic Library is.

Но я не понимаю написанного...

В принципе, если вас попиксельный put в TeX устраивает (пикселей не миллионы), то почему бы и не.

Я бы делал универсально: формируете картинку в двумерный массив. Пишете функцию которая "печатает" этот массив. Потом как разберётесь, перепишете функцию чтобы она делала например не TeX, а SVG или BMP и т.п.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение22.11.2022, 18:02 
Аватара пользователя
wrest, а вроде бы что-то есть, связанное с графиками функций?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение22.11.2022, 18:04 
gris
В общем я там поковырялся.
Вот такой код
? X=List([]);Y=List([]);n=1000;for(i=1,n,for(j=1,n,if(issquare(i*j),listput(X,i);listput(Y,j))))
делаем два списка с координатами. списки а не массивы потому что не знаем сколько понадобится
далее "печатаем" их в текстоую строку в формате "svg" конвертируя по ходу списки в векторы
? s=plothrawexport("svg",Vec(X),Vec(Y));
ну и записываем в файл
? write("graph.svg",s)
В файле картинка, её открывает браузер. Но хостинги картинок её не хотят. Конвертируем .svg в .png (я использовал https://svgtopng.com ) и грузим в хостинг:
Изображение
Получается криво конечно, масштаб по сторонам неравный, размером не управляем (хотя может и можем).

-- 22.11.2022, 18:06 --

gris в сообщении #1570993 писал(а):
а вроде бы что-то есть, связанное с графиками функций?

Да, графики рисует. Но вы спрашивали про пиксели :)
Для графиков я предпочитаю геогебру...
Правда как-то раз тут на форуме был вопрос что не так с с вычислением преобразования Фурье (что-то типа почему обратное преобразование не восстанавливает как надо), ну и понадобилось визуализировать, и я печатал графики через pari/gp

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение22.11.2022, 18:22 
Аватара пользователя
wrest, спасибо. Картинка красивая и способ её получения увлекательный. Про графики я имел в виду, что есть пиксельный прямоугольный массив и можно туда посылать поток пар координат для окрашивания пикселей в хотя бы в чёрный цвет. Можно окрашивать и квадратики три на три для одной пары чисел. И картинка храниться в BMP. Ну это, конечно, ни к чему.

(Оффтоп)

Я пустил flash и думал, что за десять минут всё сделаю. А вдруг с недоумением туплюсь на скрипт
for (k=1; k < 132; k++){
for (i = 1; i < 132; i++) {
if (k*i== а где у вас тут issquare?) {нарисовать кружочек}
}}

А главное — монитор махонький и комп слабенький. Незаметно подошла эта самая :-(

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение22.11.2022, 18:54 
gris в сообщении #1571003 писал(а):
Про графики я имел в виду, что есть пиксельный прямоугольный массив и можно туда посылать поток пар координат для окрашивания пикселей в хотя бы в чёрный цвет. Можно окрашивать и квадратики три на три для одной пары чисел. И картинка храниться в BMP. Ну это, конечно, ни к чему.

Для этого python как я выше писал, хорошо подойдёт.

(Оффтоп)

Но потребуется освоение. pari/gp как видите работает с текстовыми форматами. типа svg и postscript. Но дальше с ними плохо работают визуализаторы картинок (браузеры и т.п.). Для python есть билиотеки, которые предоставляют интерфейс к пиксельным массивам любых форматов (.jpg, .bmp, и даже видео). я на питоне с помощью итернета делал скрипт, который берёт последовательность кадров из видеоролика и хитро усредняет попиксельно -- для получения одного кадра "длинной выдержки" с эффектом следов например от фар автомобилей из ночного ролика).

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение23.11.2022, 22:46 
Аватара пользователя
"Although plotting is not even a side purpose of PARI,
a number of plotting functions are provided."


Почитал и слепил. Вдруг кому пригодится.
plotinit(0, 640, 640);
plotcolor(0, 0);plotrbox(0,640,640);plotcolor(0, 1);
for(n=1,300, for (m=1,300,
if(issquare(n*m),plotmove(0,2*n,2*m); plotrbox(0,2,2,1););
));
plotdraw(0);


Изображение

Тут ещё читать и читать. Amirite? :-)
Вопрос: число в массив цифр могу перевести digits(n).
можно ли одной командой узнать, есть ли в массиве элемент "2" например. И перемножить элементы массива.
Dmitriy40, спасибо

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение23.11.2022, 23:15 
gris в сообщении #1571252 писал(а):
можно ли одной командой узнать, есть ли в массиве элемент "2" например.
Я делаю так:
Код:
? v=[1,2,3,4,5,9,1,4,6]; #select(x->(x==2),v,1)>0
1
? v=[1,2,3,4,5,9,1,4,6]; #select(x->(x==2),v,1)
1
? v=[1,2,3,4,5,9,1,4,6]; select(x->(x==2),v,1)
Vecsmall([2])
? v=[1,2,3,4,5,9,1,4,6]; #select(x->(x==1),v,1)>0
1
? v=[1,2,3,4,5,9,1,4,6]; #select(x->(x==1),v,1)
2
? v=[1,2,3,4,5,9,1,4,6]; select(x->(x==1),v,1)
Vecsmall([1, 7])
? v=[1,2,3,4,5,9,1,4,6]; #select(x->(x==11),v,1)>0
0
Select выдаёт или элементы по условию (если третий параметр 0 или отсутствует), или их индексы в массиве (если 1).

gris в сообщении #1571252 писал(а):
И перемножить элементы массива.
Код:
? v=[1,2,3,4,5,6]; vecprod(v)
720
?


-- 23.11.2022, 23:16 --

Ещё есть vecsearch(), но она требует сортированного вектора.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение24.11.2022, 01:04 
gris в сообщении #1571252 писал(а):
Почитал и слепил. Вдруг кому пригодится.

У меня например не работает, в виду полного отсутствия графических средств вывода на экран в окружении pari/gp (чисто текстовая строка) :mrgreen:

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение24.11.2022, 10:08 
Аватара пользователя
wrest, а там вывода на экран не предусмотрено. У меня после отработки PARI автоматом запускается PAINT с картинкой. Можно сохранить в доступном формате, например, в gif. То есть никакой анимации, конечно. Но это и не нужно. Надо поизучать :-)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение24.11.2022, 11:03 
gris в сообщении #1571291 писал(а):
а там вывода на экран не предусмотрено. У меня после отработки PARI автоматом запускается PAINT с картинкой.

Да, так оно работает в pari/gp для windows. Но у меня другое :) У меня в windows есть среда linux (windows subsystem for linux) с неработающей графической подсистемой. Я это к тому, что
wrest в сообщении #1570932 писал(а):
Это может существенно зависеть от окружения (операционная система, доступные библиотеки).

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение24.11.2022, 15:07 
Аватара пользователя
Вот товарищ где-то прочитал, что есть картины из $\pi$ и очень красивые. Я попробовал.
{plotinit(0, 640, 640);plotcolor(0, 0);plotrbox(0,640,640);
default(realprecision, 20000);
pp=lift( Mod( digits( floor(Pi*10^10000)),6) );
for(n=0,99,for(m=1,100, k=100*n+m;
plotcolor(0, pp[k]);
plotmove(0, 6*m-5,6*n+1); plotrbox(0,6,6,1);
));
plotdraw(0);}

Сама картина пока не очень. Слишком пёстрая.
Интересно, значение $\pi$ каждый раз заново вычисляется или хранится?
Как проверить, что число полный куб?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение24.11.2022, 15:45 
gris в сообщении #1571353 писал(а):
Интересно, значение $\pi$ каждый раз заново вычисляется или хранится?

Вычисляется один раз, по формуле Рамануджана, до текущей точности. Но если вы в процессе повышаете точность, то вычисляется под точность.

-- 24.11.2022, 15:49 --

gris в сообщении #1571353 писал(а):
Как проверить, что число полный куб?


Цитата:
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 nonzero result, set n to the k-th root of x.

Соответственно
? ispower(8,3)
%1 = 1
? ispower(9,3)
%2 = 0
?

Если хочется сразу и кубический корень извлечь, то например так:
? n=12345;ispower(8,3,&n);print(n);
2
? n=12345;ispower(9,3,&n);print(n);
12345
?

То есть если куб, то третий аргумент функции принимает значение основания куба, если не куб - то третий аргумент не меняется.

P.S. Это кстати редкий случай в PARI/GP когда функция в качестве аргумента принимает ссылку на переменную и меняет эту переменную по ссылке.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение28.11.2022, 01:26 
Аватара пользователя
Коллеги, прошу прощения за довольно глупый вопрос, я правильно понимаю, что если не хочу, чтобы объявленные внутри функции переменные вылазили за ее скоуп, должен обязательно их объявить внутри my()? Нарвался сегодня на ээ эффект, чуть с ума не сошел :P когда значение переменной x, объявленной внутри функции f1() прокралось в функцию f2(), где так же объявлена одноименная переменная, и которая вызывает f1()
И, если нетрудно, подскажите, где об этом в паришном хэлпе почитать? За разумное время я там нашел только намеки, что все эти my, inline, local - неспроста (здесь и тут)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение28.11.2022, 01:48 
waxtep в сообщении #1571685 писал(а):
И, если нетрудно, подскажите, где об этом в паришном хэлпе почитать?

Стр 36-38 в руководстве https://pari.math.u-bordeaux.fr/pub/par ... /users.pdf

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение28.11.2022, 09:43 
Аватара пользователя
wrest, супер, спасибо! В общем, My(), oh, my(), программируй, не зевай! :-)

 
 
 [ Сообщений: 825 ]  На страницу Пред.  1 ... 32, 33, 34, 35, 36, 37, 38 ... 55  След.


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