Comments 149
Мне больше понравилось вот это видео, и в целом был интересен весь плейлист:
Можно ссылку текстом, пожалуйста. А то здесь белое ничто.
Видео выше: https://www.youtube.com/watch?v=tnjBY4Yq6mY
Оригинал на английском: https://www.youtube.com/watch?v=XkY2DOUCWMU
Да и здесь мультфильмы тоже вполне себе ничего.
Интересно посмотреть сколько кода (текста) требуется чтобы "нарисовать" такой мультфильм. Ждем статью посвященную рисованию-кодированию-creating mathematical animations!
ИТ без математики никуда, да.
Это смотря без какой именно области, потому что, так то, много где никуда, даже хлеба не купишь, но если брать типичный энтерпрайз и кодирование бизнес-логики, даже если это биг дата и хайлод, не такая и большая область требуется. И даже в 3д играх тоже, если ты не с нуля пишешь. Чрезмерно переоценивать требование тоже не стоит, как бы романтично не хотелось бы в это верить.
Образ мышления и способность вникать в сложные конструкции радикально отличаются у тех кто умеет и кто не умеет в матан. Те же паттерны проектирования, без которых в энтерпрайзах никуда, почему-то сложнее даются чистым гуманитариям, решившим в айти.
даже если в игрострое работаешь с готовыми движками понимание матриц нужно. Даже если это условный UE где высокий уровень абстракции. Высокий уровень абстракции не отменяет важность порядка перемножения этих абстракций.
Правильно вы написали - не с нуля... Вся векторная графика построена на умножении выше. 90% кодирования тоже используют в гизкоуровневоц реализации матричные операции. Архиваторы - работа с матрицами.. Вся графика - матрицы...
Просто этот код кто-то за вас уже написал...
Вы это скажите миллионам айтишникам в том числе без высшего образования (либо с высшим и каким нибудь гуманитарным) которые клепают сайт и приложения на коленке.
Ссылки на литературу и различные источники
Да, интересно как много тут людей, у которых все эти ссылки подсвечены фиолетовым?
Интересная статья, но с названием по-моему дело обстоит проще, нам нужна вот такая операция - давайте назовем её умножением матриц. А то почему бы матрицы не "умножать" по рабоче-крестьянски типа c11=a11*b11, c12=a12*b12, и т. д... )))
Не по-рабочекрестьянски, а по-адамаровски...
См. комментарий от 0:44 , если как вы будете умножать , то мы не получим из вектора X вектор Z как мы изначально хотели.
...И ничего страшного! Получим что-то другое. Я вот вовсе не хотел из вектора X получать вектор Z. ))) Я в том смысле, что в начале идет необходимость в чем-то, а потом придумывается название этому.
Так я не против . Можно умножать как угодно лишь бы такая модель нашла потом применение на практике . Традиционный метод позволяет создать наибольшее число таких математических моделей.
Все намного проще. Если бы вы учились, то начинали бы с азов. Перемножение элементов в кольцах и полях и вообще определение умножения, колец и полей. Затем работа с векторными множествами, затем работа с множествами многочленов, затем работа с множествами матриц и как опофеоз - работа с матрицами над полем/кольцом многочленов... И вот тогда вопроса почему матрицы так перемножаются - не было...
А то почему бы матрицы не "умножать" по рабоче-крестьянски типа
Тогда бы умножение матриц стало коммутативным и доступным для понимания даже школьникам начальных классов. Преподаватели в универах останутся без работы.
Ну там рядом торцевое произведение притулилось.
https://ru.wikipedia.org/wiki/Произведение_Адамара
Можно определять умножение, как вам угодно. Но вот такое, как стандартно принято, обладает всякими полезными свойствами (вроде как указанного в статье вычисления матрицы комбинированного линейного преобразования). Еще эта операция обладает всякими привычными свойствами умножения (вроде дистрибутивности со сложением и ассоциативности). Поэтому именно эта операция и считается умножением. Так удобно.
Возможно. Но тогда все равно хотелось бы ввести какое-то умножение матриц, да еще так, чтобы от него какая-то польза была. А почленное умножение не позволяет столько классных штук делать. Например, решать линейные уравнения.
Ну так и сложения строк как такового нет. А вот всякие алгебраические структуры по аналогии с числами привычно складывать и умножать.
Ну и где там про сложение строк? Но вообще, я уверен, что есть какая-то очень абстрактная теория, где над чем-то, на что можно натянуть термин "строка", можно проивзодить операцию, которую называют "сложением".
Но сколько-нибудь распространенной операция сложения на строках не является. Потому что там аналогии со сложением чисел не получается. Ибо как произвольную строку вычесть из произвольной сторки? Именно поэтому в теории формальных языков строки конкатенируют, а не складывают. Если бы операция была похожа на сложение, его бы для удобства восприятия так и назвали.
Да, складываю. Я правда не понимаю, что к чему вы клоните? Натуральные числа — это частный случай строк? Ну тогда ваш изначальный вопрос снимается:
Зачем? Умножение строк же вам не хочется ввести?
Умножение "строк" тогда уже есть — умножение натуральных чисел.
Мое утверждение, что раз есть сложение, то логочно и умножение ввести по аналогии с числами — не опровергнуто.
Ну, получается, чтобы назвать операцию сложением, вычитать уметь не обязательно. Два произвольных натуральных числа вы вычесть тоже не можете
Ну, более чем в половине случаев — вычитать можно. Со строками же все гораздо хуже.
Что может быть проще? Строка на n-символьном алфавите - это запись натурального числа в n-ричной позиционной системе
Я тут внезапно понял, что умножение матриц — часть более общего правила: применение оператора или функции считается умножением, если только эта функция — не тригонометрическая.
Вот серьёзно, смотрите сами:
- f2(x) — это обычно f(f(x)), а не (f(x))2, как можно было бы подумать. А f-1(x) — это обратная функция;
- линейную дифуру часто записывают подставляя оператор d/dx в характеристический многочлен. И наоборот, практики часто характеристический многочлен объясняют как подстановку лямбды вместо оператора дифференцирования в левую часть уравнения;
- и традиция в лямбда-исчислении записывать вызовы функций без скобок тоже прекрасно сюда вписывается.
Угу. Мне вот очень не нравится, что умножением иногда называют операции, в которых А*В != В*А. Назвали бы как-то иначе. Ну не знаю, трансплюкированием.
По мне очень математически описано, чтобы понять статью надо врубиться в кучу новых терминов.
Тогда как на самом деле матрица исторически это запись системы уравнения
a11x1+a12x2+...=b1
a21x1+...=b2
...
Отсюда и правила по которым матрица A преобразует вектор X в вектор Y.
Пусть ещё есть матрица B , которая преобразует вектор Y в вектор Z.
Соответственно матрица A*B должна быть такая, чтобы сразу же преобразовать вектор X в вектор Z. Собственно всё.
"матрица исторически это запись системы уравнений".
Исторически - да, но сегодня в матрицы закладывается совершенно иной смысл, доводящий их до математической абстракции, в которой любое действие может иметь смысл (но его ещё нужно как-то понять). Без понимания сути выполняемых действий математика превращается в набор предметов, что-то вроде "линейной магии, высшей магии и основ магического анализа". Конечно, хочется понимать, что же ты делаешь, но, к сожалению, для непосвящённых математика всё больше превращается в религию с мистерией формул...
Предлагаю вам понять комплексные числа и заодно мнимые числа вроде корня квадратного из -1.
Математика - это прежде всего игра ума, абсолютная полная абстракция. А уже потом продукт этой самой игры ума приспосабливают для использования в каких-то практических целях. Но никак не наоборот.
Ну обычные числа описывают предметы(здесь и сейчас). А комплексные - чаще всего процессы. Например колебания шарика на пружине можно представить как движение по кругу по двумя осям - действительной координате x. И мнимой координате y , которая пропорциональна скорости v.
То есть мы сложный случай(процесс) выразили как простой(набор координат).
"А уже потом продукт этой самой игры ума приспосабливают для использования в каких-то практических целях. Но никак не наоборот. " - ну почему Ньютон разработал дифференциальное исчисление конкретно под механические задачи. И в дальнейшем, в математике был например "Спор о струне" и т.д.
"Математика - это абстрактная физика" (с)
Математика пока от физика отделиться не может. Даже комплексные числа, которые родились как абстракция потом оказались вполне физичными и, например, использовались для расчета купола цирка в Самаре.
Вообще с матрицами можно делать все что угодно, с учетом того, что все функции раскладываются в ряд Тейлора.
Функция Вейерштрасса не раскладывается в ряд Тейлора. функция модуля не раскладывается в ряд Тейлора в окрестности нуля. Вейвлеты высоких порядков не раскладываются в ряд Тейлора. Дельта-функция Дирака не раскладывается в ряд Тейлора в окрестности нуля.
? в окрестности нуля она прекрасно раскладывается в ряд Тейлора: exp(-1/(x*x)) = 0 (самый-самый простой и короткий ряд Тейлора- полином нулевого порядка!).
в окрестности нуля x- бесконечно малая первого порядка, 1/x2- бесконечно большая второго порядка, exp(-1/(x*x))- бесконечно малая бесконечного порядка. в окрестности нуля ряд Тейлора нулевой, для любого eps>0 существует dx>0 такая, что |f(dx)-0|<eps.
да, надо строже обращаться с терминами.
функция разложима в ряд Тейлора в некоторой окрестности- это значит, что для функции этот ряд сходится и сходится именно к этой функции (с абсолютной точностью). как, например, summ(x^k)=1/(1-x)- это точное представление на интервале (-1..1)
есть функции, которые с любой наперед заданной точностью на интервале могут быть аппроксимированы рядом Тейлора, но при этом ряд не сходится в точности к этой функции (как приведенная вами экспонента- она не аналитическая в нуле, хотя и абсолютно дифференцируема в нуле). Такие функции аппроксимируются частичным рядом Тейлора с погрешностью О(dx^k):
f(x)= summ( a.i*x^i)[i=0..k-1] + O(x^k)
а есть функции, которые и не раскладываются, и не аппроксимируются рядом Тейлора.
Модуль недифференцируем в нуле, и потому в нуле в ряд Тейлора не раскладывается и не аппроксимируется (нет полиномиальной функции, имеющей погрешность порядка О(dx^k)- только О(1)), а в окрестности любой другой точки- раскладывается в ряд (то есть, может быть точно представлен рядом Тейлора). ф. Вейерштрасса вообще нигде не дифференцируема, и потому ни в какой точке не раскладывается в ряд Тейлора и не аппроксимируется рядом Тейлора, вейвлеты высоких порядков имеют локальную область поддержки, за пределами которой они нулевые, и потому раскладываются в ряд Тейлора в любой точке за пределами области поддержки, и не раскладываются и не аппроксимируются в ряд Тейлора ни в какой точке в области поддержки, ну и дельта-функция, как и модуль, разложима везде, кроме нуля.
О_о. матанлиз все-таки строгая довольно дисциплина, там формулировки вылизаны до блеска, поэтому я и обратил Ваше внимание на разницу между " ф-я разложима в ряд Тейлора", "ф-я может быть аппроксимирована рядом Тейлора, но ряд не сходится к функции" и "ф-я не разложима и не может быть аппроксимирована рядом Тейлора"- это три сильно разных случая, и любой из них может реализовываться на всей оси, на отрезке или в точке.
у функции модуля производная в нуле отсутствует, хоть как вы его через корни представляйте, поэтому в нуле она не разложима в ряд Тейлора, а в любой другой точке- разложима.
Рассуждения про "проблема схождения, а не существования производной"- тоже весьма туманны, ряд Тейлора завязан на производную чуть менее, чем полностью, а производная- это предел отношения приращения функции к приращению аргумента в точке. У функции Вейерштрасса этот предел отсутствует в любой точке, поэтому ряд Тейлора для нее вообще нельзя построить, она не разложима и не может быть аппроксимирована ни с каким порядком точности, кроме нулевого. При чем тут "временные домены"? Дельта-функция или единичный скачок тоже во временном домене разложимы, только даже во временном домене для них ряды сходятся только в энергетической норме (L2), а в классическом смысле (в норме L1)- не сходятся, и ни дельта, ни скачок в норме L1 ни рядом Тейлора, ни рядом Фурье не аппроксимируются ни в какой окрестности нуля.
Все мои рассуждения про сходимость ряда Тейлора в L1-норме остаются верными и для комплекснозначных функций комплексных аргументов (ибо теорема об аналитическом продолжении). Я прекрасно знаю, что ряд Фурье для единичного скачка элементарно вычисляется, но также я знаю, что в L1-норме он не сходится ни в вещественных числах, ни в комплексных- модуль погрешности ряда всегда остается порядка 9% от амплитуды скачка :-), и функция Вейерштрасса недифференцируема нигде, хотя и легко представима, как Вы выразились, во временном домене (как и вейвлеты Добеши, кстати). Собственно, поэтому я Вам и говорю, что в матанализе надо строго с терминами себя вести- там таких нюансов на каждом шагу по ведерку.
А в дискретном виде с ограниченным спектром у ДиракДельты так и вообще конкретное значение появляется, а именно 1.

