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, Супермодераторы



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

Сейчас этот форум просматривают: gris


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

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