Чи є канонічна книга з математики для програмістів? [зачинено]


52

Я програміст-самоучок. Я, чесно кажучи, не добре в математиці. Яку пораду ви можете дати, щоб покращити мої математичні навички, щоб я не був таким невпевненим у своїх колегах-програмістах? Які кроки чи рекомендації можна рекомендувати для вдосконалення моїх математичних навичок?

Чи є там книга, яка є фактичним стандартом для опису найкращих практик, методологій проектування та іншої корисної інформації з математики для програмістів? Що з цією книгою робить її особливою?


8
Ви знаєте геометрію? алгебра? тригонометрія? лінійна алгебра? числення? Як далеко ви знаходитесь?
Марсело

3
@ adietan63: Пропозиції будуть лише міркуваннями, якщо ви не будете більш конкретні щодо своїх сучасних математичних знань.
Девід Торнлі

1
Я б використовував Python з PyGame. Якщо ви хочете потрапити в 3D без особливих проблем, тоді Panda3D від Carnegie Mellon зі студії Disney дуже легко вивчити.
thorsten müller

1
@FrustratedWithFormsDesigner | Чи підходить java для обробки графіки та ігор чи її c ++?
adietan63

5
Скажіть, будь ласка, ще трохи про те, як ваші колеги-програмісти використовують математику? Я б не давав зовсім інших порад, якщо ви працюєте у фінансовій фірмі порівняно з магазином програмування. (Якщо це змушує вас відчувати себе більш безпечно кидати такі слова, як "космос Гільберта" та "гетерокедастичність" по всьому офісу,
явно

Відповіді:


24

Хм, з того, що ви говорите, здається, ви хочете почати дуже просто. Нічого поганого в цьому я не зробив. Моя математика була здебільшого середньошкільною, і багато про неї забули.

Почніть з Академії Хана , перейдіть до розділу практики і подивіться, як далеко ви можете дістатися. Це дасть вам гарне уявлення про те, що можна зробити і з чого почати вчитися.

Не переймайтеся переглядом відео. Принаймні, для мене відео - це лише повільний шлях до навчання, а Хана - це дуже нудно. Є багато інших ресурсів для вивчення базової математики. Як і деякі WikiBooks або ck-12

Питання обговорюється на Math.StackExchange досить часто, а пошук "безкоштовних ресурсів" або "безкоштовних книг" принесе вам багато інформації та матеріалів. Те саме стосується і пошукових термінів типу "старт" або "новачок". Або задайте там своє запитання. Це добре працює і в підрозділі / r / math на reddit. Там ви знайдете більше підкредитів, наприклад, для вивчення математики.

Тренуйтеся багато. Недостатньо просто зрозуміти поняття і перейти до наступного. Ви повинні відчувати себе комфортно, щоб застосувати його. Ви не зрозумієте відсотків, якщо вам не комфортно ділення та множення (як приклад). Це справедливо і для вищих понять. Ось чому для мене секція практики в Хані набагато цінніша за відео.

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


Спасибі людино! Ваше право. Я думаю, що мені потрібно почати з самого основного, щоб зрозуміти широку область математики.
adietan63

+100 KhanAcademy чудово підходить для зміцнення математичних основ. Немає нічого поганого в тому, щоб почати з основ. Самостійне навчання прибирає «фактор приниження», що не знає деяких простих основ математики. Система оцінювання добре допомагає визначити слабкі місця та швидко вийти за межі слабких місць.
Еван Плейс

16

Конкретна математика: Фундація комп’ютерних наук (2-е видання) стане моїм вибором для хорошої книги з математики, що охоплює різні сфери математики, а також вміння користитися книзі, яка може бути корисною.


Я теж це прочитав. Гарна книга.
Андо

2
+1, тому що це дуже гарна книга. Не впевнений, хоча якщо це щось для того, хто визначає себе як "не хороший у математиці".
vartec

Було б чудово, якби замість того, щоб просто використовувати слово "очевидний" Кнут зробив деякі частини більш очевидними. Але з наполегливою працею все можна зрозуміти, якщо хтось має добрий математичний досвід у школі.
gruszczy

8
Будьте попереджені, ця книга точно не для початківців.
МАК

2
Хитрість полягає в тому, щоб насправді її прочитати. Я постійно знаходив себе у бажанні переглядати це як посібник чи веб-сайт. Це не працює. Слово чи поняття незрозуміле? Ви знайдете його, якщо підете досить далеко назад. Повільний процес для мене (ніколи не закінчив обчислення - але більше для того, щоб бути лайдаком, ніж поганим у математиці), але хороша рекомендація ІМО. Вони добре пояснюють речі. Просто наберіться терпіння і не поспішайте.
Ерік Реппен

10

Інтернет-нотатки Павла з університету Ламар випускаються у форматі PDF. Це дуже добре для швидкого посилання і на кожній сторінці є приклади. Якщо я коли-небудь хотів оновити себе в темі або зрозуміти щось, я схильний повертатися на цей сайт.

Ось набір:

Алгебра (Math 1314): Повний конспект
Перелік змісту

  • Попередні описи - властивості експонентів, раціональні показники, негативні показники, радикали, поліноми, факторинг, раціональні вирази, складні числа
  • Розв’язування рівнянь та нерівностей - лінійні рівняння, квадратичні рівняння, заповнення квадрата, квадратична формула, додатки лінійних і квадратичних рівнянь, придатні до квадратичної форми, рівняння з радикалами, лінійні нерівності, поліноміальні та раціональні нерівності, абсолютні рівняння рівнянь та нерівності.
  • Графікування та функції - графічні лінії, кола та фрагменти, визначення функції, нотація функцій, склад функцій, обернені функції.
  • Загальні графіки - параболи, еліпси, гіперболи, абсолютна величина, квадратний корінь, постійні функції, раціональні функції, зрушення, відбиття, симетрія.
  • Поліноміальні функції - поділ на многочлени, нулі / корені многочленів, знаходження нулів многочленів, графічні поліноми, часткові дроби.
  • Експоненціальні та логарифмічні функції - Експоненціальні функції, Логарифмічні функції, Розв’язання Експоненціальних Функцій, Розв’язання Логарифм Функцій, Прикладних програм.
  • Системи рівнянь - метод заміщення, метод усунення, доповнена матриця, нелінійні системи.

Обчислення I (математика 2413): розділено на

  1. Перелік змісту
  2. Примітки
  3. Проблеми з практикою
  4. Рішення проблем практики
  5. Проблеми із призначенням

    • Огляд алгебри / трійки - тригонні функції та рівняння, експоненціальні функції та рівняння, логарифмові функції та рівняння.
    • Обмеження - поняття, визначення, обчислення, односторонні обмеження, безперервність, обмеження, що включають нескінченність, правило L'Hospitals
    • Похідні - визначення, інтерпретації, похідні формули, правило потужності, правило продукту, коефіцієнт правила, ланцюгове правило, похідні вищого порядку, неявна диференціація, логарифмічна диференціація, похідні функцій триггера, експоненціальні функції, функції логарифму, інверсійні тригги .
    • Застосування похідних - суміжні показники, критичні точки, мінімальні та максимальні значення, функції збільшення / зменшення, точки перегину, увігнутість, оптимізація
    • Інтеграція - визначення, невизначені інтеграли, визначені інтеграли, правило заміщення, оцінка визначених інтегралів, фундаментальна теорема обчислення
    • Застосування інтегралів - середнє значення функції, площа між кривими, твердими частинами революції, робота.

Обчислення II (математика 2414) Повні примітки

Обчислення III (математика 2415) Повні нотатки

Лінійна алгебра (математика 2318) Повні нотатки

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

Ви можете перевірити сайт для решти списків тем.


1
Не можу повірити, що це не має більше голосів. Павло - бог.
n0pe

8

Я усвідомлюю, що це не книга, але я думаю, що це може бути хорошим способом розширити своє мислення про математику. Спробуйте опрацювати проблеми Project Euler .

Наприклад, перший :

Якщо перерахувати всі натуральні числа нижче 10, кратні 3 або 5, отримаємо 3, 5, 6 і 9. Сума цих кратних дорівнює 23.

Знайдіть суму всіх кратних 3 або 5 нижче 1000.


Питання Project Euler напевно базуються на математиці, але проблема, яку я мав з ними, полягала в тому, що вони настільки швидко просунулися, що єдиний спосіб, коли мені вдалося їх вирішити, було за допомогою алгоритмів грубої сили (якщо я не обдурив). Вони кажуть, що ви повинні мати можливість знайти елегантне рішення, яке триватиме менше 60 секунд для всіх питань.
Майк

4
@Mike, я не думаю, що досліджую подібні проблеми і намагаюся зрозуміти основні поняття достатньо добре, щоб напасти на проблему - це обман. Ви дізнаєтесь більше, "обманюючи" таким чином, не роблячи всіх цих досліджень.
Дуг Т.

1
Я зробив багато з них, і це покращило мої навички програмування. Хоча щодо самої математики ви в основному вивчаєте багато акуратних хитрощів, але не додаєте багато фундаментальних знань, таких як обчислення чи алгебра. Але це додає вам мотивації займатися математикою.
thorsten müller

1
@thorsten: моя дружина (математик у родині) вважає, що математика ТІЛЬКИ є купою акуратних хитрощів. :-)
Пітер К.