Высота выплеска не зависит от количества членов ряда Фурье, меняется только ширина этого выплеска, поэтому в энергетической норме ряд сходится, но в L1 норме- погрешность ряда Фурье всегда фиксирована и примерно равна 9% величины скачка (9% вверх и 9% вниз, суммарный размах 18%).
Когда Вы говорите про "математика раскладывает"- то у меня опять возникает вопрос- что значит "раскладывает"? Строит аппроксимацию функции? да ради Бога, стройте наилучшее приближение в любом базисе методом наименьших квадратов, хоть в полиномиальном (на выбор- Тейлора, Чебышева, Лежандра, изысысках типа Эрмита или еще каких, лишь бы базис), хоть в Фурье, хоть в вейвлетах. но это будет аппроксимация- с погрешностью, которую надо будет оценивать в какой-то норме, а если "раскладывает"- то значит, что полученный ряд сходится строго к функции и погрешность в любой норме будет нулевая. Ограниченный ряд Фурье, сколько бы членов ряда я не брал, всегда имеет максимальное отклонение в 9% от амплитуды скачка, поэтому надо четко себе представлять, что в конкретном контексте значит "сходится" и что значит "раскладывается". это такие довольно заумные теоретические вопросы, но если мы заговорили про ф.Вейерштрасса- то она сама по себе изврат над логикой- и требует всей этой зауми.

