Есть ли каноническая книга по математике для программистов? [закрыто]

52

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

Существует ли книга, которая является стандартом де-факто для описания лучших практик, методологий проектирования и другой полезной информации по математике для программистов? Что из этой книги делает ее особенной?

adietan63
источник
8
Вы знаете геометрию? алгебра? тригонометрия? линейная алгебра? исчисление? Как далеко ты?
Марсело
3
@ adietan63: Предложения будут только предположениями, если вы не будете более конкретны в своих текущих математических знаниях.
Дэвид Торнли
1
Я бы использовал Python с PyGame. Если вы хотите заняться 3D без особых проблем, Panda3D от Carnegie Mellon с Disney Studios очень легко освоить.
Торстен Мюллер
1
@FrustratedWithFormsDesigner | Подходит ли java для обработки графики и игр или ее c ++?
adietan63
5
Не могли бы вы рассказать нам больше о том, как ваши коллеги-программисты используют математику? Я бы раздал совсем другой совет, если вы работаете в финансовой фирме или в магазине программирования. (Если это заставляет вас чувствовать себя в большей безопасности, подбрасывая такие слова, как «пространство Гильберта» и «гетероскедастичность», в офисе, во что бы то ни стало выучите некоторую линейную алгебру и расширенную статистику. Просто не ждите, чтобы произвести впечатление на разработчиков hoi polloi.)
rajah9

Ответы:

24

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

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

Не беспокойтесь о просмотре видео. По крайней мере, для меня видео - это медленный способ изучения, а фильмы Кхана очень скучные. Есть много других ресурсов для изучения основ математики. Как некоторые из WikiBooks или CK -12

Этот вопрос обсуждается на Math.StackExchange достаточно часто, и поиск «бесплатных ресурсов» или «бесплатных книг» принесет вам много информации и материалов. То же самое касается поисковых терминов, таких как «начало» или «новичок». Или задайте свой вопрос там. Это также работает в подразделе / r / math на Reddit. Там вы найдете больше subreddits, например, для изучения математики.

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

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

Торстен Мюллер
источник
Спасибо чувак! Твое право. Я думаю, что мне нужно начать с самого базового, чтобы понять широкую область математики.
adietan63
+100 Хан Академия отлично подходит для укрепления математических основ. Нет ничего плохого в том, чтобы начать с основ. Самостоятельное обучение устраняет «фактор унижения» незнания некоторых простых математических основ. Система оценки хорошо работает, выявляя слабые стороны и быстро преодолевая слабые стороны.
Эван Плейс,
16

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

JB King
источник
Я тоже это прочитал. Хорошая книга.
Андо
2
+1 потому что это очень хорошая книга. Не уверен, хотя, если это что-то для кого-то, кто определяет себя как "не хорошо в математике".
vartec
Было бы здорово, если бы вместо простого использования слова «очевидный» Кнут сделал некоторые части более очевидными. Но с тяжелой работой все вещи могут быть поняты, если у вас есть хороший математический фон из школы.
gruszczy
8
Имейте в виду, эта книга определенно не для начинающих.
МАК
2
Хитрость заключается в том, чтобы действительно прочитать это. Я продолжал обнаруживать, что хочу просмотреть его как руководство или веб-сайт. Это не работает Слово или понятие необъяснимо? Вы найдете это, если зайдете достаточно далеко назад. Медленно для меня (никогда не заканчивал исчисление - но больше для того, чтобы быть бездельником, чем плохим в математике), но хорошая рекомендация IMO. Они хорошо объясняют вещи. Просто будьте терпеливы и не торопитесь.
Эрик Реппен
10

Онлайновые заметки Пола из Университета Ламара представлены в формате PDF. Это очень хорошо для быстрой ссылки, и на каждой странице есть примеры. Если я когда-нибудь захочу освежиться в теме или что-то понять, я, как правило, возвращаюсь на этот сайт.

Вот набор:

Алгебра (Math 1314): полные заметки
Список содержимого

  • Предварительные сведения - Свойства экспонент, Рациональные экспоненты, Отрицательные экспоненты, Радикалы, Полиномы, Факторинг, Рациональные выражения, Комплексные числа
  • Решение уравнений и неравенств - линейные уравнения, квадратные уравнения, заполнение квадрата, квадратная формула, приложения линейных и квадратичных уравнений, приводимые к квадратичной форме, уравнения с радикалами, линейные неравенства, полиномиальные и рациональные неравенства, уравнения абсолютных значений и неравенства.
  • Графики и функции - построение графиков линий, окружностей и кусочных функций, определение функций, обозначения функций, состав функций, обратные функции.
  • Общие графы - параболы, эллипсы, гиперболы, абсолютное значение, квадратный корень, константа, рациональные функции, сдвиги, отражения, симметрия.
  • Полиномиальные функции - деление полиномов, нули / корни полиномов, нахождение нулей полиномов, построение графика полиномов, частичные дроби.
  • Экспоненциальные и логарифмические функции - экспоненциальные функции, логарифмические функции, решение экспоненциальных функций, решение логарифмических функций, приложения.
  • Системы уравнений - метод подстановки, метод исключения, расширенная матрица, нелинейные системы.