1
Те, як я зазвичай переживаю проблеми Ейлера, полягає в тому, що спочатку я зазвичай спробую грубу силу та оптимізую її. Це одне навчило багато математичних фактів, яких я ніколи не знав. Після цього читання форумів рішень зазвичай дає ще більше математичних уявлень.
Запуск системи

8

Я завжди рекомендую дискретну математику Кеннета Розена та її застосування . Він охоплює безліч різних тем (як і будь-яка хороша книга «Дискретна математика») з хорошим балансом теорії та застосування. Він також має багато цікавих бічних панелей щодо математиків та вчених-комп'ютерів, які зароджували ці поняття.


Дякую! але які передумови перед вивченням дискретної математики тощо
adietan63

1
@ adietan63: Алгебра - це все, що я б сказав, потрібно . Мій університет дозволить нам взяти дискретну математику перед обчисленням або статистикою, але це, звичайно, не завадило б прийняти їх першими.
Білл Ящірка

@ adietan63: Ви також можете перевірити деякі математичні книги Head First, якщо вам потрібно оновити, або переглянути безкоштовні онлайн-лекції онлайн.
Білл Ящірка

@Bill Дякую! Можливо, я відчуваю тиск при вивченні цього матеріалу, тому що я хочу навчитися багато чого з програмування за короткий проміжок часу. Можливо, я візьму його по одному. Я думаю, що це частина навчального процесу. знову дякую!
adietan63

