Physics.Math.Code
143K subscribers
5.2K photos
2.05K videos
5.81K files
4.45K links
VK: vk.com/physics_math
Чат инженеров: @math_code
Учебные фильмы: @maths_lib
Репетитор IT mentor: @mentor_it
YouTube: youtube.com/c/PhysicsMathCode

№ 6045941532

Обратная связь: @physicist_i
Download Telegram
Media is too big
VIEW IN TELEGRAM
🖥 Визитка программиста 👨🏻‍💻 Если нет такой визитки, то не программист.

Видеоэкран с трёхмерной мышью из фототранзистора и двухцветных китайских матриц под управлением микроконтроллера ATmega-644 на собственной многозадачной операционной системе. Сделано на предельно дешёвой элементной базе, вся схема разведена в двух слоях.

Многооконный интерфейс с предзагруженными демо-приложениями: скрин-сейвер, графическая рисовалка, видеролики с альфа-каналом, интерактивное моделирование в реальном времени пламени на основе температурной модели горения и воды методом клеточного автомата.
Сайт автора: http://velect.ru/
Статья о реализованной в проекте многозадачности: http://www.velect.ru/articles.html

#техника #конструктор #ARM #ATmega644 #программирование #механика #разработка #микроконтроллеры

💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍118🔥6418🤯15🗿134🙈3😱2🤩2😍2🌚2
Media is too big
VIEW IN TELEGRAM
⚙️ Тест 9 типов подвесок [ЛегоТехникс]

Из конструктора LEGO Technic можно собирать механические подвески — узлы, которые входят в состав моделей автомобилей, мотоциклов и других транспортных средств. Некоторые наборы LEGO Technic, в которых есть подвески:
▪️MOC-159983 — Axle with Steering, Drive, Suspension for 1:10 wheels (2023) — набор с подвеской для колёс 1:10.
▪️MOC-152716 — Simple Front Suspension (2023) — набор с простой передней подвеской.
▪️MOC-132045 — Front Race Car Suspension (2022) — набор с подвеской для передней оси гоночного автомобиля.
▪️MOC-128195 — Torsen differential mounted on a double wishbone suspension (2022) — набор с дифференциалом Торсена, установленным на подвеску с двойными поперечными рычагами.

🖥 Конструирование подводной лодки на радиоуправлении из LEGO

⚙️ Редуктор из LEGO с огромным передаточным числом

⚙️ Моделирование решения задачи передвижения автомобилей по песчаному грунту с помощью конструктора LEGO

⛔️ 7 препятствий и 5 LEGO-роботов, которые умеют шагать

⚙️ LEGO® Technic Строительство мостов: Задача на 100 кг!

🎻 Когда Lego играет на гитаре лучше, чем ты...

⚙️ Lego MindStorm

👾 Что будет, если надолго оставить инженера с конструктором Lego

#техника #конструктор #ARM #программирование #механика #разработка #микроконтроллеры

💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4416🔥10❤‍🔥7😍2🤩1
👨🏻‍💻 В нашем дружественном IT-канале 🔵 Эпсилон была опубликована интересная задачка по программированию. В этом посте разберем её подробно.

👩‍💻 Задача для наших подписчиков на понимание наследования в Python: Задача: Что выведет следующий код?
class A:
def process(self):
return 'A'

class B(A):
def process(self):
return 'B'

class C(A, B):
pass

obj = C()
print(obj.process())


📜 Варианты ответов:
⚡️ — 1. А
❤️ — 2. B
👍🏻 — 3. Будет вызвано исключение TypeError
👾 — 4. С

Правильный ответ: 3. Будет вызвано исключение TypeError. Но почему так сработает?

Пояснение: Код не сможет быть даже исполнен из-за ошибки в определении класса C. При создании класса C Python пытается построить порядок разрешения методов (MRO). Класс C наследуется от A и B, при этом класс B сам является наследником A.
Это создаёт противоречивую иерархию, которую невозможно выстроить линейно и логично. С точки зрения MRO, класс A не может находиться в иерархии как до класса B (так как B наследуется от A), так и после него (так как C наследует от A после B). Это противоречие приводит к ошибке. Если вы запустите этот код, интерпретатор выдаст исключение еще на этапе создания класса C:
TypeError: Cannot create a consistent method resolution order (MRO) for bases A, B

Вывод: Задача проверяет знание не только того, как вызываются методы, но и того, как Python внутренне строит иерархии классов и не позволяет создавать некорректные наследования.

✍🏻 Напишите в комментариях, вы смогли бы решить такую задачу без подсказки? Какой первый ответ вам пришел в голову? #python #программирование #разработка #архитектура

📙 Как устроен Python. Гид для разработчиков, программистов и интересующихся [2019] Харрисон

