Có một cuốn sách kinh điển về toán học cho các lập trình viên? [đóng cửa]


52

Tôi là một lập trình viên tự học. Tôi thành thật không giỏi toán. Lời khuyên nào bạn có thể đưa ra để cải thiện các kỹ năng Toán học của mình để tôi không quá bất an xung quanh các lập trình viên của mình? Các bước hoặc hướng dẫn mà bạn có thể đề nghị để cải thiện kỹ năng toán học của tôi là gì?

Có một cuốn sách ngoài đó là tiêu chuẩn thực tế để mô tả các thực tiễn tốt nhất, phương pháp thiết kế và thông tin hữu ích khác về toán học cho các lập trình viên? Điều gì về cuốn sách làm cho nó đặc biệt?


8
Bạn có biết hình học? đại số học? lượng giác? đại số lineal? tính toán? Bạn ở bao xa
Marcelo

3
@ adietan63: Gợi ý sẽ chỉ là suy đoán trừ khi bạn cụ thể hơn về kiến ​​thức toán học hiện tại của mình.
David Thornley

1
Tôi sẽ sử dụng Python với PyGame. Nếu bạn muốn hòa mình vào 3D mà không gặp quá nhiều khó khăn, thì Panda3D của Carnegie Mellon với Disney Studios rất dễ học.
thorsten müller

1
@FrustratedWithFormsDesigner | Java có phù hợp để xử lý đồ họa và chơi game hay c ++ của nó không?
adietan63

5
Bạn vui lòng cho chúng tôi biết thêm về cách các lập trình viên của bạn sử dụng toán học? Tôi sẽ phân phối lời khuyên hoàn toàn khác nếu bạn làm việc cho một công ty tài chính so với cửa hàng lập trình. (Nếu nó làm cho bạn cảm thấy an toàn hơn để quăng những từ như "không gian Hilbert" và "heteroskedasticity" xung quanh văn phòng, bằng mọi cách tìm hiểu một số đại số và tiên tiến thống kê tuyến tính Chỉ cần không mong đợi để gây ấn tượng với các nhà phát triển hoi polloi..)
rajah9

Câu trả lời:


24

Hmm, từ những gì bạn nói có vẻ như bạn muốn bắt đầu rất cơ bản. Không có gì xấu về điều đó, tôi cũng làm như vậy. Toán học của tôi chủ yếu là cấp trung học và rất nhiều thứ bị lãng quên.

Bắt đầu với Khan Academy , đi đến phần thực hành và xem bạn có thể đi được bao xa. Điều này sẽ cho bạn một ý tưởng tốt về những gì bạn có thể làm và bắt đầu học ở đâu.

Đừng bận tâm xem video. Ít nhất đối với tôi, video chỉ là một cách học chậm và Khan rất nhàm chán. Có rất nhiều tài nguyên khác để học toán cơ bản. Giống như một số WikiBooks hoặc ck-12

Câu hỏi được thảo luận trên Math.StackExchange thường xuyên đủ và việc tìm kiếm 'tài nguyên miễn phí' hoặc 'sách miễn phí' sẽ mang lại cho bạn nhiều thông tin và tài liệu. Tương tự với các cụm từ tìm kiếm như 'bắt đầu' hoặc 'người mới bắt đầu'. Hoặc đặt câu hỏi của riêng bạn ở đó. Điều đó cũng hoạt động trong phần phụ / r / math trên reddit. Ở đó bạn sẽ tìm thấy nhiều subreddits hơn, ví dụ như để học toán.

Tập luyện nhiều. Chỉ hiểu một khái niệm và sau đó tiếp tục là không đủ. Bạn phải cảm thấy thoải mái khi áp dụng nó. Bạn sẽ không hiểu tỷ lệ phần trăm nếu bạn không thoải mái với phép chia và phép nhân (làm ví dụ). Điều đó đúng cho các khái niệm cao hơn quá. Đó là lý do tại sao với tôi phần thực hành tại Khan có giá trị hơn nhiều so với các video.

