2014 dxdy logo

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

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




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

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


Последовательность иксов уравнения $1+ x+x^2=3\cdot 67y^2$ выглядит так:

Vec(x*(439+515095*x-440*x^2)/((1-x)*(1-1030190*x+x^2)) + O(x^10))


и уравнения $1- x+x^2=3\cdot 67y^2$ так:

Vec(x*(440-515095*x-439*x^2)/((1-x)*(1-1030190*x+x^2)) + O(x^10))

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение14.01.2018, 14:11 
А как быть в таких случаях?:


Код:
? bnfinit(x^2-3*7).fu
%1 = [Mod(1/2*x - 5/2, x^2 - 21)]
но минимальный икс должен быть 55


Код:
? bnfinit(x^2-3*31).fu
%2 = [Mod(3/2*x - 29/2, x^2 - 93)]
минимальный икс должен быть 12151


хотя для 3*19 вычисляется правильно
Код:
? bnfinit(x^2-3*19).fu
%3 = [Mod(20*x - 151, x^2 - 57)]
минимальный икс равен 151

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение14.01.2018, 22:28 
Аватара пользователя
dmd в сообщении #1283965 писал(а):
но минимальный икс должен быть 55

Если коэффициенты нецелые, нужно смотреть на маленькие степени фундаментальной единицы. Например:
Код:
? bnfinit(x^2-3*7).fu[1]^3
%1 = Mod(12*x - 55, x^2 - 21)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение15.01.2018, 06:21 
Извините, если замучил вопросами...


Для уравнения $(x+1)^3 - x^3 = 31y^2$ минимальный икс равен 22 (A145323) и обобщенный вид этого уравнения будет $(6x+3)^2 - 3\cdot 4\cdot 31y^2 = -3$.

Тогда:
Код:
? b = bnfinit(x^2-3*4*31); bnfisintnorm(b,-3)
%82 = [1/4*x + 9/2]


Ожидал, что свободный член будет 6*22+3=135, но опять дробные значения. Как в этом случае выполнить вычисления?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение15.01.2018, 07:04 
Аватара пользователя
dmd, опять нужно домножить результат bnfisintnorm на степень фундаментальной единицы.
Код:
? b = bnfinit(x^2-3*4*31); bnfisintnorm(b,-3)*b.fu[1]^2
%1 = [Mod(7*x - 135, x^2 - 372)]

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение17.01.2018, 02:57 
Аватара пользователя
Кстати, дробные значения вылезают из-за того, что $D=3\cdot 31\equiv 1\pmod{4}$, в соответствующем квадратичном поле целые элементы имеют вид $a+b\sqrt{D}$, где $a,b$ могут быть не только целыми, но и полуцелыми.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.01.2018, 21:35 
Здрасьте

Подскажите плз, почему не работает программулина:
Код:
x=10000; v=vector(x); j=1; for (i=1, x, if (issquerefree(i), v[j]=i; j=j+1)); v

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.01.2018, 23:36 
Аватара пользователя
Bye, исправьте опечатку: issquerefree -> issquarefree и она заработает

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение31.01.2018, 23:41 
Большое спасибо, работает, вот только неправильно.

-- 31.01.2018, 23:46 --

Нет ли здесь возможности использовать что-то типа паскалевского else и как оно реализуется?

На конкретном примере: необходимо сделать так, чтобы на месте включающих квадраты чисел стояли нули в векторе.

Что-то типа того:
Код:
x=10000; v=vector(x); j=1; for (i=1, x, if (issquerefree(i), v[j]=i; j=j+1) else v[j]=0; j=j+1); v

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.02.2018, 00:14 
Аватара пользователя
Bye, else реализуется обычной запятой:
Код:
x=10000; v=vector(x); j=1; for (i=1, x, if (issquarefree(i), v[j]=i; j=j+1, v[j]=0; j=j+1); v
Кроме того, непонятно зачем вам j, если оно всегда равно i - вот код без j:
Код:
x=10000; v=vector(x); for (i=1, x, if (issquarefree(i), v[i]=i, v[i]=0); v
Еще проще искомый вектор можно получить так:
Код:
x=10000; v=vector(x,i,issquarefree(i)*i)

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.02.2018, 00:47 
maxal в сообщении #1289000 писал(а):
Еще проще искомый вектор можно получить так:


Код:
x=10000; v=vector(x,i,issquarefree(i)*i)




Ух ты, круто, спасибо. Особенно понравилось
Код:
issquarefree(i)*i
и удивило то, что заполняя вектор не нужно организовывать цикл, т.е. цикл организован внутри вектора?

А как найти остаток от целочисленного деления?

-- 01.02.2018, 00:52 --

И кстати, можно ли строки матрицы выводить не через точку с запятой, а построчно?

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.02.2018, 02:05 
Аватара пользователя
Bye, почитайте эту тему с самого начала - на многие вопросы там уже даны ответы.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.02.2018, 02:23 
maxal
Ок, большое спасибо за помощь, но в рефкардс не могу найти функции деления, целочисленного деления, нахождения остатков и всё, что связано с делением, наверное не туда смотрю. Тему конечно почитаю еще раз, спасибо.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.02.2018, 03:11 
Аватара пользователя
Bye, x\y - целочисленное деление $x$ на $y$, x%y - взятие остатка; сразу получить и частное и остаток можно командой divrem(x,y).
В refcard эти операции указаны сразу под обычными арифметическими операциями.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение01.02.2018, 03:23 
maxal
Огромное спасибо.

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


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