Matematik Bilgisayar bilimlerinde nasıl / ne zaman kullanılır?


95

Birçok bilgisayar bilimi programları iki veya üç hesap dersi gerektirir.

Matematik, bilgisayar biliminde nasıl ve ne zaman kullanıldığını merak ediyorum. Bilgisayar bilimlerinde bir derecenin CS içeriği algoritmalar, işletim sistemleri, veri yapıları, yapay zeka, yazılım mühendisliği, vb. Konularına odaklanma eğilimindedir.


6
Liste soruları için katı bir politikamız yok, ancak genel olarak beğenilmeyen bir durum var . Lütfen bunu ve bu tartışmayı not alın ; orada açıklanan sorunlardan kaçınmak için sorunuzu geliştirmek isteyebilirsiniz. Sorunuzu belki size yardımcı olabilir nasıl geliştirilebileceğine emin değilseniz Bilgisayar Bilimleri Chat ?
Raphael

42
Her dersin içeriğinin (her kariyer yolu için) alakalı olması gerektiğini varsaymada yaygın bir yanlışlık yapmış gibi görünüyorsunuz. Bazen tam olarak nasıl düşüneceğinizi öğretmekle ilgilidir.
Raphael

8
Bu sorunun, yalnızca Bilgisayar Bilimi içindeki kullanımlar veya Comp Sci derecesine sahip öğrenciler için tüm kullanımlar hakkında mı sorduğunuzu netleştirip çözmeyeceği muhtemelen faydalı olacaktır . En azından ABD'de, Comp Sci mezunlarının çok büyük bir kısmı, akla gelebilecek her mühendislik alanına yayılmış yazılım mühendisleri haline geldi. Bu alan adlarının birçoğu, çeşitli amaçlar için Analiz'i gerektirir. Tüm CS sınıfları işlerinde Calculus'u kullanmayacak, fakat pek çoğu kesinlikle (muhtemelen birinci sınıf yıllarında kullanacağını sandığından daha fazla).
reirab

1
Yorumlar uzun tartışmalar için değildir; bu konuşma sohbete taşındı .
Raphael

Benim için "daha sonra nümerik yöntemleri öğrenirken takdir etme ve rahatlama" duygusu için çok faydalı oldu . Teorik matematikten sürekli fonksiyonlar yerine gerçek ölçümlerden elde edilen ayrık verilerle çalışırken, entegrasyonun sadece bir toplam olduğu ve türevlerin çok fazla zaman ve çabaya ihtiyaç duyduğumuz aşırı karmaşık formüller yerine sadece bir çıkarma olduğu bir rahatlama oldu. Daha önce matematik derslerimizde öğrenmek için!
vsz

Yanıtlar:


110