Cũng như lập trình, việc giữ liên lạc với cộng đồng sẽ giúp bạn có động lực. Chỉ cần đăng nhập vào một số diễn đàn một lần và đọc những gì mọi người đang nói về.


Cảm ơn người đàn ông! Quyền của bạn. Tôi nghĩ rằng tôi cần phải bắt đầu từ những điều rất cơ bản để hiểu được phạm vi rộng của toán học.
adietan63

+100 KhanAcademy là tuyệt vời để củng cố nền tảng toán học. Không có gì sai khi bắt đầu từ những điều cơ bản. Việc tự học theo nhịp độ loại bỏ 'yếu tố sỉ nhục' khi không biết một số nguyên tắc toán học đơn giản. Hệ thống đánh giá thực hiện tốt công việc xác định điểm yếu và nhanh chóng vượt qua điểm yếu.
Evan Plaice

16

Toán học cụ thể: Một nền tảng cho khoa học máy tính (tái bản lần 2) sẽ là lựa chọn của tôi cho một cuốn sách Toán tốt bao gồm nhiều lĩnh vực khác nhau của Toán học cùng với sự hài hước của cuốn sách có thể hữu ích.


Tôi cũng đọc nó. Một cuốn sách hay.
Ando

2
+1 vì đây là cuốn sách rất hay. Mặc dù không chắc chắn nếu đó là một cái gì đó cho một người tự nhận mình là "không giỏi toán".
vartec

Sẽ thật tuyệt, nếu thay vì chỉ sử dụng từ 'Rõ ràng' Knuth đã làm cho một số phần rõ ràng hơn. Nhưng với công việc khó khăn, tất cả mọi thứ có thể được hiểu, nếu một người có nền tảng toán học vững chắc từ trường học.
gruszczy

8
Được cảnh báo, cuốn sách này chắc chắn không dành cho người mới bắt đầu.
MAK

2
Bí quyết là thực sự đọc nó. Tôi tiếp tục thấy mình muốn đọc lướt nó như một hướng dẫn hoặc một trang web. Điều đó không hiệu quả. Từ hay khái niệm không giải thích được? Bạn sẽ tìm thấy nó nếu bạn đi đủ xa trở lại. Đi chậm đối với tôi (không bao giờ hoàn thành tính toán - nhưng nhiều hơn vì là một người lười biếng hơn là kém về toán học), nhưng một khuyến nghị tốt IMO. Họ giải thích mọi thứ tốt. Chỉ cần kiên nhẫn và dành thời gian của bạn.
Erik Reppen

10

Ghi chú trực tuyến của Paul từ Đại học Lamar có định dạng PDF. Rất tốt để tham khảo nhanh và có ví dụ trên mỗi trang. Nếu tôi muốn làm mới bản thân về một chủ đề hoặc nắm bắt một cái gì đó, tôi có xu hướng quay lại trang web này.

Đây là bộ:

Đại số (Toán 1314): Ghi chú đầy đủ
Liệt kê nội dung

  • Sơ bộ - Thuộc tính số mũ, số mũ hợp lý, số mũ âm, cấp tiến, đa thức, bao thanh toán, biểu thức hợp lý, số phức
  • Giải phương trình và bất đẳng thức - Phương trình tuyến tính, phương trình bậc hai, hoàn thành bình phương, công thức bậc hai, ứng dụng của phương trình tuyến tính và phương trình bậc hai, phương trình bậc hai, phương trình với phương trình cấp tiến, bất đẳng thức tuyến tính, bất đẳng thức và bất đẳng thức.
  • Vẽ đồ thị và các hàm - Vẽ đồ thị các đường, các vòng tròn và các hàm Piecewise, Định nghĩa hàm, Ký hiệu hàm, Thành phần hàm, Hàm nghịch đảo.
  • Đồ thị phổ biến - Parabolas, Ellipses, Hyperbolas, Giá trị tuyệt đối, Căn bậc hai, Hàm không đổi, Hàm Rational, Chuyển dịch, Phản xạ, Đối xứng.
  • Hàm đa thức - Đa thức phân chia, số không / gốc đa thức, tìm số không của đa thức, đa thức đồ thị, phân số từng phần.
  • Hàm số mũ và hàm số logarit - Hàm số mũ, Hàm số logarit, Giải hàm số mũ, Giải hàm hàm logarit, Ứng dụng.
  • Hệ thống phương trình - Phương pháp thay thế, Phương pháp loại bỏ, Ma trận mở rộng, Hệ thống phi tuyến.