7
Ласкаво просимо. Крім того, таке відчуття "я хочу навчитися багато чому з програмування за короткий проміжок часу" ніколи насправді не згасає. :)
Білл Ящірка

4

Під час читання 1000 дискретних книг з математики є хорошим рішенням, це може бути не оптимальним шляхом, якщо час обмежує час. Якщо ви хочете мати смак того, скільки математики ви повинні мати, щоб піти на глибоке, загляньте в додаток А до введення книги (алгоритму) Cormen : http://www.acmsolver.org/books/ Вступ% 20 до% 20Альгоритми,% 202%% 20Ed% 20-% 20Томи% 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 та їх математичний аспект. Інші хороші теми, які слід вивчити - це арифметика матриці , ймовірність , підрахунок та теорія графів .

Інші два популярні великі підручники: дискретна математика та її застосування від EPP (мій улюблений) та інший від Rosen.

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

Мені не приємно читати підручник під назвою " Конкретна математика ", але я завжди чув про це хороші речі.


1

Відверто кажучи, ви можете бути абсолютно адекватним програмістом у багатьох сферах без принципово дуже сильних знань математики. Ви можете бути не дуже здатними, якщо мова йде про ігрові двигуни або оптимізацію мережевої маршрутизації, але правда, багато ділових додатків досить прості. Однак я б закликав вас зберігати надію живими та ще не здаватися на математику.