Direkt olarak Calculus'a ihtiyacı olacak birkaç ders düşünebilirim . Bilgisayar Bilimi diploması için genellikle zorunlu disiplinler için cesur bir yüz ve genellikle isteğe bağlı olanlar için italik kullandım.

  • Bilgisayar Grafikleri / Resim İşleme ve burada ayrıca yoğun bir şekilde Analitik Geometri ve Doğrusal Cebire ihtiyacınız olacak ! Bu yolda ilerlerseniz, bazı diferansiyel geometrileri de (en az önkoşul olarak çok değişkenli hesabı olan) incelemek isteyebilirsiniz. Ancak, çok temel şeyler için bile Calculus'a ihtiyacınız olacak: örneğin "Fourier Dönüşümü" veya "Dalgacık" aramayı deneyin; bunlar, görüntülerle çalışan insanlar için çok temel iki araç.
  • Optimizasyon , çoğunlukla doğrusal olmayan, çok değişkenli Analizin her şeyi geliştirmek için kullanılan temel dil olduğu yerdir. Ancak doğrusal optimizasyon bile Calculus'tan faydalanır (nesnel fonksiyonun türevi kesinlikle önemlidir)
  • Olasılık / İstatistik . Bunlar çok değişkenli Analiz olmadan ciddi olarak çalışılamaz.
  • İstatistiği yoğun kullanan Makine Öğrenmesi (ve dolayısıyla çok değişkenli Analiz
  • Çok fazla istatistik kullanan Veri Madenciliği ve ilgili konular;
  • Robotik kısmi türevleri ve renk geçişlerini bilmek gerekir böylece, bir robotun fiziksel hareketlerini modellemek gerekir.
  • Ayrık Matematik ve Kombinatorik ( evet!, Ayrık sayım için Calculus'a ihtiyacınız olabilir!) - eğer fonksiyonlar oluşturma konusunda yeterince ciddi olursanız, belirli formülleri nasıl entegre edeceğinizi ve türeteceğinizi bilmeniz gerekir. Bu da Algoritma Analizi için faydalıdır (Sedgewick ve Flajolet, "Algoritmaların Analizi" adlı kitabına bakınız). Benzer şekilde, Taylor Serisi ve hesabı, algoritma analizinde kullanılan belirli nüks ilişkilerini çözmede faydalı olabilir.
  • o

Başkaları da olabilir - bu sadece kafamın üstünde.

Bunun yanında, teknik titizlikle argümanların nasıl düşünüleceğini ve açıklanacağını öğrenerek dolaylı olarak bir Calculus kursundan da faydalanır . Bu, öğrencilerin genellikle düşündüğünden daha değerlidir.

Son olarak - diğer Kesin Bilimler ve Mühendislik'ten insanlarla etkileşime geçmek için Calculus'a ihtiyacınız olacak. Ve bir Bilgisayar Bilimcisinin sadece konuşmak değil, aynı zamanda bir Fizikçi veya Mühendis ile birlikte çalışması gerektiğine de nadiren rastlanır.


34
Belki de farklı bir deneyim yaşadınız, ancak matematiksel olarak titizlikle nasıl gerekçe söyleyeceğinizi ve açıklayacağınızı öğrenmek için kullanışsız buldum. Lise cebir ve geometri gibi oldukça ezber ve desen eşleştirme ile öğretildi. Öte yandan, birkaç yüksek matematik sınıflarına önkoşulu olduğunu yaptılar bu becerileri öğretmek, bu yüzden tamamen yararsız olmadığını varsayalım.
tsleyson

6
Tamamen en son noktayla ilişki kurabilirim (dolaylı faydalar). Programlama dilleri teorisi üzerine çalışırken, nadiren doğrudan hesap kullanılır. Belki de en doğrudan uygulama olasılıksal hesaplama modellerinde olmuştur (örneğin, Plotkin ve Jones olasılıksal güç alanları). Ancak, matematik dersim çoğunlukla bir şeyleri ispatlamaktı ve bu çok, çok değerliydi. Her ciddi CS programında bir veya iki matematik dersi gerekir, biraz daha matematik (ayrık matematik, mantık, doğrusal cebir, sayısal analiz, ve muhtemelen kategoriler, topoloji, cebir, ...).
chi

3
Pürüzsüz enterpolasyon fonksiyonları temelde bütün biçimde olacaktır: İşte bilgisayar grafikleri taşı gerekli nasıl bir örnek f(0) = 0, f(1) = 1, f'(0) = f'(1) = 0ve örneğin, önemsediğiniz herhangi başka kısıtlamalar ekleyebilir f'(0.5) = 1. Bir süre önce bunu görüntüleri düzgünleştirmek için bazı enterpolasyon polinomları türetmek için kullandım.
porglezomp

3
Robotik muhtemelen her türlü fizik modellemesine genişletilebilir (sanırım aydınlatma açısından CG'yi de kapsar, o halde kinetik fizik modellemesi diyelim). Bu hızlanma / hız, sıçramalar / yaylar / deformasyon, PID kontrolörleri, akustik, yerçekimi ...
metao

2
Dolaylı olarak şu noktaya değineceğim: Önceden aldıkları herhangi bir sınıftan daha iyi olan Calculus, öğrencilere sorun sayısını sayamayacaklarını ve ne kadar çalışmanın işe yarayacağını tahmin edemeyeceklerini öğretiyor.
candied_orange

20

Bu biraz belirsiz, ama matematik cebirsel veri türlerinde ortaya çıkıyor. Herhangi bir tür için, tek delikli bağlamların türü bu türün türevidir. Konuyla ilgili genel bir bakış için bu mükemmel konuşmaya bakın . Bu çok teknik bir terminoloji, o yüzden açıklayalım.

Cebirsel Veri Tipleri

Ürün tipleri olarak adlandırılan perdelere rastlamış olabilirsiniz (eğer değilse, iki tipin kartezyen ürünü oldukları için ). Bunu tam anlamıyla alıp gösterimi kullanacağız:

ab

ab

a+b

aNabNba+bNa+Nb

Bu türler normal cebirsel ifadeler gibi görünür ve aslında onları bir noktaya kadar değiştirebiliriz.

Bir örnek

İşlevsel dillerde, bir listenin (burada Haskell'de verilen) ortak bir tanımı şöyledir:

data List a = Empty 
            | Cons a List

Bu, bir listenin ya boş ya da bir değerin bir demetinin ya da başka bir listenin olduğunu söylüyor. Bunu cebirsel notasyona dönüştürerek şunu elde ederiz:

L(a)=1+aL(a)

1L(a)

L(a)=1+aL(a)
L(a)=1+a(1+aL(a))
L(a)=1+a+a2(1+aL(a))
L(a)=1+a+a2+a3(1+aL(a))
L(a)=1+a+a2+a3+a4+a5...

xn

Bu tanım, o zaman bir listenin bir ünite veya bir öğenin bir demeti veya iki öğenin bir demeti olduğunu söyler; bu , bir listenin tanımıdır!

Tek delikli Bağlamlar

Şimdi tek delikli bağlamlarda: tek delikli içerik, bir ürün türünden 'değer aldığınızda' elde ettiğiniz şeydir. Bir örnek verelim:

a2aa+a2a

3 tupledan bir değer almak 2 tuple verir, ancak üç farklı değişken vardır:

(a,a,_)
(a,_,a)
(_,a,a)

3a2a3

Son örneğimizde, bir liste kullanalım:

Bir liste için orijinal ifademizi alırsak:

L(a)=1+aL(a)

Almak için yeniden düzenleyebiliriz:

L(a)=11a

(Yüzeyde bu saçmalık gibi görünebilir, ancak bu sonucun taylor serisini alırsanız daha önce türetmiş olduğumuz tanımı alırsınız.)

Şimdi bunu ayırt edersek, ilginç bir sonuç elde ederiz:

L(a)a=(L(a))2

Böylece bir liste bir çift liste haline geldi. Bu aslında anlamlıdır: Üretilen iki liste, orijinal listedeki deliğin altındaki ve altındaki öğelere karşılık gelir!


Bu harika anlayışlı oldu. Teşekkürler.
D. Ben Knoble

12

Sayısal yöntemler. Belirli uygulamalara özgü benzersiz matematik problemleri vardır ve bir programın pratik olarak çözemediğinden daha hızlı çözümlere ihtiyaç duyarlar. Birisi çözümü hesaplayacak bir algoritma tasarlamak zorundadır. Programcıları bilim adamlarından ayıran tek şey bu değil mi?


3
Bu sorunun "liste" niteliği göz önüne alındığında, her cevap tam resmi vermeye çalışmalıdır. Sayısal yöntemlerin tek örnek olduğunu iddia etmek istediğinizden emin misiniz ?
Raphael

Yorumlar uzun tartışmalar için değildir; bu konuşma sohbete taşındı .
Raphael

12

Otomasyon - Robotiğe benzer şekilde, otomasyon birçok insan davranışını ölçmeyi gerektirebilir.

Hesaplamalar - İspatlara çözüm bulmak için genellikle hesap gerekir.

Görselleştirmeler - Gelişmiş algoritmaların kullanılması cos, sinüs, pi ve e gibi hesaplamaları gerektirir. Özellikle vektörleri, çarpışma alanlarını ve meshing'i hesaplarken.

Lojistik ve Risk analizi - Bir görevin mümkün olup olmadığını, içerdiği riski ve olası başarı oranını belirlemek.

Güvenlik - Çoğu güvenlik hesapsız yapılabilir; ancak, açıklama isteyen birçok kişi bunu matematiksel ifadelerde tercih eder.

AI - AI'nın temelleri matematik olmadan kullanılabilir; ancak, ileri davranışların, küme zekâ / kovan zihinlerinin ve karmaşık değerlere dayalı karar vermenin hesaplanması.

Tıbbi hesaplamalar - Sağlık verilerinin çoğunun görselleştirilmesi EKG okuması gibi matematik gerektirir.

Bilim ve Mühendislik - Neredeyse başka herhangi bir bilimsel disiplinle çalışırken, matematik gerektirir: Hava-Uzay, Astroloji, Biyoloji, Kimya veya Mühendislik.

Programlamadaki birçok kişi, kariyerini hesap kullanmadan geçirebilir; Ancak, işi yapmaya istekli iseniz çok değerli olabilir. Benim için otomasyonda, lojistikte ve görselleştirmede en etkili oldu. Belirli desenleri tanımlayarak, deseni görmezden gelebilir, deseni taklit edebilir veya hep birlikte üstün bir yöntem geliştirebilirsiniz.


7
πe

3
exp(x)f(x)=f(x)f(0)=1f(x)=g(x)g(x)=f(x)f(0)=0g(0)=1

2
@DavidRicherby: Örnek: FPU'suz bir mikrokontrolcüye bu fonksiyonları nasıl uygularsınız ? Bazı hesaplamalar biliyorsanız, hemen iyi bir cevap biliyorsunuz: güç serileri.
Nate Eldredge

6

Gerçek şu ki, matematiği kullanmaya çok az şansın var. Ancak, hemen hemen her bilimsel disiplinin DOES'i hesap kullanır ve siz bir bilim dalında çalışıyorsunuz. Bir üniversite bilim derecesinin ne anlama gelmesi gerektiğine dair belli beklentiler var ve bunlardan biri de hesabı biliyorsunuz. Asla kullanmasan bile.

Analizde zayıf yaparsanız sorun değil, ancak ayrık matematiğe biraz çaba harcadığınızdan emin olun. Ayrık matematiğin devreye girdiği ve prensiplerinin cehaletinin diğer kodlayıcıların önünde sizi utandırabildiği birçok gerçek dünya programlama problemi vardır.


9
İlk paragrafınız tamamen yanlıştır ve komplo teorisi üzerine sınır koymaktadır. Analizin yararlı olduğu pek çok bilgisayar bilimi alanı vardır (sonsuz listeler için diğer cevaplara bakınız). Elbette, bu alanların hepsinden kaçınmak mümkündür, ancak bırakma hesabının sınıfların ötesinde sıfır etkiye sahip olacağını iddia etmek yanıltıcıdır.
David Richerby

4
Lisans programınıza bağlı olarak, hesabı kullanmadan bir derece tamamlayabilirsiniz ve CS uzmanlarının alabileceğimiz kadar ihtiyaç duymadıklarını düşünüyorum. Ancak zayıf yapmak, sizi bilgisayar biliminin en ilginç alanlarından uzak tutacaktır. Mezun olduktan sonra bir web geliştiricisi olmak için çok zaman var; okuldayken neden kendini biraz zorlamaya çalışmadın?
tsleyson

3
@tsleyson Bir web geliştiricisi olmak istiyorsanız, CS derecesi almak için gereken para ve zamandan tasarruf edin.
Raphael

8
@ScottB Bilgisayar bilimini programlama ile karıştırıyor gibi görünüyorsunuz.
David Richerby

3
@ScottB Kim CS = matematik + programlama diyor? Ben kendim için bu sınırlı görüşe karşı savunuculuk yapıyorum. Fakat siz de onu geri aldınız: matematik, tıpkı fizikte olduğu gibi CS'ye de ayrılmaz. Biz ihtiyacımız biz istemiyoruz bile bunu uygulamaya onu. (Demek ki, bu tartışmanın yeri burası değil. Lütfen devam etmek istiyorsanız, lütfen Bilgisayar Bilimleri Sohbetinde bize katılın .)
Raphael

4

Birçok kişi CS'de zaten uygulamalar sağladı. Ancak bazen en azından beklediğiniz zaman Matematik'i bulacaksınız:

Düzenli ifade türevleri yeniden incelendi

Otomatları biliyorsanız, bu pdf okunmaya değer olabilir.


Orada hiçbir diferansiyel hesap göremiyorum; "Türev" kelimesini görüyorum ama geleneksel diferansiyel matematiğe benzeyen bir şey göremiyorum.

2
Buna "resmi türev" denir ve bir şekilde Calculus ile ilgilidir. Bunu, Generating İşlevleri, ayrık yapılarla ilgili bazı formüller ve gerçekte "pürüzsüz bir işlevi" olmayan diğer alanlarla ilgili olarak da göreceksiniz.
Jay

@Jay: Önemli olan isim değil. Analiz anlayışı buna nasıl yardımcı olur?
Hıristiyan

2
Bu Wikipedia sayfasında açıklanmıştır . Formel türev, polinomları içeren analgebraik yapının unsurları üzerinde yapılan bir işlemdir ve polinomları ayırt etmek için kullanılan normal kural resmen "oldukça" gibidir, ancak - öğrencinin Calculus'ta gördüklerinden farklı olarak - polinomlar gerçeklerin üzerinde değildir; keyfi bir "halka" (başka bir cebirsel yapı) üzerindeki polinomlar olabilirler. Ve resmi türevlerin pratik uygulamaları var - en az bir tane gördüm (Cebirsel Kriptanaliz - detayları hatırlayamıyorum).
Jay,

4

Bazı daha spesifik örnekler:

  • Matematik, bazı sinir ağı türlerinin 'öğrenmesini' sağlayan delta kuralını türetmek için kullanılır .
  • Calculus, sinyal analizinde çok önemli olan salınımlı bir fonksiyonun Fourier dönüşümünü hesaplamak için kullanılabilir.
  • Matematik, insanlar sürekli olarak yeni teknikleri keşfederken oldukça aktif bir alan olan bilgisayar grafikleri üzerinde her zaman kullanılır. Temel bir örnek için Kajiya'nın oluşturma denklemine göz atın.
  • Matematik hesaplamalı geometri alanında önemlidir, eğri ve yüzey modellemesini araştırın.

3

Bu diğer mükemmel cevaplara şunu ekliyorum: sınamadaki titizlik .

Bazı uygulamalar için test senaryoları oluştururken beklenen çalışma sürelerini, bellek boyutlarını tahmin etmek için matematikten faydalanmak ve veri yapılarını ayarlarken en uygun parametreleri seçmek zorunda kaldım. Bu beklenen yuvarlama hatasını vb. Anlamayı içerir.

İstatistikler diğer cevaplarda da belirtilmiş olsa da , optimizasyon algoritmaları ve matematik içeren matematiksel ilkelere dayanan bazı tutumsal akış algoritmaları gibi Monte-carlo algoritmalarından özellikle bahsetmek istiyorum .

Analizin gerekli olduğu yerlerde çalıştığım belirli endüstriler şunlardır:

  • Finans (bir ticaret platformu oluşturmak)

  • Sigorta (beklenen politika zararlarını hesaplamak için olacak senaryolarda sigorta poliçelerinin sayısal entegrasyonu)

  • Lojistik (ulaşım yollarının birleştirilmesinin optimize edilmesi)

  • Sinyal işleme


3

Matematik - integral kısım - doğrudan CS'de toplama hakkında düşünmek için bir temel olarak kullanılır. Toplama hakkında Knuth'un Beton Matematiği bölümünün herhangi bir bölümünde çalışırsanız, hesabınız için ortak olan kuralları hızlı bir şekilde tanıyacaksınız: sürekli durumdan bazılarını anlamak size ayrıkları göz önünde bulundurmanız için araçlar sunar.

CS araştırmanızın kullanımlarının çoğu, değişimi izleyen veya bazı durumlarda geleceği tahmin etmeye çalışan programlama sistemlerini içerir. Bu sistemler etrafındaki matematik diferansiyel denklemlere ve lineer cebire dayanır ve diferansiyel denklemler hesaptır. Diferansiyel denklemler bölümüne daha hızlı hareket etmeyi savunan Gibert Strang gibi öğretmenler var, ancak bu hala bir hesap alt kümesidir. Değişim herhangi bir sistemdeki değişime bağlı olduğunda, hem sezgisel olmayan hem de çok iyi anlaşılan şekillerde dengesiz (ve istikrarlı) olmaya başlar. Mantıklı doğrusal sisteminizin neden doğrusal olmayan şekillerde davrandığını anlamak için, ya matematik araçlarına ihtiyacınız var ya da problem alanınız için onları yeniden icat etmeniz gerekiyor.

Ve son olarak, CS genellikle başkalarının eserlerini okumayı ve anlamayı gerektirir ve matematik, birçok ortak kelime, gelenek ve tarihe ilk maruziyettir.


"CS çalışmanızın kullanımlarının çoğu, değişimi izleyen veya bazı durumlarda geleceği tahmin etmeye çalışan programlama sistemlerini içerir" - Bunun moust CS ders çalışmalarının temsilcisi olduğunu sanmıyorum.
Raphael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.