2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Как сделать циклический прогон по функции в PARI\GP ?
Сообщение15.08.2021, 19:11 


10/08/21
30
Решил не сваливать все в одну тему, хотя отдельного раздела по PARI\GP здесь как я понял нет.

Есть задача проверить через функцию FUNC(n), все числа x от 1 до 100, для n=x^2+2. Функция возвращает 0 или 1. Мне нужно знать для какого именного значения x, она вернет 1. То есть вывести на печать те значения x при котором FUNC(n) вернет 1.

Саму FUNC(n) я здесь описывать не буду, она отлично работает для переданного ей значения n. Но мне нужно сгенерировать сотню значений по формуле n=x^2+2 и прогнать ее через функцию FUNC(n). Как это можно сделать?

 Профиль  
                  
 
 Re: Как сделать циклический прогон по функции в PARI\GP ?
Сообщение15.08.2021, 21:04 
Заслуженный участник


20/08/14
11763
Россия, Москва
uzlprog в сообщении #1528785 писал(а):
Есть задача проверить через функцию FUNC(n), все числа x от 1 до 100, для n=x^2+2. Функция возвращает 0 или 1. Мне нужно знать для какого именного значения x, она вернет 1. То есть вывести на печать те значения x при котором FUNC(n) вернет 1.
Банально же:
Код:
for(x=1,100, if(FUNC(x^2+2)==1, print("x=", x); ); );
for(x=1,100, n=x^2+2; if(FUNC(n)==1, print("x=", x); ); );\\Другой вариант, через промежуточную переменную.

Можно и не только по x=1...100, а по любому списку x:
Код:
vx=[1,3,5,7,11,17,199]; for(i=1,#vx, if(FUNC(vx[i]^2+2)==1, print("x=", vx[i]); ); );
Вектор значений vx можно задать и по любому другому.

Вы бы таки прочитали всю тему «интерактивный курс: введение в программирование на PARI/GP», там много простого и полезного.

 Профиль  
                  
 
 Re: Как сделать циклический прогон по функции в PARI\GP ?
Сообщение19.08.2021, 21:51 


10/08/21
30
Dmitriy40, спасибо!

Я примерно сам уже догадался, но видимо запутался в запятых, точках и скобочках. Короче, ни как не привыкну к синтаксису :facepalm:

 Профиль  
                  
 
 Re: Как сделать циклический прогон по функции в PARI\GP ?
Сообщение19.08.2021, 23:19 
Заслуженный участник


20/08/14
11763
Россия, Москва
Ну точек там нет (кроме диапазона индексов в векторах), скобочки всегда парные, а вот с запятыми и ";" проблема, факт. Хотя тут они и более логичные чем в С, что впрочем как раз и создаёт лишние проблемы знающим тот синтаксис.
Пожалуй поясню коротко.
Запятые почти всегда (навскидку не помню исключений) разделяют параметры между собой. Например индексы в массивах, параметры в функциях. В отличие от С тело того же цикла или условного оператора является одним из параметров (обычно последним) и подставляется до закрывающей скобки и отделяется тоже запятой.
Точка с запятой используется для объединения двух (и более) операторов в один блок, примерно как {...} в С, только здесь она ставится между объединяемыми операторами. Есть и исключение: точка с запятой в конце строки подавляет вывод в консоль результата вычислений.
Фигурные скобки объединяют несколько строк внутри себя как бы в одну большую и длинную строку перед выполнением команд из неё. Удобно для длинных циклов, условий. Особенно из текстовых файлов.

Рекомендую при любых сомнениях набирать ? for для получения короткой справки по любой команде (например for). Кстати удобно пользоваться двойным tab для получения списка функций с таким началом (вариант автодополнения по tab). Смысл функций не всегда ясен, но хотя бы формат вызова виден. А подробнее смотреть в Users' Guide to PARI/GP с родного сайта. Для беглого обзора имеющихся функций удобен Quick Reference Cards (Basic GP) оттуда же. Или онлайн всё есть.

 Профиль  
                  
 
 Re: Как сделать циклический прогон по функции в PARI\GP ?
Сообщение20.08.2021, 09:04 


10/08/21
30
Dmitriy40, огромное спасибо за краткое пояснение!!!

Цитата:
В отличие от С тело того же цикла или условного оператора является одним из параметров (обычно последним) и подставляется до закрывающей скобки и отделяется тоже запятой.


Вот это очень напрягает. Честно говоря... Сразу начинаю путаться, но это дело привычки. :wink:

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

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



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

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


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

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