Hello World – Telegram
Hello World
1.68K subscribers
71 photos
6 videos
3 files
161 links
Be so good that you cannot be ignored. And then, go one step beyond.
Download Telegram
Мы можем немного ускориться? (с)

Поскольку все методы класса по-умолчанию первым аргументом принимают self, нельзя просто так взять и обернуть метод декоратором vectorize.

Хотя существует несколько способов использования np.vectorize в виде декоратора метода произвольного класса, на мой взгляд самым практичным и удобным является использование partial.

Функция partial – это функция, которая упрощает некоторые элементы функционального программирования, позволяющего например обеспечить частичное применение функции.

Не знаешь что такое vectorize? На моем втором канале @python_academy сегодня будет пост, объясняющий что это такое.

#tips #numpy #vectorize
одобряю
Одной из наиболее полезных библиотек для физиков всех сортов и мастей является LINPACK, или библиотека для работы с линейной алгеброй.

Первоначально написанная на языке фортран, она получила свое продолжение в виде модуля LAPACK, работающего более эффективно на современных машинах.

Эту библиотеку портировали практически на все известные человечеству языки программирования (например на языке swift, с которым я сейчас работаю, есть модуль Accelerate, основанный на LAPACK и BLAS)

Пакет позволяет работать с матрицами: находить собственные значения и вектора, решения для СЛАУ (системы линейных алгебраических уравнений), и прочее.

#numpy #linalg
​​Основные аспекты численного решения нелинейных уравнений

Нелинейные уравнения, в основном, не могут быть решены аналитически (кроме некоторых частных случаев). В таком случае, имеет смысл рассматривать итеративные алгоритмы нахождения решений.

К примеру, уравнение 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

Сегодня делал пост про комплексные числа на второй канал, и решил немного порассуждать об этом тут. Я давно об этом думал, и пришел к выводу что комплексные числа это один из важнейших разделов математики.

Весь современный аппарат теоретической физики в той или иной мере использует эти числа, к примеру квантовая механика. Кроме того, они используются и в фурье анализе (модуль 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 сделала теоретические оценки, но честную симуляцию они не проводили.

#лонгрид
Имеет ли смысл 80-символьная длина строки в 2020 году?

Одна из самых старых практик кодирования – поддерживать 80-символьную длину строки, и многие из нас следуют ей вслепую. Однако, задумывались ли вы когда-нибудь, почему мы ставим это правило на первое место?

#совершенный_код
И такое тоже бывает

@hw_code
Audio
До конца.

@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 💻
​​Build For Belarus

• Описание: онлайн-хакатон в поддержку Беларуси. Прими участие в разработке технологических решений для коммуникации, безопасности, медицины и поддержки пострадавших.

• Ссылка: http://rhck.me/buildforbelarus

• Даты проведения: 14 - 16 августа

• Место проведения: online

#BuildforBelarus #hackathon @RussianHackers_Channel
... и поставить 4.0 версию

Hello World 💻
​​Понедельничный лонгрид

Сегодня поговорим о такой вещи как криотроника.

Сразу после Второй мировой войны инженеры столкнулись с фундаментальным, но все еще открытым вопросом: как строить электронные цифровые компьютеры? Какой тип переключателей лучше всего подходит для логических схем? А что использовать для основной памяти?

К чему они все таки пришли, мы уже знаем: сначала использовали транзисторы, а уже затем – интегральные схемы, как для реализации логики, так и для памяти. Но в 1950-1960-х гг. различные группы инженеров искали принципиально новые пути для создания цифровых компьютеров.

Одним из самых оригинальных исследователей был Дадли Аллен Бак, который работал в Массачусетском технологическом институте с 1950 года до своей внезапной смерти в 1959 году в возрасте 32 лет. Он сделал важный вклад в области создания микросхем, а также он изобрел «криотрон», сверхпроводящий переключатель.

Бак надеялся что криотрон станет фундаментальным строительным блоком для цифровых компьютеров будущего. Вдохновленные видением Бака, GE, IBM, RCA и военные США в конце 1950-х - начале 1960-х годов развернули крупные исследовательские программы по криотронам, прежде чем переключиться на кремниевые микрочипы для компьютерной логики и памяти.

К 1954 году Бак обратил внимание на еще более интересное свойство электромагнетизма, обнаруженное при низких температурах: сверхпроводимость. Это явление, в принципе, уже было изучено ранее. С начала XX века физикам было известно, что при охлаждении до температур, близких к температуре кипения жидкого гелия, некоторые металлы полностью теряют свое электрическое сопротивление.

В явлении сверхпроводимости существует т.н. эффект Мейснера. Сверхпроводник, помещенный в магнитное поле, начинает это поле выталкивать (поэтому магнит и левитирует в видосиках на ютубе) – но лишь до определенного момента. Если приложить достаточно сильное магнитное поле, материал почти мгновенно переходит в резистивное состояние. А если магнитное поле убрать, материал возвращается обратно в сверхпроводящее состояние.

Бак увидел потенциал этого явления для электронных цифровых компьютеров: можно создать сверхпроводящий переключатель с магнитным управлением. Подобный сверхпроводящий переключатель может быть очень компактным, быстрым и энергоэффективным.

В духе футуризма 1950-х он и назвал свое изобретение криотроном — смесь слов cryo (ϰρύος, греч. «ледяной холод, мороз») и electronics.

Несмотря на все эти исследования, быстрое развитие кремниевых микрочипов — в частности, их удешевление — в 1960-х годах перекрыло прогресс в изучении криотронов. Новые компьютеры строились на кремниевых логических схемах с памятью на магнитных сердечниках. К середине 1960-х большинство исследователей криотронов окончательно переключили свое внимание на кремний.

Однако, изобретение Бака на самом деле пережило своего творца, и элементы криотрона используются например при создании сверхпроводящих кубитов в квантовых компьютерах.

А модифицированные криотроны, известные науке как «джозефсоновские переходы», до сих пор являются краеугольным камнем современных исследований IBM и других компаний в области квантовых вычислений.

Оригинальная статья

На фото для сравнения изображены вакуумная лампа, транзистор и прототип криотрона тех времен.

Hello World 💻
Impressive commit history...

Hello World 💻
Forwarded from Cosy Code
изи пизи

Cosy Code
Мы уже давно, всей админкой, угораем с мемов на профункторе, а у них так же относительно недавно появился канал, @profunctor_jobs, с самыми годными вакухами для разрабов

Все вакансии проходят тщательный отбор а описание не сожержит ничего лишнего, только должность, стэк технологий и зп (всегда только 10к+$/с.). 

Так что подписывайтесь на @profunctor_jobs, там действительно много годных вакансий, которых нет ни на одной другой площадке, а если хотите разместить свою, то это можно сделать бесплатно, но пройдя тщательную модерацию!