Існує різниця у світі між математикою, яку ти береш на нижчому рівні, і математикою, яку ти береш на більш високому рівні. Дуже інакше сказати, що ти з Calculus поганий (я був - я провалив Calc, коли я вперше взяв його), ніж сказати, що ти поганий у графічній теорії. Коли ви просуваєтеся з математики, увага зосереджується не на простому вирішенні задач, відверто кажучи, досить нудному і повторюваному, що може бути зроблено вашим графічним калькулятором. Натомість увага зосереджується на навичках логічного мислення: побудова доказів відверто схожа на написання програмного забезпечення.

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

Загалом, чи справді мені потрібна була математика, яку я взяв у коледжі? Ні, напевно, ні. Але наявність певного досвіду дала мені кращі навички критичного мислення, кращу уяву (зазвичай існує багато способів вирішити проблему, іноді хороша, іноді погана, але унікальна ідея може бути корисною) та впевненість у вирішенні проблеми.


| Спасибі людино! Я думаю, навіть якщо математика не може тобі постійно допомагати. Можливо, його присутність допоможе вам у критичному мисленні та покращить ваші аналітичні навички?
adietan63

Чесно кажучи, я думаю, що вам подобається слово "відверто".
bukzor

1

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

Знати так багато речей, ви не можете розраховувати, що в них буде добре, але математика, зокрема, не дуже корисна.

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


2
Не погоджуючись, хороші навички програмування пов'язані з хорошими математичними навичками.
Марсело

1
Ну, я вважаю, що ви можете не погодитися. Я вважаю, що незгода є правом, але якщо через це ви відчуваєте повноваження відмовитись від мого внеску, це дійсно ризиковано.
Андо

Привілеї - голосування проти - вимагає 125 репутації; ви вже заслужили цю пільгу.
Марсело

1
Оновлено, оскільки я згоден, що математика вам не потрібна, щоб стати хорошим програмістом у багатьох областях. Хоча я сильно не згоден, що математика не дуже корисна. Навіть якщо математика вам не потрібна у щоденній роботі, ви багато отримуєте від засвоєння певних аспектів математики, і лише для того, щоб зрозуміти нотацію big-O.
thorsten müller

1

Дивлячись на конспекти деяких курсів (для початківців) з розділу «Логіка та обчислення» ESSLLI (як приклад майбутньої програми 2011 року або програми 2010 року , шукайте більше), може бути цікаво. Це дасть вам уявлення про сучасні теоретичні розробки в галузі, пов'язані з програмуванням. Тоді ви можете вирішити глибше вивчити основи в певному підполі, доторканому в цих курсах.

(Інакше важко відповісти на ваше запитання. Є так багато різних "математик", які вам, можливо, не дуже потрібні або зацікавлені. Одна з причин, чому курси ESSLLI можуть виявитись цікавими для нас, тому що вони відображають деяку сучасність дослідження, тому вони стосуються розгадування певних головоломок; намагання розгадати певну головоломку є важливою складовою в процесі реального розуміння теорії, розуміння того, що за цим цікаво).


1

Якщо ви правильно вивчаєте математику CS, то ви дивитесь на такі речі, як математична логіка та теорія множин. Це декілька досить задіяних математик, які їх підтримують. Отже, якщо ваш базовий рівень математики трохи тросивий, тоді вам краще починати з основ, перш ніж переходити до більш пов'язаних з КС областей.

Тому я б запропонував почати з інженерної математики К. А. Стройда . Добре написаний, простий у дотриманні та висвітлює основи, а також більш досконалі речі.


1

Почніть з основ, а потім перейдіть до спеціалізованих: «Задоволення математика та як це вирішити» , щоб почати дві чудові книги. Захоплення математика підходить до фундаментальних математичних тем (наприклад, геометрія, алгебра, обчислення тощо) по-людськи приємним та забавним чином. Я ще не читав, як це вирішити, але він зосереджений на тому, як атакувати математичні проблеми, міркуючи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.