Giải tích I (Toán 2413): tách thành

  1. Danh sách nội dung
  2. Ghi chú
  3. Vấn đề thực hành
  4. Giải pháp cho vấn đề thực hành
  5. Vấn đề chuyển nhượng

    • Đánh giá đại số / Trig - Hàm và phương trình Trig, Hàm và phương trình hàm mũ, Hàm và phương trình logarit.
    • Giới hạn - Khái niệm, Định nghĩa, Tính toán, Giới hạn một mặt, Tính liên tục, Giới hạn Liên quan đến Vô cực, Quy tắc L'Hospitals
    • Đạo hàm - Định nghĩa, Giải thích, Công thức phái sinh, Quy tắc công suất, Quy tắc sản phẩm, Quy tắc đơn vị, Quy tắc chuỗi, Đạo hàm bậc cao, Phân biệt ngầm định, Phân biệt logarit, Hàm dẫn xuất của hàm Trig, Hàm hàm mũ, Hàm hàm logarit, Hàm hàm nghịch đảo .
    • Các ứng dụng của phái sinh - Tỷ lệ liên quan, Điểm quan trọng, Giá trị tối thiểu và tối đa, Chức năng tăng / giảm, Điểm ảnh hưởng, Mức độ phù hợp, Tối ưu hóa
    • Tích hợp - Định nghĩa, Tích phân không xác định, Tích phân xác định, Quy tắc thay thế, Đánh giá các tích phân xác định, Định lý cơ bản của tính toán
    • Các ứng dụng của tích phân - Giá trị hàm trung bình, diện tích giữa các đường cong, chất rắn của cách mạng, công việc.

Giải tích II (Toán 2414) Ghi chú đầy đủ

Giải tích III (Toán 2415) Ghi chú đầy đủ

Đại số tuyến tính (Toán 2318) Ghi chú đầy đủ

Phương trình vi phân (Toán 3301) Ghi chú đầy đủ

Bạn có thể kiểm tra trang web cho phần còn lại của danh sách chủ đề.


1
Không thể tin rằng điều này không có nhiều phiếu bầu hơn. Paul là một vị thần.
n0pe

8

Tôi nhận ra đây không phải là một cuốn sách, nhưng tôi nghĩ nó có thể là một cách tốt để mở rộng suy nghĩ của bạn về toán học. Hãy thử làm việc thông qua các vấn đề của Project Euler .

Ví dụ: cái đầu tiên là :

Nếu chúng ta liệt kê tất cả các số tự nhiên dưới 10 là bội số của 3 hoặc 5, chúng ta sẽ nhận được 3, 5, 6 và 9. Tổng của các bội số này là 23.

Tìm tổng của tất cả các bội số của 3 hoặc 5 dưới 1000.


Các câu hỏi của Project Euler chắc chắn dựa trên toán học, nhưng vấn đề tôi gặp phải với chúng là chúng đã tiến bộ rất nhanh đến nỗi cách duy nhất tôi có thể giải chúng là bằng thuật toán vũ phu (trừ khi tôi gian lận). Họ nói rằng bạn sẽ có thể tìm thấy một giải pháp tao nhã chạy trong vòng dưới 60 giây cho tất cả các câu hỏi.
Mike

