2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Перевести программу с Maple/Mathematica на язык PARI
Сообщение24.05.2023, 18:26 
Аватара пользователя


22/11/13
502
Имеется последовательность A007447. В ней есть две тождественные программы:
Код:
MAPLE

a:= proc(n) option remember; (t-> `if`(n=0, 0, t(n) -add(j*
      binomial(n, j)*t(n-j)*a(j), j=1..n-1)/n))(i->ithprime(i))
    end:
seq(a(n), n=1..25);  # Alois P. Heinz, Mar 06 2018

MATHEMATICA

a[n_] := a[n] = Function[t, If[n==0, 0, t[n] - Sum[j Binomial[n, j] t[n-j] a[j], {j, 1, n-1}]/n]][Prime];
Array[a, 25] (* Jean-François Alcover, Oct 30 2020, after Alois P. Heinz *)

Можно ли их как-то перевести на язык PARI?

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


05/09/16
11546
kthxbye
Мне кажется, лучше бы новые темы заводить вам для этого :)
Потому что у вас тут получается во-первых просьба о конечном решении, а во-вторых -- примесь maple и mathematica и сперва требуется перевод с этих языков.
Напишите формулы.

 Профиль  
                  
 
 Re: Перевести программу на язык PARI
Сообщение24.05.2023, 22:49 
Заслуженный участник


12/07/07
4452
Безымянные (анонимные) функции, сумма (add) и seq были в теме «Перевод программ(ы) на язык функций (либо PARI)».
В тексте Maple (и в Mathematica) задаётся рекуррентная функция
$$a(n) = \begin{cases}
0,& \text{если n=0;}\\
p(n) - \frac 1 n \sum\limits_{j=1}^{n-1} j C_n^j p(n-j) a(j),& \text{иначе.}
\end{cases}$$
Здесь $p(k)$$k$-ое простое число.

 Профиль  
                  
 
 Re: Перевести программу на язык PARI
Сообщение24.05.2023, 23:58 


05/09/16
11546
GAA
Супер! Вот бы ТС так мог :mrgreen:
Меня в текстах смутило использование имени t(n) и t[n], я не понял что это n-ое простое число.

kthxbye
Держите
? a(n)=if(n==0,return(0));return(prime(n)-sum(j=1,n-1,j*binomial(n,j)*prime(n-j)*a(j))/n);
? print(a(20))
-4405549734148088108
? ##
*** last result computed in 546 ms.

Обращаю внимание, это без мемоизации. Для больших n будет долго. Но вы же научились добавлять мемоизацию? :wink:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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



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

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


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

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