А здесь свёртка гребёнки с sinc-функцией через аналитическое преобразование Фурье (чтобы показать, что результаты совпадают, да и в википедии об этом не написано):

В пределе промежуточные пульсации усреднятся в ноль даже без нормирования по амплитуде пиков.
напоминаю: аккуратнее с определениями, я говорил про 9% для единичного скачка, вот их и нарисовал. хотя, неявно предполагал, что раз уж мы про Фурье-ряды, то естественно для функции, заданной на интервале (или периодической), а не на всей оси.



Вот я сейчас в непонятках. у меня единичный скачок- это f(x)={0,X<0; 1,X>=0}. и его я и рисовал. а у Вас что? И где Вы у меня нашли sinc- решительно не понимаю.
А у меня всё тот же тригонометрический ряд (из 9-и членов), только с другими коэффициентами, подбирая которые можно задать максимальное отклонение вплоть до нуля независимо от количества членов ряда. И ваше наблюдение «Ограниченный ряд Фурье, сколько бы членов ряда я не брал, всегда имеет максимальное отклонение в 9% от амплитуды скачка» уже не будет соответствовать истине.
? а по-моему- очень даже получился скачок- посмотрите на мои графики еще раз внимательно- я специально привел и график аппроксимации самого скачка, и отдельно- увеличенный кусочек графика погрешности с 9%. мне кажется, что вы на график погрешности смотрите, и видите что-то свое.