4
@Mike, tôi không nghĩ nghiên cứu các vấn đề tương tự và cố gắng hiểu rõ các khái niệm cơ bản đủ để tấn công vấn đề là gian lận. Bạn đang học hỏi nhiều hơn bằng cách "gian lận" theo cách này sau đó không thực hiện tất cả các nghiên cứu đó.
Doug T.

1
Tôi đã làm nhiều trong số họ và nó đã nâng cao kỹ năng lập trình của tôi. Mặc dù liên quan đến toán học, bạn chủ yếu học rất nhiều thủ thuật gọn gàng nhưng không bổ sung nhiều vào kiến ​​thức cơ bản như Giải tích hoặc Đại số. Nhưng nó thêm cho bạn động lực làm toán.
thorsten müller

1
@thorsten: Vợ tôi (nhà toán học trong gia đình) nghĩ rằng toán học CHỈ là một mánh khóe gọn gàng. :-)
Peter K.

1
Cách tôi thường trải qua các vấn đề của Euler là trước tiên tôi thường thử một lực lượng vũ phu và tối ưu hóa nó. Điều đó một mình đã dạy rất nhiều sự thật toán học mà tôi chưa từng biết. Đọc các diễn đàn giải pháp sau đó thường có nhiều kiến ​​thức toán học hơn.
Hệ thống xuống

8

Tôi luôn đề xuất Toán học rời rạc của Kenneth Rosen và các ứng dụng của nó . Nó bao gồm rất nhiều chủ đề khác nhau (như bất kỳ cuốn sách Toán học rời rạc nào cũng được) với sự cân bằng tốt về lý thuyết và ứng dụng. Nó cũng có nhiều sidebar thú vị về các nhà toán học và nhà khoa học máy tính, những người khởi nguồn cho các khái niệm được đề cập.


Cảm ơn! nhưng các điều kiện tiên quyết trước khi học Toán rời rạc, v.v.
adietan63

1
@ adietan63: Đại số là tất cả những gì tôi muốn nói là bắt buộc . Trường đại học của tôi cho phép chúng tôi học Toán rời rạc trước khi tính toán hoặc thống kê, nhưng chắc chắn sẽ không hại gì khi thi những môn đó trước.
Bill Lizard

@ adietan63: Bạn cũng có thể muốn xem một số sách toán học Head First nếu bạn cần ôn lại, hoặc xem một số bài giảng video trực tuyến miễn phí.
Lập hóa đơn cho thằn lằn

@Bill Cảm ơn bạn! Có lẽ tôi cảm thấy áp lực khi học những thứ này vì tôi muốn học nhiều thứ trong lập trình trong một khoảng thời gian ngắn. Có lẽ tôi sẽ lấy nó từng cái một. Tôi nghĩ rằng đây là một phần của quá trình học tập. cảm ơn lần nữa
adietan63

7
Không có gì. Ngoài ra, cảm giác "Tôi muốn học nhiều thứ trong lập trình trong một khoảng thời gian ngắn" không bao giờ thực sự biến mất. :)
Bill Lizard

4

Mặc dù đọc 1000 cuốn sách toán học rời rạc là một giải pháp tốt, nó có thể không phải là con đường tối ưu nếu thời gian là một hạn chế. Nếu bạn muốn có một hương vị của bao nhiêu toán học bạn nên đi sâu, hãy xem phần phụ lục A của phần giới thiệu của cuốn sách Thuật toán (cormen) : http://www.acmsolver.org/books/ Giới thiệu% 20 đến% 20 Thuật toán,% 202nd% 20Ed% 20-% 20Thomas% 20H.% 20Cormen.pdf

Tôi đọc phần phụ lục và nó giúp tôi hiểu rõ hơn về những chủ đề toán học nào tôi nên xem lại nhiều hơn. Một khi bạn biết những gì mong đợi, hãy xem:

http://www.amazon.com/JTHER-into-Mathatures-Intributiontion-Proofs/dp/0486453065/ref=sr_1_15?ie=UTF8&qid=1308591694&sr=8-15 nhập mô tả hình ảnh ở đây

