Подтвердить что ты не робот

В каких областях программирования полезно знание математики?

Например, математическая логика, теория графов.

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

Я знаю, что есть похожие потоки, но я не видел никакого описания такого случая.

4b9b3361

Ответ 1

Компьютерная графика.

Все матричное умножение, векторные пространства, аффинные пространства, проекция и т.д. Много и много алгебр.

Для получения дополнительной информации здесь статья Википедии о прогнозе, а также более конкретный случай 3D-проекции, со всеми его различными матрицами. OpenGL, общая библиотека компьютерной графики, является примером применения операций аффинной матрицы для transform и проецировать объекты на экран компьютера.

Ответ 2

Я думаю, что многие программисты используют больше математики, чем они думают. Просто это так интуитивно для них, что они даже не думают об этом. Например, каждый раз, когда вы пишете оператор if, вы не используете свое знание Discrete Math?

Ответ 3

В графическом мире вам нужно много преобразований.
В криптографии вам нужна геометрия и теория чисел.
В ИИ вам нужна алгебра.
И статистика в финансовой среде.
Теориям компьютеров нужна математическая теория: на самом деле почти все основатели принадлежат математике.

Ответ 4

Учитывая список мест с широтами и долготами, сортируйте список по порядку от ближайшего к самому удаленному от конкретной позиции.

Все приложения, которые имеют дело с деньгами, нуждаются в математике.

Я не могу придумать ни одного приложения, которое я написал, которое в какой-то момент не требовало математики.

Ответ 5

Я написал компилятор парсера несколько месяцев назад и полный теории графов. Это было сделано только для того, чтобы быть немного более мощным, чем регулярные выражения (в том, что было разрешено несколько совпадений, а также некоторые другие функции), но даже такой простой компилятор требует обнаружения циклов, автоматов с конечным состоянием и более математики.

Ответ 6

Реализация алгоритма Advanced Encryption Standard (AES) потребовала некоторого базового понимания математики конечного поля. См. Действие 4 мое сообщение в блоге на нем для получения подробной информации (включая образец кода).

Ответ 7

Я использовал много алгебр при написании бизнес-приложений.

Простые примеры

BMI = weight / (height * height);
compensation = 10 * hours * ((pratio * 2.3) + tratio);

Ответ 8

Несколько лет назад у меня был проект DSP, который должен был вычислить реальный радиус-2 FFT размера N за данный момент времени. Реализованный поставщиком риф-2 FFT не будет работать в назначенное время, но их сложный БПФ размером N/2 будет. Реальные данные легко интегрировать в сложный БПФ. Получать ответы потом не так просто: это называется пост-ткачеством, или пост-развязывающим, или развязывающим. Выведение невязких уравнений из БПФ и теории комплексных чисел было не забавным. Переход оттуда к плотно оптимизированному коду DSP был не менее забавным.

Естественно, измеряемый сигнал я не соответствовал размеру выборки БПФ, что вызывает артефакты. Стандартное исправление - применить окно Ханнинга. Это вызывает другие артефакты. В рамках понимания (и тестирования) этого кода мне приходилось понимать артефакты, вызванные окном Ханнинга, поэтому я мог интерпретировать результаты и решать, работает ли код или нет.

Ответ 9

Я использовал тонны математики в различных проектах, в том числе:

  • Теория графов для работы с зависимостями в больших системах (например, Makefile - это своего рода ориентированный граф)
  • Статистика и линейная регрессия в узких местах производительности профилирования
  • Преобразования координат в геопространственных приложениях
  • В научных вычислениях требования к проекту часто указываются в алгебраической форме, особенно для интенсивного вычислительного кода

И это просто с головы.

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

Ответ 10

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

Ответ 11

Общий вид разума

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

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

Точность языка/логическое мышление. Математика имеет очень короткий, но точный язык. Учимся заниматься этим, подготовит вас к компьютерам, делая то, что вы говорите, а не то, что вы имели в виду. Кроме того, для анализа достаточной спецификации требуется такая же точность, чтобы проверить фрагмент кода, если он охватывает все возможные случаи и т.д.

Красота и элегантность. Это может быть аргумент, который трудно понять. Я понял, что понятие "красота" в коде очень близко к понятию "математика". Прекрасным доказательством является тот, чья идея сразу убедительна, и само доказательство просто выполняет последовательность выполнения следующего очевидного шага.

То же самое касается элегантной реализации.

(Большинство математиков, с которыми я столкнулся, имеют файтин для того, чтобы поместить эффект "Ага!" в конце, а не в начале. Как и большинство элитных выродков).

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