1000 составляющих:

в моем ВУЗе Функция Хевисайда и функция единичного скачка на физико-техническом факультете были общепринятыми синонимами, у электронщиков ее еще часто называют функцией включения, и это тоже общепринятое название, а никакой не жаргонизм.
как угодно получайте этот единичный скачок, но если Вы получаете его частичным рядом Фурье, то первая пульсация всегда будет 9%, при любом количестве членов. +9, -5, +3.3, -2.5, +2.1, -1.8. Прямо ряд напряжений микросхем получился. :-) не знаю, как работает Ваша система рисования и почему она сглаживает кривые, но мой маткад и аналитические рассчеты (и мои, и чужие) дают именно такие значения в пучностях самой высокочастотной гармоники. и это, в общем-то, общеизвестные вещи в узком кругу ограниченных людей.
Нет, ряд Фурье (а обсуждается тут именно он, а не какой-то произвольный ряд) не гарантирует ни монотонности, ни непревышения 1 по модулю.
а, разобрался :-) ну да, Вы построили свою аппроксимацию, а какое она отношение к Фурье имеет? что она тоже из синусов? но так она у Вас от Фурье-то отличается очень даже. у Фурье 25й коэффициент 0,025, а у Вас- 25й коэффициент- 8,934е-6. а для ряда из тысячи членов какой 25й коэффициент?

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