Theo tôi, học cách chứng minh (đặc biệt là bằng cảm ứng) là nền tảng để hiểu các thuật toán phân tích . Thật không may, hầu hết các thuật toán và thậm chí các khóa học toán CS không tập trung quá nhiều vào bằng chứng. họ đã cho rằng bạn là người có năng lực trong vấn đề này, vì vậy họ không vượt quá một vài trang. Hành trình vào sách toán rất nhỏ và dễ đọc. Nó sử dụng các vấn đề CS và khía cạnh toán học của họ là tốt. Các chủ đề tốt khác để tìm hiểu là số học ma trận , xác suất , đếmlý thuyết đồ thị là tốt.

Hai cuốn sách giáo khoa lớn phổ biến khác: Toán học rời rạc và ứng dụng của nó từ EPP (yêu thích của tôi) và một cuốn khác từ Rosen.

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

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

Tôi không có được niềm vui khi đọc sách giáo khoa có tên " Toán học cụ thể " nhưng tôi luôn nghe thấy những điều hay về nó.


1

Thành thật mà nói, bạn có thể là một lập trình viên hoàn toàn phù hợp trong nhiều lĩnh vực mà không có kiến ​​thức cơ bản về toán học. Bạn có thể không có nhiều khả năng khi nói đến công cụ trò chơi hoặc tối ưu hóa định tuyến mạng, nhưng sự thật mà nói, rất nhiều ứng dụng kinh doanh khá đơn giản. Tuy nhiên, tôi sẽ khuyến khích bạn giữ hy vọng sống và chưa từ bỏ môn toán.

Có một thế giới khác biệt giữa toán học bạn học ở cấp độ thấp hơn và toán học bạn học ở cấp độ cao hơn. Có một điều rất khác khi nói rằng bạn kém về Giải tích (Tôi đã - Tôi đã thất bại lần đầu tiên khi tôi lấy nó) hơn là nói rằng bạn kém về Lý thuyết đồ thị. Khi bạn tiến bộ qua toán học, trọng tâm không phải là giải quyết vấn đề đơn giản mà thực sự khá nhàm chán và lặp đi lặp lại và cũng có thể được thực hiện bằng máy tính vẽ đồ thị của bạn. Thay vào đó, trọng tâm là các kỹ năng tư duy logic: xây dựng bằng chứng thực sự rất giống như viết phần mềm.