Исчисление I (Математика 2413): разделены на

  1. Список содержимого
  2. Примечания
  3. Проблемы с практикой
  4. Решения для практических задач
  5. Проблемы с назначением

    • Обзор алгебры / триггера - тригональные функции и уравнения, экспоненциальные функции и уравнения, логарифмические функции и уравнения.
    • Пределы - Концепции, Определение, Вычисления, Односторонние Пределы, Непрерывность, Пределы, Включающие Бесконечность, Правило L'Hospitals
    • Производные - Определение, Интерпретации, Производные формулы, Степенное правило, Правило произведения, Факторное правило, Цепное правило, Производные высшего порядка, Неявное дифференцирование, Логарифмическое дифференцирование, Производные тригональных функций, Экспоненциальные функции, Логарифмические функции, Функции обратных тригонов, Тригголические функции и Гиперби ,
    • Применение производных - связанные коэффициенты, критические точки, минимальные и максимальные значения, функции увеличения / уменьшения, точки перегиба, вогнутость, оптимизация
    • Интеграция - определение, неопределенные интегралы, определенные интегралы, правило подстановки, оценка определенных интегралов, основная теорема исчисления
    • Приложения интегралов - среднее значение функции, площадь между кривыми, тела вращения, работа.

Исчисление II (Математика 2414) Полные заметки

Исчисление III (Math 2415) Полные заметки

Линейная алгебра (Математика 2318) Полные заметки

Дифференциальные уравнения (Math 3301) Полные заметки

Вы можете проверить сайт для остальной части списков тем.

phwd
источник
1
Не могу поверить, что это не имеет больше голосов. Пол бог.
n0pe
8

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

Например, первый :

Если мы перечислим все натуральные числа ниже 10, кратные 3 или 5, мы получим 3, 5, 6 и 9. Сумма этих кратных равна 23.

Найти сумму всех кратных 3 или 5 ниже 1000.

Питер К.
источник
Вопросы Project Euler, безусловно, основаны на математике, но проблема, с которой я столкнулся, заключалась в том, что они были настолько продвинуты, что я смог их решить только с помощью алгоритмов грубой силы (если я не обманывал). Они говорят, что вы сможете найти элегантное решение, которое работает менее чем за 60 секунд для всех вопросов.
Майк
4
@ Майк, я не думаю, что исследование подобных проблем и попытка понять основные концепции достаточно хорошо, чтобы напасть на проблему, - обман. Вы учитесь больше, «обманывая» этот путь, а не проводя все эти исследования.
Дуг Т.
1
Я сделал много из них, и это улучшило мои навыки программирования. Хотя в отношении математики вы в основном изучаете много хитрых трюков, но не добавляете много к фундаментальным знаниям, таким как исчисление или алгебра. Но это добавляет вам мотивацию заниматься математикой.
Торстен Мюллер
1
@thorsten: моя жена (математик в семье) считает, что математика - это ТОЛЬКО куча хитрых уловок. :-)
Питер К.
1
Обычно я сталкиваюсь с проблемами Эйлера: сначала я пробую грубую силу и оптимизирую ее. Одно это научило многим математическим фактам, которых я никогда не знал. Чтение форумов решений впоследствии обычно приводит к еще большему пониманию математики.
Система
8

Я всегда рекомендую дискретную математику Кеннета Розена и ее приложения . Он охватывает много разных тем (как и любая хорошая книга по дискретной математике) с хорошим балансом теории и применения. У этого также есть много интересных боковых панелей на математиках и компьютерных ученых, которые создали рассматриваемые понятия.