вот сейчас у Вас пошли рассуждения из области теоретической математики, с которыми я категорически не согласен, но обсудить не смогу. останусь ка я в интернете не правым.
Эдак можно и про функцию f(x)=0
написать, что она в ряд Тейлора не раскладывается...
0
x, то бишь аргумент? Так можно любое число назвать функцией. Ну и матрицей тоже можно назвать, 1x1. Ну и тензором тоже можно, чё мелочиться.Назвать число функцией — для, нельзя. Но вот сопоставить каждому числу функцию, которая возвращает только его — без проблем можно.
Точно так же как можно составить вектор, матрицу или тензор из одного элемента.
Вы ещё скажите, что ноль не является вещественным числом, потому что у него нет дробной части.
Кому должна?
Функция, она же отображение — это правило, сопоставляющее каждому элементу из одного множества элемент из другого множества. Чем правило "любому элементу сопоставляется 0" хуже любого другого?
Должна по определению.
Согласно общепринятому определению — не должна.
Правило «любому элементу сопоставляется 0» хуже любого другого тем, что оно необратимо
Обратимость — свойство биекции, от функции в общем случае не требуется быть обратимой.
И мне кажется, что графики моей и вашей функций таки заметно различаются
Так что, всё-таки функция, если у неё даже график построить можно?
Я не вижу никакой проблемы отталкиваться от действительных чисел. Пространство интуитивно воспринимается скорее как непрерывное, а не дискретное, и понимание числа как «позиция» вполне согласуется с жизненным опытом. Согнутая в форме лука палка вполне согласуется с понятием «функция», которая непрерывна изначально, а не появляется из бесконечного количества бесконечно малых элементов. Комплексные числа вполне логично воспринимаются при переходе с линейки на миллиметровую бумагу. Часы со стрелками наглядно показывают умножение комплексных чисел, а заодно и переход на модульную арифметику, где количество возможных чисел ограничено.
Я говорю, что если знание всех этих строгих формулировок не помогает решать задачи, а мешает этому - то ценность такого знания чуть меньше нуля по модулю. А также то, что качественное развитие математики так и просходило - когда кто-то начинал сомневаться в однозначности этой строгости.
Из чуть менее банального можно про косинус вспомнить, который не может больше 1 по модулю. Затем взять выражение
cos(3*arccos(x))
и разложить его в ряд, получим -3·x+4·x3
. Возьмём к примеру x=2
, получим 26
— очевидное противоречие с областью определения косинуса. Математик старой школы скажет, что результат некорректный и докажет это через радиусы сходимости и всё такое. Математик новой школы предположит что результат корректный и придумает теорию функций комплексного переменного, в которой все элементарные функции всюду определены, а гиперболические функции это частные случаи тригонометрических.Парадокс брадобрея кстати разрешается элементарно, а заодно показывает ограниченность бинарной логики.
Этот парадокс появился же не просто так — кто-то взял и записал его словами. Вероятно всего для того, чтобы потроллить друзей-философов. Математического смысла как постановки задачи у него нет изначально.
Если возвращаться к парадоксам в стиле «это утверждение ложно» — то там существует рекурсия, для которой не предусмотрено условие выхода. Я не думаю, что это как-то связано со строгостью формулировок.
Компилятор из описания var x=0 скорее выведет тип int, чем указатель на функцию возвращающую 0 типа real.
А из описания var f = x => 0
он выведет скорее функцию чем тип int. Но при чём тут вообще компилятор?
А затем оптимизатор эту функцию вообще выкинет, как и все ссылки на неё. Вот и получится, что определить функцию вы попытались, но в исходном коде её почему-то не оказалось. При чём тут компилятор? Ну я хз, что на форуме математиков делают программисты.
Оптимизатор может что угодно выкинуть, включая программу целиком. Это вообще не аргумент.
Это был ваш аргумент, а не мой. Спор был вообще о том, почему оппонент считает свои функции неразложыми, а мои - разложимыми, хотя они имеют один и тот же вид 0+остаточный член. Вы же привели 0 как функцию, у которой остаточный член тоже равен 0 и это доказывает мою неправоту, а ещё больше доказывает мою неправоту возможность записать этот ноль как вещественный тип, но без указания десятичной точки. Вероятно, проблемы нулей вам интереснее, чем неразложымые в ряд функции, но мне не сложно поддерживать и эту ветку обсуждения.
давайте функциональный анализ вспомним- что там такое есть "функция"- а там это однозначное соответствие элементов множества "А" элементам множества "Б". f(x)=0 ставит в однозначное соответствие любому элементу (x) из множества чисел (каких-то, наверно R, но может и C или поля какого-нибудь вообще) соответствующий элемент (0) из множества чисел (тоже каких-то, или поля или вектор или еще чего, не суть! главное, что в этом множестве есть нулевой элемент, удовлетворяющий определению нулевого элемента), то есть, является функцией, с чем Вас и поздравляю. и матрицой 1*1 и вектором единичной размерности и тензором нулевого ранга тоже является (тензором, потому что для нее правила преобразования при переходах из одной системы координат в другую вполне себе выполняются).
f0()=0,
f1()=1,
f2()=2,
f3()=3…
Как-то долго получается, да и боюсь ни бумаги, ни времени ни хватит. Может, всё-таки f(x)=x, где х принадлежит целым, попроще будет?
А так конечно — любую функцию можно представить в виде 0+f(x), 0 это и есть ряд, а значит и любая функция разложима.
И напоследок: что из множества объектов {0,0,0} число, что функция, а что степенной ряд? Просто лично я нули различать не умею.
Множество вещественных или комплексных функций — больше чем континуум. Откуда у вас в принципе взялась идея попытаться записать их все на бумаге?
И напоследок: что из множества объектов {0,0,0} число, что функция, а что степенной ряд? Просто лично я нули различать не умею.
Вот именно по этой причине я исходно и написал f(x)=0, а не просто 0.
Приведите цитату где я предложил описывать константу как множество функций.
Ну и — а чё так мало аргументов? Пишите сразу f(x,y,z,a,b,c,d,e,f,g,...)=0.
Захотелось так. Захочется функцию большего числа аргументов — приведу и её, не переживайте. Да, это будет уже другая функция.
Но вот сопоставить каждому числу функцию, которая возвращает только его — без проблем можно.
Вместо константы можно же вернуть функцию?
int zero(int argument) {return zero(argument);}
Вроде всё правильно написал.
Не вполне понял что именно вы пытаетесь сделать и причём тут эта цитата.
Я написал программу вычисления константы через функцию по вашей методике вычисления констант.
Это не методика вычисления констант, поскольку я нигде не предлагал их вычислять.
Заменил константу на функцию.
Зачем?
А цитату привёл по вашей просьбе «Приведите цитату где я предложил описывать константуы как множество функций
Но в этой цитате я не предлагаю описывать константы как множество функций.
Вы правда не видите разницы между словами "сопоставить" и "описать"?
Функции можно вкладывать друг в друга, константы — нельзя.
и матрицой 1*1 и вектором единичной размерности и тензором нулевого ранга тоже является
Это уже излишняя вольность. Да, матрицы 1x1 и числа можно сопоставить, то это не одно и тоже. Например, на матрицах определен детерминант, на числах же — нет. Грубо говря,[1] — это матрица, а 1 — это число. Но нельзя их считать одними и теми же объектами. Все-таки типы не зря придумали, это помогает.
Что касается аппроксимации произвольной функции многочленом через разложение в степенной ряд — это прежде всего алгоритм, гарантирующий совпадение n-первых производных. Получить аппроксимацию функции многочленом можно и другими способами, типа МНК, гарантирующей минимизацию площади отклонения. Более того, если не ставить задачу интерполяции многочлена через n точек как поиск значения конкретных значений у коэффициентов многочленов — её сложность можно снизить с n^3 (вычисление через обратную матрицу) до n (вычисление через рациональный многочлен с бариоцентрическими координатами).
Как функция, не определённая в нуле, может не иметь в нём разрыва?
Обычный устранимый разрыв первого рода.
Ну ваще офигеть, насколько аккуратно все математические значки и типографика в статье! Там и A одного стиля, и A другого стиля, с подвыподвертом. И ни одной орфографической ошибки не видно. Большущий респект. Видно, что человек сидел и полировал отображение, наслаждаясь процессом, как скульптор наслаждается вырезанием чего-то из дерева или камня. В наш век повального тяп-ляпства это как глоток свежего воздуха. Вот чем занимались математики 400 лет до того, как изобрели программировали (и до того, как додумались, что это можно не только читать, но и ЗАПУСКАТЬ) - полировали математические обозначения и язык.
Вот чем занимались математики 400 лет до того, как изобрели
программировали (и до того, как додумались, что это можно не только
читать, но и ЗАПУСКАТЬ) - полировали математические обозначения и язык.
Вообще-то 99% всей математики, которая нужна в физике, программировании, да и вообще почти везде, изобрели (или открыли, кому как больше нравится) задолго до программирования. Так что нет, не только обозначения и язык.
Это не по теме: мой старенький honor 10 lite спотыкается каждый раз на второй гифке (кажется, про умножение векторов). Что Вы туда запихнули?)
Для полноты информации приведу ссылку на недавнюю новость о достижениях AI в умножении матриц: AI уменьшило число операций при перемножении матриц 4x4 с 49 до 47 действий:
Вообще задача о том как именно и в каком порядке производить действия при перемножении матриц - интересна и нетривиальна.
Про это аж в Nature написали, кстати. https://www.nature.com/articles/s41586-022-05172-4
Больше всего понравился самый первый мультфильм, только слишком большая скорость воспроизведения там - не успеваешь рассмотреть-проверить!
Остальные мультфильмы тоже прикольные! Неплохо было бы иметь статью о том как такие мультфильмы программируются. Или они рисуются, или как этот процесс называется???
Я думаю очень популярная статья бы получилась!
Вот туториал от авторов библиотеки, про помощи которой делались эти мультики: https://docs.manim.community/en/stable/tutorials/index.html
А есть что-нибудь про оптимизации и алгоритмы умножений матриц, которые используются в gpu и cpu?
Сталкивался что умножение в шейдере каждый раз дает разные результаты с погрешностью, если включить оптимизацию. Для этого есть специальные директивы precise и invariant.
Разрешите позанудствовать, просто не могу проигнорировать. Дело в том, что во всех известных мне определениях, вектор не может быть ни строкой ни столбцом. Строка или столбец - это матрица размера 1xN или Nx1, но вектора не обладают никаким свойством "строчности" или "столбцовости". А то, что в статье упоминается как умножение на "вектор-столбец" или "вектор-строку" есть ни что иное как умножение просто вектора на матрицу или матрицы на вектор (и из-за отсутствия коммутативности это - две разные операции). Как следствие, например, запись x A x где x - вектор, а A - матрица, является корректной, в то время как часто встречающаяся попытка транспонировать вектор перед умножением x^T A x - избыточной, потому что транспонирование никак вектор поменять не может. Давайте уважать свойства векторов :)
в то время как часто встречающаяся попытка транспонировать вектор перед умножением x^T A x — избыточной, потому что транспонирование никак вектор поменять не может
Скорее всего, это идёт уже из программирования, где многие библиотеки для работы с матрицами определяют вектор как матрицу 1xN, тем самым делая некорректной операцию x A
.
Нет, это идёт из подхода к линалу, когда вектор определяется через матрицу. Вот буквально, фраза из учебника: "вектор-столбцом называется матрица размера..."
Что, к слову, не так глупо как может показаться. Настоящий вектор (т.е. элемент векторного/линейного пространства) вы на матрицу никак не умножите, умножать на матрицу можно только конструкцию, составленную из его координат в некотором базисе. А как такую конструкцию вводить и называть — дело десятое, она глубоко вторична, как по отношению к векторам, так и по отношению к матрицам.
Тот самый случай, когда материал легко читается благодаря добавлению качественной графики! Спасибо автору и мое уважение! В закладки и статью и автора, жду новых статей.✅
Почему умножение матриц такое