Предположим вам приперло вычислить сложный интеграл, а вольфрам математики под рукой не оказалось.
Подобные интегралы с маленькой мнимой частью вычисляются по известной теореме, но обычно для их вычисления необходимо отдельно посчитать интеграл в смысле главного значения по Коши (обычно пишут v.p. ну или p.v.).
Для работы с такими интегралами (и не только) и был создан пакет
Подобные интегралы с маленькой мнимой частью вычисляются по известной теореме, но обычно для их вычисления необходимо отдельно посчитать интеграл в смысле главного значения по Коши (обычно пишут v.p. ну или p.v.).
Для работы с такими интегралами (и не только) и был создан пакет
sympy. В свою очередь, метод subs позволяет подставить какое-то определенное значение. Но для вычисления предела, или если выбранная точка является сингулярной, лучше используйте limit.you = |gay> + |not gay>
Тут IBM анонсирует свой Quantum Challenge, который кстати говоря начался совсем недавно. Таким образом они празднуют свою четвертую годовщину квантовых вычислений.
Дают 4 дня и 4 задания для проверки своих навыков. Принять вызов можно по этой ссылке. И как я понял, все это можно сделать на вашем любимом языке 🏳️🌈.
Я и сам хочу поучаствовать, потому что как теоретик я люблю всякие квантовые штуки (в том числе и нейросети).
Так что занимайте ваши основные состояния и погнали.
P.S. а если вы ничего не смыслите в квантовой механике, не переживайте, даже Фейнман в свое время говорил что по-настоящему ее никто не понимает.
Тут IBM анонсирует свой Quantum Challenge, который кстати говоря начался совсем недавно. Таким образом они празднуют свою четвертую годовщину квантовых вычислений.
Дают 4 дня и 4 задания для проверки своих навыков. Принять вызов можно по этой ссылке. И как я понял, все это можно сделать на вашем любимом языке 🏳️🌈.
Я и сам хочу поучаствовать, потому что как теоретик я люблю всякие квантовые штуки (в том числе и нейросети).
Так что занимайте ваши основные состояния и погнали.
P.S. а если вы ничего не смыслите в квантовой механике, не переживайте, даже Фейнман в свое время говорил что по-настоящему ее никто не понимает.
Одноразовая функция в классе
На тот случай, если вдруг понадобится такая функция, которая будет использоваться всего один раз, после чего будет использоваться другая функция, можно воспользоваться таким приемом.
#tips
На тот случай, если вдруг понадобится такая функция, которая будет использоваться всего один раз, после чего будет использоваться другая функция, можно воспользоваться таким приемом.
#tips
Основные научные библиотеки Python
Python часто используется для создания академических и научных приложений, поскольку код на нем легко писать и язык имеет высокую производительность.
📌 Библиотека SciPy задействует массивы NumPy в качестве базовой структуры данных. Кроме того, она содержит в себе модули для решения задач научного программирования, включая линейную алгебру, анализ, особые функции и константы, а также обработку сигналов.
📌 Хотя NumPy является частью проекта SciPy, она содержит лишь базовую функциональность SciPy. NumPy обходит проблему медленных алгоритмов в Python путем использования многомерных массивов и функций, которые работают с этими массивами.
📌 Matplotlib — это гибкая библиотека для создания интерактивных 2D и 3D графиков. А тем, кто работает со статистикой, стоит взглянуть на Seaborn, более новую библиотеку для работы с графикой, основанную на Matplotlib. Она предназначена для визуализации статистики.
Python часто используется для создания академических и научных приложений, поскольку код на нем легко писать и язык имеет высокую производительность.
📌 Библиотека SciPy задействует массивы NumPy в качестве базовой структуры данных. Кроме того, она содержит в себе модули для решения задач научного программирования, включая линейную алгебру, анализ, особые функции и константы, а также обработку сигналов.
📌 Хотя NumPy является частью проекта SciPy, она содержит лишь базовую функциональность SciPy. NumPy обходит проблему медленных алгоритмов в Python путем использования многомерных массивов и функций, которые работают с этими массивами.
📌 Matplotlib — это гибкая библиотека для создания интерактивных 2D и 3D графиков. А тем, кто работает со статистикой, стоит взглянуть на Seaborn, более новую библиотеку для работы с графикой, основанную на Matplotlib. Она предназначена для визуализации статистики.
Полезные сниппеты с itertools
Не так давно подписчик в чате поделился своими полезными сниппетами.
Также приложу ссылку на гист.
Не так давно подписчик в чате поделился своими полезными сниппетами.
group группирует итерируемые объекты в новые объекты размера size, при необходимости заполняя недостающие элементы с помощью fillvalue.transpose, как очевидно из названия, транспонирует матрицы (а также строки/столбцы различной длины), при необходимости заполняя значения с помощью fillvalue.Также приложу ссылку на гист.
Мы можем немного ускориться? (с)
Поскольку все методы класса по-умолчанию первым аргументом принимают
Хотя существует несколько способов использования np.vectorize в виде декоратора метода произвольного класса, на мой взгляд самым практичным и удобным является использование
Функция
Не знаешь что такое
#tips #numpy #vectorize
Поскольку все методы класса по-умолчанию первым аргументом принимают
self, нельзя просто так взять и обернуть метод декоратором vectorize.Хотя существует несколько способов использования np.vectorize в виде декоратора метода произвольного класса, на мой взгляд самым практичным и удобным является использование
partial.Функция
partial – это функция, которая упрощает некоторые элементы функционального программирования, позволяющего например обеспечить частичное применение функции.Не знаешь что такое
vectorize? На моем втором канале @python_academy сегодня будет пост, объясняющий что это такое.#tips #numpy #vectorize
Одной из наиболее полезных библиотек для физиков всех сортов и мастей является LINPACK, или библиотека для работы с линейной алгеброй.
Первоначально написанная на языке фортран, она получила свое продолжение в виде модуля LAPACK, работающего более эффективно на современных машинах.
Эту библиотеку портировали практически на все известные человечеству языки программирования (например на языке swift, с которым я сейчас работаю, есть модуль Accelerate, основанный на LAPACK и BLAS)
Пакет позволяет работать с матрицами: находить собственные значения и вектора, решения для СЛАУ (системы линейных алгебраических уравнений), и прочее.
#numpy #linalg
Первоначально написанная на языке фортран, она получила свое продолжение в виде модуля LAPACK, работающего более эффективно на современных машинах.
Эту библиотеку портировали практически на все известные человечеству языки программирования (например на языке swift, с которым я сейчас работаю, есть модуль Accelerate, основанный на LAPACK и BLAS)
Пакет позволяет работать с матрицами: находить собственные значения и вектора, решения для СЛАУ (системы линейных алгебраических уравнений), и прочее.
#numpy #linalg
Основные аспекты численного решения нелинейных уравнений
Нелинейные уравнения, в основном, не могут быть решены аналитически (кроме некоторых частных случаев). В таком случае, имеет смысл рассматривать итеративные алгоритмы нахождения решений.
К примеру, уравнение
Сходимость
Любое нелинейное уравнение в виде
Если уравнение на выбранном интервале имеет некоторое решение
Рассмотрим ниже простой пример в виде метода хорд и его реализацию на Python. Для проверки возьмем простую функцию
Найденное в результате работы скрипта решение сходится к аналитическому результату, с точностью
Нелинейные уравнения, в основном, не могут быть решены аналитически (кроме некоторых частных случаев). В таком случае, имеет смысл рассматривать итеративные алгоритмы нахождения решений.
К примеру, уравнение
x = tg(x) является нелинейным. Начальные приближения можно сделать, если читатель имеет представление о ряде Тейлора. Решение x = 0 напрашивается само собой, поскольку тангенс вблизи нуля ведет себя как линейная функция.Сходимость
Любое нелинейное уравнение в виде
f(x) = 0 всегда можно переписать как x = g(x). В данном случае, если задать произвольную стартовую точку x0, это уравнение можно дискретизировать для дальнейшего численного решения:x_{n+1} = g(x_{n})Если уравнение на выбранном интервале имеет некоторое решение
a, можно оценить порядок сходимости, или точность метода на шаге n:eps_{n} = x_{n} - aРассмотрим ниже простой пример в виде метода хорд и его реализацию на Python. Для проверки возьмем простую функцию
f(x) = x * (x + 2) - 1, таким образом данное уравнение можно решить даже аналитически.Найденное в результате работы скрипта решение сходится к аналитическому результату, с точностью
eps = 1e-3.Complex numbers
Сегодня делал пост про комплексные числа на второй канал, и решил немного порассуждать об этом тут. Я давно об этом думал, и пришел к выводу что комплексные числа это один из важнейших разделов математики.
Весь современный аппарат теоретической физики в той или иной мере использует эти числа, к примеру квантовая механика. Кроме того, они используются и в фурье анализе (модуль
Полезная штука в общем. И в вашем любимом языке программирования, к тому же,
Прикрепляю пару примеров и убегаю. Мне еще статью по работе доделывать нужно.
By @hw_code
Сегодня делал пост про комплексные числа на второй канал, и решил немного порассуждать об этом тут. Я давно об этом думал, и пришел к выводу что комплексные числа это один из важнейших разделов математики.
Весь современный аппарат теоретической физики в той или иной мере использует эти числа, к примеру квантовая механика. Кроме того, они используются и в фурье анализе (модуль
scipy.fftpack).Полезная штука в общем. И в вашем любимом языке программирования, к тому же,
complex является встроенным типом. Очень удобно. Если же complex недостаточно, можно импортировать cmath.Прикрепляю пару примеров и убегаю. Мне еще статью по работе доделывать нужно.
By @hw_code
Квантовые вычисления
Сейчас часто говорят о квантовых вычислениях. В теории, квантовая механика может помочь создать новый тип вычислительных машин. Квантовые процессоры смогут решать сверхпроизводительные задачи, недоступные даже самым мощным классическим суперкомпьютерам.
Хотя даже в квантовом мире не все так гладко, но эта отрасль сейчас активно развивается, и кто знает что будет в ближайшие 5-10 лет?
Биты и кубиты
В квантовом компьютере все вычисления тесно связаны с понятием кубита. Кубит - это некоторая квантовая система (например джозефсоновский сверхпроводящий контакт), способная принимать не просто значения 0 и 1, как в случае с классическим битом, а все возможные значения на единичной сфере на картинке ниже, лежащие между 0 и 1. Это называется суперпозицией.
В состоянии суперпозиции значение кубита неизвестно до тех пор, пока его не измерят. На самом деле, конечно, это значение не просто неизвестно, его не существует пока не произведено измерение. Звучит немного странно, но это определено законами квантовой механики.
Поскольку кубит находится во всех состояниях одновременно (до тех пор, пока не произведено измерение), это позволяет мгновенно перебрать все возможные варианты решений, ведь кубиты также связаны между собой. Это по сути и дает "квантовый параллелизм", ускоряющий вычисления.
Запутанность и вероятность
Сложностью здесь является то, что квантовая механика оперирует вероятностями, то есть машина в результате работы даст ответ с некоторой вероятностью. И нужно строить квантовые алгоритмы таким образом, чтобы приблизить вероятность правильного ответа к единице.
Чтобы получить рабочий полноценный рабочий кубит, необходимо так же связать его с другими кубитами (т.н. состояние квантовой запутанности), когда измерение, проведенное на одном кубите, сразу отражается на всех остальных.
Подобные состояния неустойчивы, и чем больше кубитов связано между собой, тем менее стабильно они работают. Для достижения "квантового превосходства" необходимо не менее 49 кубитов, хотя само понятие "квантового превосходства" на самом деле весьма расплывчатое.
В принципе, один кубит способен выполнять два вычисления одновременно, а когда несколько кубитов связаны друг с другом запутанностью, они могут выполнять уже 2^N операций, где N - число кубитов. Для квантового компьютера с 300 кубитами число одновременно выполняемых операций превзошло бы полное число атомов во Вселенной.
Не так давно в журнале Nature вышла статья, что специалисты из Google добились квантового превосходства при помощи 53 кубитов. Их квантовому процессору потребовалось 200 секунд для решения задачи, которую классический компьютер (по их оценкам) решал бы 10000 лет.
Ссылка на работу
Однако исследователи из IBM в ответной статье утверждают, что идеальную симуляцию той же задачи можно выполнить на классической системе за 2,5 дня, причём с гораздо большей точностью.
Ссылка на работу
Это достаточно спорный вопрос, хотя задача и была выбрана специально таким образом, чтобы она просто решалась на квантовой машине, но в то же время классический подход испытывал бы трудности, тем не менее, нет ни одного убедительного доказательства возможности ее решения на классической машине. IBM сделала теоретические оценки, но честную симуляцию они не проводили.
#лонгрид
Сейчас часто говорят о квантовых вычислениях. В теории, квантовая механика может помочь создать новый тип вычислительных машин. Квантовые процессоры смогут решать сверхпроизводительные задачи, недоступные даже самым мощным классическим суперкомпьютерам.
Хотя даже в квантовом мире не все так гладко, но эта отрасль сейчас активно развивается, и кто знает что будет в ближайшие 5-10 лет?
Биты и кубиты
В квантовом компьютере все вычисления тесно связаны с понятием кубита. Кубит - это некоторая квантовая система (например джозефсоновский сверхпроводящий контакт), способная принимать не просто значения 0 и 1, как в случае с классическим битом, а все возможные значения на единичной сфере на картинке ниже, лежащие между 0 и 1. Это называется суперпозицией.
В состоянии суперпозиции значение кубита неизвестно до тех пор, пока его не измерят. На самом деле, конечно, это значение не просто неизвестно, его не существует пока не произведено измерение. Звучит немного странно, но это определено законами квантовой механики.
Поскольку кубит находится во всех состояниях одновременно (до тех пор, пока не произведено измерение), это позволяет мгновенно перебрать все возможные варианты решений, ведь кубиты также связаны между собой. Это по сути и дает "квантовый параллелизм", ускоряющий вычисления.
Запутанность и вероятность
Сложностью здесь является то, что квантовая механика оперирует вероятностями, то есть машина в результате работы даст ответ с некоторой вероятностью. И нужно строить квантовые алгоритмы таким образом, чтобы приблизить вероятность правильного ответа к единице.
Чтобы получить рабочий полноценный рабочий кубит, необходимо так же связать его с другими кубитами (т.н. состояние квантовой запутанности), когда измерение, проведенное на одном кубите, сразу отражается на всех остальных.
Подобные состояния неустойчивы, и чем больше кубитов связано между собой, тем менее стабильно они работают. Для достижения "квантового превосходства" необходимо не менее 49 кубитов, хотя само понятие "квантового превосходства" на самом деле весьма расплывчатое.
В принципе, один кубит способен выполнять два вычисления одновременно, а когда несколько кубитов связаны друг с другом запутанностью, они могут выполнять уже 2^N операций, где N - число кубитов. Для квантового компьютера с 300 кубитами число одновременно выполняемых операций превзошло бы полное число атомов во Вселенной.
Не так давно в журнале Nature вышла статья, что специалисты из Google добились квантового превосходства при помощи 53 кубитов. Их квантовому процессору потребовалось 200 секунд для решения задачи, которую классический компьютер (по их оценкам) решал бы 10000 лет.
Ссылка на работу
Однако исследователи из IBM в ответной статье утверждают, что идеальную симуляцию той же задачи можно выполнить на классической системе за 2,5 дня, причём с гораздо большей точностью.
Ссылка на работу
Это достаточно спорный вопрос, хотя задача и была выбрана специально таким образом, чтобы она просто решалась на квантовой машине, но в то же время классический подход испытывал бы трудности, тем не менее, нет ни одного убедительного доказательства возможности ее решения на классической машине. IBM сделала теоретические оценки, но честную симуляцию они не проводили.
#лонгрид
Имеет ли смысл 80-символьная длина строки в 2020 году?
Одна из самых старых практик кодирования – поддерживать 80-символьную длину строки, и многие из нас следуют ей вслепую. Однако, задумывались ли вы когда-нибудь, почему мы ставим это правило на первое место?
#совершенный_код
Одна из самых старых практик кодирования – поддерживать 80-символьную длину строки, и многие из нас следуют ей вслепую. Однако, задумывались ли вы когда-нибудь, почему мы ставим это правило на первое место?
#совершенный_код
Метод бисекции
Не так давно мы рассматривали один из численных методов решения нелинейных алгебраических уравнений, а именно, метод касательных. Сегодня рассмотрим еще один метод.
Метод бисекции, или метод деления отрезка пополам – один из наиболее простых методов решения уравнений вида
Это не обязательно должны быть точные предположения, но они обязательно должны быть по обе стороны от корня. Пусть стартовая точка с левой стороны будет
Сравним знаки
Теперь точки
by @hw_code
Не так давно мы рассматривали один из численных методов решения нелинейных алгебраических уравнений, а именно, метод касательных. Сегодня рассмотрим еще один метод.
Метод бисекции, или метод деления отрезка пополам – один из наиболее простых методов решения уравнений вида
f(x) = 0. Чтобы использовать этот метод для поиска корня, следует начать с двух стартовых точек по обе стороны от предполагаемого корня.Это не обязательно должны быть точные предположения, но они обязательно должны быть по обе стороны от корня. Пусть стартовая точка с левой стороны будет
a, а с правой b. Затем найдем значение функции в средней точке x между a и b.Сравним знаки
f(x) и f(a): если знаки разные, то корень должен находиться между a и x, поэтому пусть b = x. Если знаки одинаковые, то корень должен находиться между x и b, поэтому пусть a = x.Теперь точки
a и b таковы, что решение по-прежнему находится между ними, но они вдвое меньше! Повторим эту процедуру до тех пор, пока разность между a и b не будет меньше заданной точности eps.by @hw_code
Пятничная подборка полезных статей
В эту подборку попали не только русскоязычные статьи, но и некоторые англоязычные, но не менее интересные. Старался сильно по темам не прыгать, собирая самое релевантное.
1️⃣ Интересная статья на тему сжатия с потерями – попробуйте реализовать свой собственный JPEG!
2️⃣ Пространство имен и local/global в Python, полезная штука для начинающих.
3️⃣ Разница между передачей по ссылке и по значению.
4️⃣ Лекции по численному Python: NumPy, SciPy, SymPy.
5️⃣ Немножко работы с telethon по этой ссылке.
6️⃣ О дата саенсе можно почитать, например, в заметках дата саентиста.
Кстати, если вы еще не в курсе, сейчас идет одна интересная игра для хакеров, о которой все только и говорят.
Hello World 💻
В эту подборку попали не только русскоязычные статьи, но и некоторые англоязычные, но не менее интересные. Старался сильно по темам не прыгать, собирая самое релевантное.
1️⃣ Интересная статья на тему сжатия с потерями – попробуйте реализовать свой собственный JPEG!
2️⃣ Пространство имен и local/global в Python, полезная штука для начинающих.
3️⃣ Разница между передачей по ссылке и по значению.
4️⃣ Лекции по численному Python: NumPy, SciPy, SymPy.
5️⃣ Немножко работы с telethon по этой ссылке.
6️⃣ О дата саенсе можно почитать, например, в заметках дата саентиста.
Кстати, если вы еще не в курсе, сейчас идет одна интересная игра для хакеров, о которой все только и говорят.
Hello World 💻
Forwarded from Russian Hackers | Хакатоны
Build For Belarus
• Описание: онлайн-хакатон в поддержку Беларуси. Прими участие в разработке технологических решений для коммуникации, безопасности, медицины и поддержки пострадавших.
• Ссылка: http://rhck.me/buildforbelarus
• Даты проведения: 14 - 16 августа
• Место проведения: online
#BuildforBelarus #hackathon @RussianHackers_Channel
• Описание: онлайн-хакатон в поддержку Беларуси. Прими участие в разработке технологических решений для коммуникации, безопасности, медицины и поддержки пострадавших.
• Ссылка: http://rhck.me/buildforbelarus
• Даты проведения: 14 - 16 августа
• Место проведения: online
#BuildforBelarus #hackathon @RussianHackers_Channel
Russian Hackers | Хакатоны
Build For Belarus • Описание: онлайн-хакатон в поддержку Беларуси. Прими участие в разработке технологических решений для коммуникации, безопасности, медицины и поддержки пострадавших. • Ссылка: http://rhck.me/buildforbelarus • Даты проведения: 14 - 16…
Это не реклама, выражаю слова поддержки всем протестующим. Жыве Беларусь!