Валерий Жила 🐯 Profile picture
Oct 11, 2021 27 tweets 6 min read Read on X
Много лет назад один профессор показал нам отличный метод умножения матриц, и я решил о нём рассказать
В процессе учебы мне приходилось вручную умножать тысячи матриц, разной размерности и сложности. Классический перебор "строчка на столбик" имеет колоссальную когнитивную нагрузку, а поиск ошибки в нем – зачастую провальное мероприятие
Итак, коротко рассмотрим классический метод на умножении двух квадратных матриц 3х3
Выбираем строчку и столбик, и умножаем по очереди каждый элемент строки на соответствующий элемент столбика, сумму этих произведений записываем, это результат умножения строки первой матрицы на столбик второй
Красный на синий: 2*5 + 6*1 + 1*9 = 25, 25 записываем
Вдруг мы задумались, или устали от десяти предыдущих матриц, и посчитали строку с неправильным столбиком. Такие ситуации, по крайней мере у меня, происходят постоянно, когда решать нужно быстро.
Ошибку можно заметить и исправить, но ясно одно: этот метод жрет больше сил на обдумывание, что на что умножать, чем на непосредственный расчет. Очень неэффективно. Особенно если матрицы разного размера.
На свалку этот способ!
Критикуешь – предлагай.
Если мы хотим найти A * B, то это можно сделать вот такой вот лесенкой. В этом примере я её рисую карандашом и цветами, но обычно всё делается просто по клеткам
Нужно произвести ровно те же самые вычисления, но теперь не нужно думать, что с чем умножать. Результат считается в местах пересечения строки и столбика
Считаем первый элемент. Арифметика та же самая, а когнитивная нагрузка испарилась, или по крайней мере, очень сильно уменьшилась
И вот, мы получили результат. Возможно, мы готовы. А если нужно его дальше использовать в умножении? Этот способ как раз на это и рассчитан!
Например, мы хотим умножить наш результат A*B справа на матрицу С. Отлично, дописываем её справа и считаем пересечения
И на пересечениях будет содержаться матрица (A*B)*C
Хорошо, справа умножить можно, а слева?
Пожалуйста!
Наше дерево просто растет вниз в нужном месте. Посчитаем пересечения, и получим результат D * (A*B)
Вот так вот, довольно интуитивно
У этого метода есть ещё один огромный козырь. Он позволяет умножать матрицы разной размерности, вообще не задумываясь о том, в какой форме должен быть результат. Структура сетки сама задаст размерность результата.
Попробуем умножить две прямоугольные матрицы разного размера. Синюю на красную, 6x2 на 2х3.
Сетка решения позволяет нам не задумываться о том, совместимы ли матрицы, и какой формы будет результат. В данном случае сразу видно, что результат имеет форму 6х3.
Конечно, опытный человек формы видит сразу, и знает, как их считать, это же проще простого. Но у первокурсников вечно с этим проблемы.
Хорошо, но этот метод выглядит так громоздко!
На самом деле, нет. Я нарисовал всё в цветах и кучей места для наглядности, а в реальности, при простых расчетах, всё выглядит так:
Или даже так:
Когда привыкаешь так считать, вспомогательные линии становятся не нужны.
Если же матрицы сложные, или числа побольше, то в любом случае имеет смысл не экономить место. Бумага дешёвая, баллы и нервы – бесценны.
Если же мы считаем произведения матриц, состоящих не из чисел, а из функций, то оставлять в любом случае нужно столько свободного места, сколько возможно.
Вот такая вот история получилась!
Надеюсь, кому-нибудь будет полезно)
@threadreaderapp unroll

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Валерий Жила 🐯

Валерий Жила 🐯 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @ValeriiZhyla

Feb 19, 2023
@AleksandraLaluk 🦁
🐯
😼
@AleksandraLaluk Постулаты:
– Крайне необходимо, чтобы уважали, обожали, хвалили и льстили
– Максимизируй басфактор на себе
– Работай только над тем, что приносит политические очки в компании
– Ожидаю минимум семизнак за эту мелкую мирскую возню
@AleksandraLaluk – Основная идея: за 20% усилий получать результата в разы больше, чем основная масса смертных работающих на износ
Read 4 tweets
Aug 15, 2022
Год назад твиттер был местом с высокой динамикой тем – айтишники и штаны, гигиена, фреймворки, мемы, козули, что угодно – но длилось это недели две, после чего всё начиналось с чистого листа.

Из-за войны мы из генератора приколов сделали генератор негатива и ненависти

>>
С апреля твиттер мурыжит без конца два полярно противоположных мнения, причём оба мнения вполне оправданны со стороны говорящего – "все русские плохие, коллективная ответственность, ненавидим русню" vs "не все русские плохие давайте им тоже помогать, или хотя бы не мешать"

>>
Нет больше никакой динамики, теперь это один бесконечный сериал в сеттинге национальной ненависти, абсурда и сдающих нервов.

И самое странное – хоть это и ощущается бессмысленно, как ещё может быть во время войны?

>>
Read 5 tweets
Aug 14, 2022
Неделю занимаюсь теорией игр, и пришел к интересной мысли о себе.

Я во всём долговременном планировании стараюсь выбирать "объективно" наиболее выгодную стратегию, при этом вообще никогда не беря эмоции в расчёт, а в краткосрочном, наоборот, действую исходя только из эмоций.

>>
Из-за этого, как бы сильно я не выгорел от работы, я не могу уйти, не получив нового контракта (даже не испытывая стеснения в финансах).

И с другой стороны, я всегда, зачастую довольно жестоко, говорю людям в личном общении практически всё, что приходит в голову.

>>
Единственное, на что меня хватает – сдерживать агрессивные порывы огромной силы, которые даже мне в моменте кажутся уже явным и социально опасным животным перебором, который легко потянет на уголовное особо жестокое.

Господи храни лобные доли мозга.

>>
Read 5 tweets
Jul 5, 2022
Сегодня я расскажу про очень простой и действенный метод повышения продуктивности и контроля своего ментального здоровья.

Встречайте, тред про Calendar Blocking!
Речь пойдёт не об абстракции в вакууме, а о моём личном эксперименте.
Я расскажу о самом методе, и мы вместе выстроим календарь для одного дня. После этого я покажу результаты одной недели использования Calendar Blocking, и поделюсь мыслями про эту неделю и сам метод.
Я давненько ничего не писал, поэтому буду очень признателен за поддержку, ретвиты и комментарии. Поехали!
Read 69 tweets
Feb 20, 2022
Я сделал просто идеальное овсяное печенье с шоколадом. Рецепт в студию! Image
Пропорции 25 крупных печенек. Сразу скажу, что продукт выходит очень-очень сытный, я сам больше двух штук за раз съесть не могу.
Итак, нам понадобятся:
240г сливочного масла
200г сахара
2 яйца
20г разрыхлителя
300г муки
200г овсянки
130г шоколада

Корица
Ванильный сахар
Соль
Read 24 tweets
Jan 18, 2022
Сегодня я расскажу простым языком про три сортировки, с которых неизбежно начинается изучение алгоритмов. Первые шаги в создании алгоритмического мышления!
Речь пойдет о трёх самых базовых алгоритмах сортировки — о Bubble Sort, Insertion Sort и Selection Sort.

Цель всей истории — показать, какие идеи и мысли лежат в основе этой троицы, а также продемонстрировать их сильные и слабые стороны.
Мы выстроим эти алгоритмы по шагам, рассмотрим их простые версии и попробуем их немножко улучшить.
Read 128 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(