Прикладные навыки

Примеры: - Не нужно запускать calc.exe для быстрой оценки требований к памяти - Некоторые базовые статистические данные, показывающие правильное измерение производительности от выстрела в темноте - вывод формулы для последовательности значений, а не их жесткого кодирования - Получение ощущения от того, что означает c * O (N log N). - Рекурсия такая же, как и доказательство индуктивности

(этот список, вероятно, продолжится, если я буду активно наблюдать за предметами за день. Эта часть, по общему признанию, сложнее, чем я думал. Дальнейшие предложения приветствуются;))

Где я использую

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

Ответ 12

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

Я просмотрел множество простых чисел, прежде чем найти числа, которые хорошо работали с моими данными. Тестирование потребовало некоторой статистики и оценок вероятностей.

Ответ 13

В машинное обучение: мы все время используем Bayesian (и другие вероятностные) модели; мы используем квадратичное программирование в виде Support Vector Machines, не говоря уже о всех видах математических преобразований для различных функции ядра. Исчисление (производные) влияет на обучение персептронов. Не говоря уже о целой теории определения точности классификатора машинного обучения.

В искусственном интеллекте: ограничение ограничений, а логика очень велик.

Ответ 14

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

Есть много других ситуаций, но это тот, который я получил от головы. По сути, все операции, которые мы делаем, - это математика или, по крайней мере, зависят от/связаны с математикой.

Вот почему важно знать математику, чтобы иметь более четкое понимание вещей:)

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

Спасибо

Ответ 15

-Графика (матрицы, переводы, шейдеры, интегральные аппроксимации, кривые и т.д., и т.д.) бесконечные точки)
-Алгоритм Сложность вычислений (специально для бизнес-приложений)
-Поверхностная арифметика
- Криптография под полевой арифметикой и т.д.
-GIS (треугольники, алгоритмы квадратов, такие как delone, ограничивающие прямоугольники и многое другое)
- Счетчики монитора производительности и функции, которые они описывают
-Функциональное программирование (просто это, не говоря больше:))
-......

Ответ 16

Я использовал Combinatorials для заполнения 20 бит данных в 14 бит пространства.

Ответ 17

Машинное зрение или Компьютерное зрение требует глубокого знания вероятности и статистики. Обнаружение/распознавание объектов и многие контролируемые методы сегментации основаны на байесовском выводе. Тяжело и по линейной алгебре.

Ответ 18

Как инженер, я очень стараюсь думать о экземпляре, когда мне не нужна математика. Та же история, когда я был студентом-градиентом. Конечно, я не программист, но я много использую компьютеры.

Ответ 19

Для игр и симуляций нужно много математики - динамика жидкости, в частности, для таких вещей, как пламя, туман и дым.

Ответ 20

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

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

Тогда существует маскировка бит...

Преобразование шестнадцатеричного в основание десяти в вашей голове...

Оценка потенциала нагрузки приложения...

Да, если кто-то плохо разбирается в математике, они, вероятно, не очень хороший программист.

Ответ 21

Современные коммуникации полностью разрушались без математики. Если вы хотите, чтобы ваша голова взорвалась когда-нибудь, посмотрите поля Галуа, коды с исправлением ошибок и сжатие данных. Тогда символьные созвездия, ограниченные по диапазону интерполяционные функции (я говорю о функциях sinc и поднятых косинусов, а не о простых линейных и бикубических вещах), преобразованиях Фурье, восстановлении часов, минимально-неоднозначных тренировочных последовательностях символов, появлении Рэлея и/или Ricean, и фильтрация Калмана. Все это связано с математикой, из-за которой у меня болит голова, и я получил степень магистра в области электротехники. И это как раз от моей головы, от моего класса беспроводной связи.

Объем математики, необходимый для работы вашего мобильного телефона, огромен. Сделать сотовый телефон 3G с доступом в Интернет поражает. Чтобы доказать с достаточной уверенностью, что алгоритм будет работать в большинстве случаев, иногда требуется карьера людей.

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

Ответ 22