Lớp toán tốt nhất tôi từng có là lớp toán học "thực sự" đầu tiên của tôi: về cơ bản là giới thiệu về lớp chứng minh bao trùm một loạt các lĩnh vực từ Lý thuyết đồ thị đến Lý thuyết số. Văn bản chúng tôi sử dụng rất hay ( Tư duy toán học: Giải quyết vấn đề và bằng chứng của D'Angelo và West .) Bạn có thể thấy hữu ích chỉ khi làm việc qua cuốn sách đó để có được một số ý tưởng về bằng chứng tấn công.

Nhìn chung, tôi có thực sự cần bất kỳ môn toán nào tôi học ở trường đại học không? Không, có lẽ là không. Nhưng có một số nền tảng chính thức cho tôi kỹ năng tư duy phê phán tốt hơn, trí tưởng tượng tốt hơn (thường có nhiều cách để giải quyết vấn đề, đôi khi tốt, đôi khi xấu, nhưng một ý tưởng độc đáo có thể hữu ích) và tự tin trong việc giải quyết vấn đề.


| Cảm ơn người đàn ông! Tôi nghĩ ngay cả khi Math không thể giúp bạn mọi lúc. Có lẽ sự hiện diện của nó sẽ giúp bạn trong tư duy phê phán và cải thiện kỹ năng phân tích của bạn?
adietan63

Thành thật mà nói, tôi nghĩ rằng bạn thích từ "thẳng thắn."
bukzor

1

Hãy nhìn xem, tôi giỏi toán, nhưng tôi thực sự không sử dụng nó cho lập trình, và tôi làm chương trình khá nhiều. Lời khuyên của tôi chỉ đơn giản là làm quen với việc không biết đủ và có ai đó làm toán cho bạn.

Có rất nhiều điều cần biết, bạn không thể mong đợi mình giỏi tất cả, nhưng đặc biệt là toán học, nó không hữu ích lắm.

Tất nhiên, bạn có thể cần nó bởi vì các chương trình của bạn là một cái gì đó khoa học, nếu không sử dụng thời gian đó để tìm hiểu một cái gì đó hữu ích hơn.


2
Không đồng ý, kỹ năng lập trình tốt có liên quan đến kỹ năng toán tốt.
Marcelo

1
Vâng, tôi nghĩ rằng bạn có thể không đồng ý. Tôi nghĩ rằng sự bất đồng là một quyền, nhưng nếu điều đó khiến bạn cảm thấy được ủy quyền để đánh giá thấp sự đóng góp của tôi, điều đó thực sự rủi ro.
Ando

Đặc quyền - bỏ phiếu xuống - yêu cầu 125 danh tiếng; bạn đã đạt được đặc quyền này.
Marcelo

1
Ủng hộ vì tôi đồng ý, rằng bạn không cần toán học để trở thành một lập trình viên giỏi trong nhiều lĩnh vực. Mặc dù tôi rất không đồng ý rằng toán học không hữu ích lắm. Ngay cả khi bạn không cần toán học trong công việc hàng ngày, bạn vẫn có được rất nhiều từ việc học các khía cạnh nhất định của toán học và nếu chỉ hiểu được ký hiệu big-O thì càng nhiều.
thorsten müller

1

Nhìn vào ghi chú khóa học của một số khóa học (người mới bắt đầu) từ phần "Logic & Tính toán" của ESSLLI (ví dụ, chương trình 2011 sắp tới hoặc chương trình 2010 , tìm kiếm thêm) có thể thú vị. Nó sẽ cho bạn một ấn tượng về những phát triển lý thuyết hiện tại trong lĩnh vực liên quan đến lập trình. Sau đó, bạn có thể quyết định nghiên cứu sâu hơn các nền tảng trong một trường con nhất định được chạm vào trong các khóa học đó.

(Mặt khác, thật khó để trả lời câu hỏi của bạn, có rất nhiều "toán học" khác nhau, mà bạn có thể không thực sự cần hoặc không quan tâm. Một lý do tại sao các khóa học ESSLLI có thể thú vị đối với chúng tôi là vì chúng phản ánh một số hiện tại nghiên cứu, vì vậy họ là về việc giải một số câu đố nhất định, và cố gắng giải một câu đố nào đó là một thành phần quan trọng trong quá trình hiểu biết thực sự về một lý thuyết, để hiểu điều gì thú vị đằng sau nó.)


1

Nếu bạn đang học toán CS đúng cách thì bạn đang xem xét những thứ như logic toán học và lý thuyết tập hợp. Đây là một số toán học khá liên quan hỗ trợ chúng. Do đó, nếu trình độ toán học cơ bản của bạn là một chút ropey thì tốt nhất bạn nên bắt đầu với các nguyên tắc cơ bản, trước khi chuyển sang các lĩnh vực liên quan đến CS nhiều hơn.

Do đó, tôi khuyên bạn nên bắt đầu với KA Stroud's Engineering Math . Được viết tốt, dễ làm theo và bao gồm những điều cơ bản cũng như những thứ cao cấp hơn.


1

Bắt đầu với các nguyên tắc cơ bản và sau đó chuyển sang chuyên ngành: Toán học DelightCách giải quyết nó là hai cuốn sách tuyệt vời để bắt đầu. Nhà toán học Delight tiếp cận các chủ đề toán học cơ bản (ví dụ: Hình học, đại số, giải tích, v.v.) theo cách thân thiện với con người và gây cười. Tôi chưa đọc Làm thế nào để giải quyết nó nhưng nó tập trung vào cách tấn công các vấn đề toán học bằng lý luận.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.