📗 Python. Исчерпывающее руководство [2023] Бизли Д.

📕 Мощный Python: Шаблоны и стратегии работы с современным Python [2025] Максвелл Аарон

📒 Python для хакеров [2023] Ли Воган

📙 Сверхбыстрый Python [2023] Тиаго Антао

📒 Основы искусственного интеллекта в примерах на Python. 2-е изд. [2023] Анатолий Постолит

💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5435🔥113🌚2👨‍💻2❤‍🔥1😢1👾1
🖥 Как лучше собирать оперативную память, если вам необходим какой-то фиксированный объем RAM, например 32 Гб ?

Очевидно, что есть два способа, если исключаем одноканал: Способ 1 (4x8 ГБ) vs Способ 2 (2x16 ГБ). Однозначно лучше и эффективнее: Способ 2 — 2 планки по 16 ГБ. Вот почему это так, особенно для современных платформ (AMD AM5 и Intel LGA 1700/1851):

▪️ 1. Меньшая нагрузка на контроллер памяти (IMC). Контроллеру памяти внутри процессора значительно проще работать с двумя планками, чем с четырьмя. Это повышает стабильность системы, особенно при работе на высоких частотах с низкими таймингами.

▪️ 2. Более высокий шанс запуска на заявленной высокой частоте. Память DDR5 особенно чувствительна к количеству модулей. Сборка из 2 планок с большой вероятностью заработает на своей штатной частоте (например, 6000 МГц) с включенным EXPO/XMP. Сборка из 4 планок почти всегда потребует ручного понижения частоты (например, до 5200-5600 МГц) или увеличения таймингов для стабильной работы.
⚠️ Потеря в производительности от более низкой частоты часто перевешивает гипотетический выигрыш от четырёхканального доступа.

▪️ 3. Возможность будущего апгрейда. У вас останутся два свободных слота на материнской плате. Если вам вдруг позарез понадобится 64 ГБ (для монтажа, работы с AI и т.д.), вы просто докупите еще два модуля по 16 ГБ. В варианте с 4x8 ГБ апгрейд возможен только полной заменой всех планок на 4 новых.

▪️ 4. Совместимость и стабильность. Комплекты из двух планок протестированы производителем и гарантированно работают вместе. Сборка из четырёх планок — это всегда лотерея, даже если вы покупаете два одинаковых комплекта по 2x8 ГБ.

Краткий итог: Для 99% пользователей, особенно геймеров, конфигурация 2 модуля по 16 ГБ является золотым стандартом и оптимальным выбором.

Нужно ли 64 ГБ для игрового компьютера? На данный момент (2025 год) для чисто игрового компьютера 64 ГБ — это избыточно. И вот почему:

▪️ Подавляющее большинство игр комфортно себя чувствуют в рамках 16-32 ГБ оперативной памяти. Даже такие современные и требовательные тайтлы, как Cyberpunk 2077 с патчейми, Alan Wake 2, Star Citizen, могут потреблять до 20-24 ГБ ОЗУ, но это включает в себя и саму ОС, и фоновые приложения.

▪️ 32 ГБ — это идеальный и достаточный объем на ближайшие 2-3 года для любых игр с запасом. Вы полностью исключите любые подтормаживания, связанные с нехваткой ОЗУ, и сможете держать открытым браузер, дискорд и другие приложения во время игры.

🖥 Когда 64 ГБ оправдано или необходимо?

▫️1. Параллельная работа с "тяжелыми" приложениями: Если вы одновременно с игрой занимается стримингом (через OBS Studio), монтажом видео, рендерингом или работаете с виртуальными машинами.
▫️2. Очень специфичные игры и моды: Некоторые симуляторы (например, Microsoft Flight Simulator 2024 с огромным количеством модов на высоких настройках) или моды для игр вроде Cities: Skylines II могут "съедать" гигантские объемы памяти.
▫️3. Работа с ИИ (AI): Локальное использование нейросетей (генерация изображений, работа с LLM-моделями) требует огромных объемов ОЗУ.
▫️4. Профессиональные задачи: Видеомонтаж в 4K/8K, работа с большими базами данных, 3D-моделирование сложных сцен.

Останавливайтесь на объеме 32 ГБ. Этого более чем достаточно для игр и многозадачности. Вкладывайте сэкономленный бюджет (от не покупки 64 ГБ) в более важные компоненты: например, в более мощную видеокарту или более быстрый накопитель. Это даст гораздо более заметный прирост производительности в играх. Если в будущем вы поймете, что 64 ГБ вам реально нужны, вы всегда сможете докупить второй идентичный комплект из 2x16 ГБ и получить в сумме 64 ГБ. Но будьте готовы к тому, что для стабильной работы системе, возможно, придется сбросить частоту памяти. #hardware #железо #техника #программирование #разработка #development #computer_science

💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6132👍23❤‍🔥6💯3🤔2🗿21👨‍💻1
📜 Математика количества счастливых билетов

Давайте сегодня подумаем, а как посчитать или хотя бы оценить количество счастливых билетов при 6-значном номере? Можно ли решить такую задачу аналитически?

Давайте для интереса определим верхнюю границу количества таких билетов? Их явно меньше миллиона, верно? А может есть ещё какое-то число?

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

👨🏻‍💻 Задачка про счастливый билет : решаем на Python

📜 Математика количества счастливых билетов

#задачи #разбор_задач #программирование #информатика #олимпиады

💡 Репетитор IT mentor // @mentor_it
👍2515🔥5🗿2🤔1🤯1😱1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ С чего начать моделирование электрических полей?

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

1. Фундамент: Главные Уравнения
▪️ Закон Кулона для точечного заряда: F = k * (q₁ * q₂) / r² . Но для поля удобнее работать с напряженностью E = F / q.
▪️ Принцип суперпозиции: Поле системы зарядов — это просто векторная сумма полей от каждого заряда в отдельности. Это наше главное оружие в моделировании.

2. Силовые Линии и Эквипотенциали
Поле можно описывать по-разному, и это ключ к красивой визуализации.
▪️Силовые линии (Графическое отображение напряженности E):
— Воображаемые линии, касательные к которым в каждой точке совпадают с вектором E.
— Свойства: Начинаются на «+» зарядах, заканчиваются на «-» или уходят в бесконечность. Никогда не пересекаются!
— Густота линий пропорциональна величине напряженности.
▪️Эквипотенциальные поверхности (Графическое отображение потенциала φ):
— Что это? Поверхности, где потенциал постоянен (φ = const).
— Свойства: Всегда перпендикулярны силовым линиям. Работа по перемещению заряда вдоль такой поверхности равна нулю.

3. Как Строить Уравнения?
Для точечного заряда q в точке (x₀, y₀):
— Потенциал: φ(x, y) = k * q / sqrt( (x - x₀)² + (y - y₀)² )
— Вектор напряженности E: Eₓ = -∂φ/∂x, Eᵧ = -∂φ/∂y (это просто частные производные, градиент со знаком минус).
А как получить уравнение силовой линии? Это уже сложнее. Силовая линия — это кривая, которая в каждой точке направлена вдоль E. Математически это решается через дифференциальное уравнение: dx / Eₓ(x, y) = dy / Eᵧ(x, y). Решая его (часто численно!), мы получаем траектории для наших визуализаций.

4. Инструменты для Моделирования и Визуализации
▪️Python — король научной визуализации: Библиотеки: matplotlib, numpy, scipy.
▪️Как: Задаете сетку точек (x, y), для каждой считаете Eₓ и Eᵧ (суммируя вклады от всех зарядов). Затем:
— Для силовых линий: используйте matplotlib.streamplot
— Для эквипотенциалей: matplotlib.contour или contourf для потенциала φ.

🖥 Простой пример кода для двух зарядов:
import numpy as np
import matplotlib.pyplot as plt

# Создаем сетку
x = np.linspace(-2, 2, 100)
y = np.linspace(-2, 2, 100)
X, Y = np.meshgrid(x, y)

# Задаем заряды (q, x, y)
charges = [(1, -0.5, 0), (-1, 0.5, 0)]

# Вычисляем полные Eₓ и Eᵧ на сетке
Ex = np.zeros(X.shape)
Ey = np.zeros(Y.shape)
k = 9e9
for q, xq, yq in charges:
R = np.sqrt((X - xq)**2 + (Y - yq)**2)
Ex += k * q * (X - xq) / R**3
Ey += k * q * (Y - yq) / R**3

# Рисуем силовые линии
plt.streamplot(X, Y, Ex, Ey, color='blue', linewidth=1, density=2)
plt.show()

Готовые симуляторы:
— PhET Interactive Simulations (отлично для начального понимания).
— Falstad's E&M Simulator (очень наглядно).
— Comsol Multiphysics, Ansys — для серьезного моделирования сложных поверхностей.

🔴 А что с Крупными Заряженными Поверхностями? Здесь принцип суперпозиции остается, но суммирование становится интегрированием. Каждую поверхность разбиваете на маленькие точечные заряды dq и интегрируете их вклад в поле. На практике для сложных форм это почти всегда делается численными методами (например, методом конечных элементов), которые и используют пакеты вроде Comsol. Начните с Python и пары точечных зарядов. Поймите связь между φ и E, научитесь строить streamplot и contour. #электричество #физика #моделирование #визуализация #python #наука #образование #электрическоеполе #программирование

💡 Physics.Math.Code // @physics_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
575👍46🔥19🤔42🤩2🗿1