Примеры, которые я лично кодировал:

  • написал простую видеоигру, где один космический корабль снимает лазер на другом корабле. Чтобы узнать, находился ли корабль в лазерном тракте, я использовал базовую алгебру y = mx + b, чтобы вычислить, пересекаются ли пути. (Я был ребенком, когда я это сделал, и был совершенно поражен тем, что что-то, чему учили на доске (алгебре), можно было бы применить к компьютерному программированию.)
  • расчет ипотечных остатков и графиков погашения с логарифмами
  • анализ выбора потребительских покупок путем вычисления комбинаторики
  • тригонометрия для имитации поведения объектива камеры
  • Преобразование Фурье для анализа цифровых музыкальных файлов (WAV файлов)
  • анализ фондового рынка со статистикой (линейные регрессии)
  • использование логарифмов для понимания бинарных поисковых обходов, а также экономии дискового пространства при использовании информации о упаковке в полях бит. (Я не вычисляю логарифмы в фактическом коде, но я определяю их во время "дизайна", чтобы увидеть, возможно ли даже его кодировать.)

Ни один из моих проектов (до сих пор) не требовал таких вопросов, как исчисление, дифференциальные уравнения или матрицы. Я не изучал математику в школе, но если проект требует математики, я просто ссылаюсь на свои математические книги, и если я застрял, я искал google.

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

Ответ 23

Повторяющаяся тема, которую я вижу из этих ответов, состоит в том, что это явно контекстно-зависимый.

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

Таким образом, в зависимости от того, что вы хотите сделать, вам может не понадобиться больше математики, чем вы, чтобы опубликовать свой вопрос (!), или вам, возможно, понадобится кандидат наук (т.е. вы хотели бы написать собственное геометрическое ядро ​​для турбины конструкция лопастного вентилятора).

Ответ 24

Когда-то я писал что-то для своего Commodore 64 (я забыл, что мне, должно быть, было 6 лет), и я хотел бы нанести некоторый текст горизонтально на экране.

Я разработал формулу, используя комбинацию математических и пробных ошибок; лет спустя я бы занялся такими проблемами, используя фактическую алгебру.

Ответ 25

Рисование, перемещение и руководство ракетами и пушками и лазерами и гравитационными бомбами и многое другое в этой маленькой 2-й видеоигре, которую я сделал: wordwarvi

Многое использует синус/косинус и их обратные (через таблицы поиска... Я стар, хорошо?)

Ответ 26

Для любого сайта/приложения на основе геоданных потребуется математика. Простой пример: "Покажите мне все возможности Боба Пиццы в пределах 10 миль от меня" на веб-сайте. Вам понадобится математика для возврата лат/логов, которые происходят в радиусе 10 миль.

Ответ 27

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

Если вы выполняете летные симуляции и что-нибудь 3D, поздоровайтесь с кватернионами! Если вы занимаетесь электротехникой, вы будете использовать триггерные и комплексные числа. Если вы делаете ипотечный калькулятор, вы будете делать дискретную математику. Если вы делаете проблему оптимизации, где вы пытаетесь получить максимальную прибыль от своего виджета factory, вы будете делать так называемое линейное программирование. Если вы выполняете некоторые операции, включающие, скажем, сетевые адреса, добро пожаловать в разновидность бит-ориентированной математики, которая приходит вместе с ней. И это только для языков высокого уровня.

Если вы вникаете в высоко оптимизированные структуры данных и сами их реализуете, вы, вероятно, будете делать больше математики, чем если бы вы просто хватали библиотеку.

Ответ 28

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

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

В общем, я использую небольшое подмножество того, что я узнал по математике/количественным методам. Обычно простая алгебра со случайным использованием вероятности достаточно - особенно если ваше приложение в основном связано с обработкой записей...
 С другой стороны, я обнаружил, что знание широкого спектра математических методов или идей помогает вам лучше думать о проблемах, видеть связи, сходства и несходства или лучше знать, что искать.

Ответ 29

Часть хорошего программиста знакома с доменом, в котором вы программируете. Если вы работаете над программным обеспечением для Fidelity Mutual, вам, вероятно, потребуется знать инженерную экономику. Если вы разрабатываете программное обеспечение для Gallup, вам, вероятно, нужно знать статистику. LucasArts... возможно, линейная алгебра. НАСА... Дифференциальные уравнения.

Что касается разработки программного обеспечения, вы почти всегда должны носить много шляп.

Ответ 30

Более или менее все, что связано с поиском наилучшей компоновки, оптимизации или отношения объектов, - теория графов. Вы не можете сразу думать об этом как таковом, но независимо - вы используете математику!

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

И, как говорили другие, все, что связано с графикой, неявно требует знания линейной алгебры, преобразования координат пространства и множества других подтемов математики. Взгляните на любой недавний графический документ, особенно на освещение. Интегралы? Бесконечная серия?! Теория графов? node оптимизация обхода? Да, все они обычно используются в графике.

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