Билл Ящерица
источник
Спасибо! но каковы предпосылки перед изучением дискретной математики и т. д.
adietan63
1
@ adietan63: алгебра - это все, что, я бы сказал, требуется . Мой университет позволил нам принять дискретную математику перед исчислением или статистикой, но, конечно, не помешало бы сделать это первым.
Билл Ящерица
@ adietan63: Вы также можете проверить некоторые учебники по математике Head First, если вам требуется повышение квалификации, или посмотреть бесплатные онлайн-видео лекции.
Билл Ящерица
@ Билл Спасибо! Возможно, я испытываю давление при изучении этого материала, потому что хочу научиться многим вещам в программировании за короткий промежуток времени. Может быть, я возьму это по одному за раз. Я думаю, что это часть учебного процесса. еще раз спасибо!
adietan63
7
Пожалуйста. Кроме того, чувство «я хочу многому научиться в программировании за короткий промежуток времени» никогда не исчезает. :)
Билл Ящерица
4

Хотя чтение 1000 дискретных учебников по математике является хорошим решением, оно не может быть оптимальным путем, если время является ограничением. Если вы хотите узнать, сколько математики вам нужно, не углубляясь, взгляните на приложение A введения книги (cormen) Algorithm : http://www.acmsolver.org/books/ Введение% 20to% 20Algorithms,%% 20Ed двести второго% 20-% 20Thomas% 20H.% 20Cormen.pdf

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

http://www.amazon.com/Journey-into-Mathematics-Introduction-Proofs/dp/0486453065/ref=sr_1_15?ie=UTF8&qid=1308591694&sr=8-15 введите описание изображения здесь

На мой взгляд, умение доказывать (особенно по индукции) является краеугольным камнем в понимании алгоритмов анализа . К сожалению, большинство алгоритмов и даже курсы по математике CS не слишком сосредоточены на доказательстве. они уже предполагают, что вы компетентны в этом, поэтому они не выходят за рамки нескольких страниц. Книга «Путешествие в математику» очень маленькая и легко читаемая. Он использует задачи CS и их математический аспект. Другими полезными темами для изучения являются матричная арифметика , вероятность , счет и теория графов .

Два других популярных больших учебника: Discrete Math и его приложение из EPP (мой любимый) и другой от Розена.

http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0534359450/ref=sr_1_4?ie=UTF8&qid=1308591784&sr=8-4

http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0073229725/ref=sr_1_1?ie=UTF8&qid=1308591784&sr=8-1

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

Armando
источник
1

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

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

Лучший урок математики, который у меня когда-либо был, это то, что я считал своим первым «настоящим» уроком математики: в основном введение в класс доказательств, охватывающий широкий спектр областей от теории графов до теории чисел. Текст, который мы использовали, был великолепен (« Математическое мышление: решение проблем и доказательства» Д'Анджело и Уэста .) Вы можете найти полезным просто проработать эту книгу, чтобы получить некоторые идеи атакующих доказательств.

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

Эдвард Томсон
источник
| Спасибо чувак! Я думаю, что даже если Мат не может помочь тебе все время. Может быть, его присутствие поможет вам в критическом мышлении и улучшит ваши аналитические способности?
adietan63
Честно говоря, я думаю, что вам нравится слово «откровенно».
Букзор
1

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

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

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

Ando
источник
2
Не согласен, хорошие навыки программирования связаны с хорошими математическими навыками.
Марсело
1
Ну, я считаю, что вы можете не согласиться. Я думаю, что разногласия - это право, но если это заставляет вас чувствовать себя уполномоченным преуменьшить мой вклад, это действительно рискованно.
Андо
Привилегии - голосуйте против - требует 125 репутации; Вы уже заработали эту привилегию.
Марсело
1
Проголосовал, потому что я согласен, что вам не нужна математика, чтобы стать хорошим программистом во многих областях. Хотя я категорически не согласен с тем, что математика не очень полезна. Даже если вы не нуждаетесь в математике в своей повседневной работе, вы многому научитесь, изучая определенные аспекты математики, и если вам достаточно понять нотацию big-O.
Торстен Мюллер
1

Глядя на примечания к некоторым курсам (для начинающих) из раздела ESSLLI «Логика и вычисления» (например, предстоящая программа 2011 года или программа 2010 года , поиск дополнительных) может быть интересным. Это даст вам представление о текущих теоретических разработках в области, связанной с программированием. Затем вы можете более глубоко изучить основы определенного подполя, затронутого в этих курсах.

(В противном случае, трудно ответить на ваш вопрос, существует так много разных «математик», в которых вы, возможно, не нуждаетесь или не заинтересованы. Одна из причин, по которой курсы ESSLLI могут оказаться интересными для нас, заключается в том, что они отражают некоторые современные исследования, то есть они решают определенные головоломки, и попытка решить определенную головоломку является важным компонентом в процессе реального понимания теории, понимания того, что за ней интересно.)

imz - Иван Захарящев
источник
1

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

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

CdMnky
источник
1

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

sakisk
источник