Bagaimana / kapan kalkulus digunakan dalam Ilmu Komputer?

95

Banyak program ilmu komputer membutuhkan dua atau tiga kelas kalkulus.

Saya bertanya-tanya, bagaimana dan kapan kalkulus digunakan dalam ilmu komputer? Isi CS dari gelar dalam ilmu komputer cenderung fokus pada algoritma, sistem operasi, struktur data, kecerdasan buatan, rekayasa perangkat lunak, dll. Apakah ada waktu ketika Kalkulus berguna dalam bidang ini atau bidang Ilmu Komputer lainnya?

Pemenang
sumber
6
Kami tidak memiliki kebijakan ketat untuk daftar pertanyaan, tetapi ada ketidaksukaan umum . Harap perhatikan juga ini dan diskusi ini ; Anda mungkin ingin meningkatkan pertanyaan Anda untuk menghindari masalah yang dijelaskan di sana. Jika Anda tidak yakin bagaimana cara meningkatkan pertanyaan Anda, mungkin kami dapat membantu Anda dalam Obrolan Ilmu Komputer ?
Raphael
42
Anda tampaknya membuat kesalahan umum dengan mengasumsikan bahwa konten setiap kursus harus relevan (untuk setiap jalur karier). Terkadang hanya tentang melatih Anda cara berpikir dengan cara tertentu.
Raphael
8
Mungkin akan membantu jika pertanyaan ini dapat mengklarifikasi apakah Anda hanya bertanya tentang penggunaan dalam Ilmu Komputer yang tepat atau semua penggunaan untuk siswa yang mendapatkan gelar Comp Sci. Setidaknya di sini di AS, persentase yang sangat besar dari lulusan Comp Sci menjadi insinyur perangkat lunak yang tersebar di hampir setiap domain teknik yang bisa dibayangkan. Banyak dari domain ini membutuhkan pemahaman Kalkulus untuk berbagai tujuan. Tidak semua lulusan CS akan menggunakan Kalkulus dalam pekerjaan mereka, tetapi banyak yang pasti akan (mungkin lebih dari yang berpikir mereka akan selama tahun pertama mereka.)
reirab
1
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Raphael
Bagi saya itu sangat berguna untuk perasaan "apresiasi dan kelegaan nanti ketika belajar tentang metode numerik" . Ketika bekerja dengan data diskrit yang berasal dari pengukuran nyata, alih-alih fungsi kontinu dari matematika teoretis, sungguh melegakan bahwa integrasi hanyalah penjumlahan dan turunannya hanya pengurangan, alih-alih rumus yang terlalu rumit, kami membutuhkan begitu banyak waktu dan usaha untuk belajar di kelas kalkulus kami sebelumnya!
vsz

Jawaban:

110

Saya dapat memikirkan beberapa kursus yang akan membutuhkan Kalkulus, secara langsung . Saya telah menggunakan wajah berani untuk disiplin ilmu yang biasanya wajib untuk gelar Ilmu Komputer, dan huruf miring untuk yang biasanya opsional.

  • Grafik Komputer / Pemrosesan Gambar, dan di sini Anda juga akan memerlukan Analytic Geometry dan Linear Algebra, berat ! Jika Anda menyusuri jalan ini, Anda mungkin juga ingin mempelajari beberapa Geometri Diferensial (yang memiliki Kalkulus multivarian sebagai prasyarat minimum). Tetapi Anda akan membutuhkan Kalkulus di sini bahkan untuk hal-hal yang sangat mendasar: coba cari "Fourier Transform" atau "Wavelets", misalnya - ini adalah dua alat yang sangat mendasar bagi orang yang bekerja dengan gambar.
  • Optimalisasi , sebagian besar non-linear, di mana Kalkulus multivariat adalah bahasa dasar yang digunakan untuk mengembangkan segalanya. Tetapi bahkan optimasi linear mendapat manfaat dari Kalkulus (turunan dari fungsi objektif sangat penting)
  • Probabilitas / Statistik . Ini tidak dapat dipelajari secara serius tanpa Kalkulus multivariat.
  • Pembelajaran Mesin , yang banyak menggunakan Statistik (dan akibatnya, Kalkulus multivarian)
  • Penambangan Data dan mata pelajaran terkait, yang juga menggunakan banyak Statistik;
  • Robotika , tempat Anda perlu memodelkan gerakan fisik robot, jadi Anda perlu mengetahui turunan dan gradien parsial.
  • Matematika Diskrit dan Kombinatorik ( ya!, Anda mungkin perlu Kalkulus untuk penghitungan diskrit!) - jika Anda cukup serius dalam menghasilkan fungsi, Anda harus tahu cara mengintegrasikan dan menurunkan rumus tertentu. Dan itu berguna untuk Analisis Algoritma (lihat buku oleh Sedgewick dan Flajolet, "Analisis Algoritma"). Demikian pula, Taylor Series dan kalkulus dapat berguna dalam menyelesaikan beberapa jenis hubungan perulangan, yang digunakan dalam analisis algoritma.
  • Analisis Algoritma , di mana Anda menggunakan gagasan batas sejak awal (lihat notasi Landau, " kecil " - itu didefinisikan menggunakan batas)o

Mungkin ada yang lain - ini hanya di atas kepala saya.

Dan, di samping itu, seseorang mendapat manfaat secara tidak langsung dari kursus Kalkulus dengan mempelajari cara berpikir dan menjelaskan argumen dengan ketelitian teknis. Ini lebih berharga daripada yang biasanya dipikirkan siswa.

Akhirnya - Anda akan membutuhkan Kalkulus untuk berinteraksi dengan orang-orang dari Ilmu Pengetahuan dan Teknik Exact lainnya. Dan tidak jarang seorang Ilmuwan Komputer perlu tidak hanya berbicara tetapi juga bekerja sama dengan seorang Fisikawan atau Insinyur.

Jay
sumber
34
Mungkin Anda memiliki pengalaman yang berbeda, tetapi saya menemukan kalkulus cukup berguna untuk mempelajari cara berpikir dan menjelaskan argumen dengan keras. Itu diajarkan oleh hafalan dan pencocokan pola cukup banyak seperti aljabar dan geometri sekolah tinggi. Di sisi lain, itu adalah prasyarat untuk beberapa kelas matematika yang lebih tinggi yang melakukan mengajarkan keterampilan ini, jadi saya kira itu tidak sepenuhnya sia-sia.
tsleyson
6
Saya benar-benar dapat berhubungan dengan poin terakhir (manfaat tidak langsung). Bekerja pada teori bahasa pemrograman, saya jarang menggunakan kalkulus secara langsung. Mungkin aplikasi yang paling langsung adalah dalam model komputasi probabilistik (misalnya domain kekuasaan probabilistik Plotkin & Jones). Namun, kursus kalkulus saya kebanyakan tentang membuktikan hal-hal, dan ini sangat, sangat berharga. Satu atau dua mata kuliah kalkulus diperlukan IMHO dalam setiap program CS serius, bersama beberapa matematika lainnya (matematika diskrit, logika, aljabar linier, analisis numerik, ... dan mungkin kategori, topologi, aljabar, ...).
chi
3
Berikut ini adalah contoh bagaimana saya butuhkan kalkulus dalam komputer grafis: fungsi interpolasi halus pada dasarnya semua akan dalam bentuk f(0) = 0, f(1) = 1, f'(0) = f'(1) = 0, dan Anda dapat menambahkan kendala lain yang Anda peduli, misalnya f'(0.5) = 1. Beberapa saat yang lalu saya menggunakan ini untuk mendapatkan beberapa polinomial interpolasi yang berbeda untuk menghaluskan gambar.
porglezomp
3
Robotika mungkin dapat diperluas ke segala jenis pemodelan fisika (yang saya kira juga mencakup CG, dalam hal pencahayaan, jadi sebut saja pemodelan fisika kinetik). Ini termasuk akselerasi / kecepatan, pantulan / pegas / deformasi, pengontrol PID, akustik, gravitasi ...
metao
2
Saya akan memperjuangkan poin tidak langsung dengan cara ini: lebih baik daripada kelas yang mereka ambil sebelumnya, Kalkulus mengajarkan siswa mereka tidak bisa begitu saja menghitung jumlah masalah dan memperkirakan berapa banyak pekerjaan yang akan terlibat.
candied_orange
20

Ini agak tidak jelas, tetapi kalkulus muncul dalam tipe data aljabar. Untuk setiap tipe yang diberikan, tipe konteks satu lubangnya adalah turunan dari tipe itu. Lihat pembicaraan luar biasa ini untuk tinjauan umum tentang keseluruhan subjek. Ini adalah terminologi yang sangat teknis, jadi mari kita jelaskan.

Tipe Data aljabar

Anda mungkin pernah menemukan tupel yang disebut sebagai jenis produk (jika tidak, itu karena mereka adalah produk kartesian dari dua jenis). Kami akan menerima ini secara harfiah dan menggunakan notasi:

ab

ab

a+b

aNabNba+bNa+Nb

Jenis-jenis ini terlihat seperti ekspresi aljabar normal dan kita dapat, pada kenyataannya, memanipulasi mereka seperti itu (to the point).

Sebuah contoh

Dalam bahasa fungsional definisi umum dari daftar (diberikan dalam Haskell di sini) adalah ini:

data List a = Empty 
            | Cons a List

Ini mengatakan bahwa daftar kosong atau tuple dari nilai dan daftar lain. Mengubah itu menjadi notasi aljabar, kita mendapatkan:

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

Definisi ini kemudian mengatakan bahwa daftar adalah salah satu unit, atau tupel dari satu item, atau tupel dari dua item, atau tiga dll, yang merupakan definisi dari daftar!

Konteks Satu Lubang

Sekarang ke konteks satu lubang: konteks satu lubang adalah apa yang Anda dapatkan ketika Anda 'mengambil nilai dari' jenis produk. Mari kita beri contoh:

a2aa+a2a

Mengambil nilai dari tuple 3 memberikan tuple 2, tetapi ada tiga varian yang berbeda:

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

3a2a3

Untuk contoh terakhir kami, mari gunakan daftar:

Jika kami mengambil ekspresi asli kami untuk daftar:

L(a)=1+aL(a)

Kami dapat mengatur ulang untuk mendapatkan:

L(a)=11a

(Di permukaan ini mungkin tampak seperti omong kosong, tetapi jika Anda mengambil seri taylor dari hasil ini, Anda mendapatkan definisi yang kami peroleh sebelumnya.)

Sekarang jika kita membedakan ini, kita mendapatkan hasil yang menarik:

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

Dengan demikian satu daftar telah menjadi sepasang daftar. Ini sebenarnya masuk akal: dua daftar yang dihasilkan sesuai dengan elemen di atas dan di bawah lubang di daftar asli!

Tuomas Laakkonen
sumber
Ini luar biasa wawasan. Terima kasih.
D. Ben Knoble
12

Metode Numerik. Ada masalah kalkulus rumit yang unik untuk aplikasi spesifik, dan mereka membutuhkan solusi lebih cepat daripada yang bisa dipecahkan manusia tanpa program. Seseorang harus merancang algoritma yang akan menghitung solusinya. Bukankah itu satu-satunya hal yang memisahkan programmer dari ilmuwan?

Jonah Havel
sumber
3
Mengingat sifat "daftar" dari pertanyaan ini, setiap jawaban harus berusaha memberikan gambaran lengkap. Apakah Anda yakin ingin mengklaim bahwa metode numerik adalah satu - satunya contoh?
Raphael
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Raphael
12

Otomasi - Mirip dengan robotika, otomasi dapat memerlukan kuantifikasi banyak perilaku manusia.

Perhitungan - Mencari solusi untuk pembuktian sering membutuhkan kalkulus.

Visualisasi - Memanfaatkan algoritma canggih memerlukan kalkulus seperti cos, sine, pi, dan e. Terutama saat Anda menghitung vektor, bidang tabrakan, dan penyambungan.

Logistik dan Analisis Risiko - Menentukan apakah tugas itu mungkin, risiko yang terlibat, dan kemungkinan tingkat keberhasilan.

Keamanan - Sebagian besar keamanan dapat dilakukan tanpa kalkulus; Namun, banyak orang yang menginginkan penjelasan lebih suka dalam ekspresi matematika.

AI - Dasar-dasar AI dapat digunakan tanpa kalkulus; Namun, menghitung perilaku lanjut, mengeroyok kecerdasan / pikiran sarang, dan pengambilan keputusan berdasarkan nilai-nilai kompleks.

Perhitungan medis - Visualisasi sebagian besar data kesehatan memerlukan kalkulus seperti pembacaan EKG.

Sains & Teknik - Ketika bekerja dengan hampir semua disiplin ilmu lain membutuhkan kalkulus: Aerospace, Astrologi, Biologi, Kimia, atau Teknik.

Banyak orang dalam pemrograman dapat menjalani seluruh karir mereka tanpa menggunakan kalkulus; Namun, itu bisa terbukti sangat berharga jika Anda bersedia melakukan pekerjaan itu. Bagi saya itu paling efektif dalam otomasi, logistik, dan visualisasi. Dengan mengidentifikasi pola-pola tertentu, Anda bisa mengabaikan polanya, meniru polanya, atau mengembangkan metode yang unggul secara bersamaan.

LJones
sumber
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
@ DavidVicherby: Contoh: bagaimana Anda mengimplementasikan fungsi-fungsi pada, katakanlah, mikrokontroler tanpa FPU? Jika Anda tahu beberapa kalkulus, Anda langsung tahu jawaban yang bagus: seri daya.
Nate Eldredge
6

Faktanya adalah sangat kecil kemungkinan Anda untuk menggunakan kalkulus. Namun, hampir setiap disiplin ilmiah lainnya TIDAK menggunakan kalkulus dan Anda sedang bekerja pada gelar sains. Ada harapan tertentu tentang apa arti gelar sains di universitas dan salah satunya adalah Anda tahu kalkulus. Bahkan jika Anda tidak akan pernah menggunakannya.

Tidak apa-apa jika Anda mengerjakan kalkulus dengan buruk, tetapi pastikan Anda melakukan beberapa usaha dalam matematika diskrit. Ada banyak masalah pemrograman dunia nyata di mana matematika diskrit ikut bermain dan ketidaktahuan prinsip-prinsipnya dapat mempermalukan Anda di depan coders lain.

Scott B
sumber
9
Paragraf pertama Anda benar-benar salah dan berbatasan dengan teori konspirasi. Ada banyak bidang ilmu komputer di mana kalkulus berguna (lihat jawaban lain untuk daftar yang tak ada habisnya). Tentu, mungkin untuk menghindari semua area tersebut tetapi sangat menyesatkan untuk mengklaim bahwa menjatuhkan kalkulus akan memiliki dampak nol di luar nilai.
David Richerby
4
Tergantung pada program gelar Anda, Anda bisa menyelesaikan gelar tanpa menggunakan kalkulus, dan saya pasti berpikir jurusan CS tidak perlu sebanyak yang kita dapatkan. Tetapi melakukan yang buruk di dalamnya akan mengunci Anda keluar dari beberapa bidang ilmu komputer yang paling menarik. Ada banyak waktu untuk menjadi pengembang web begitu Anda lulus; saat di sekolah, mengapa tidak mencoba sedikit memaksakan diri?
tsleyson
3
@tsleyson Jika Anda ingin menjadi pengembang web, hemat uang dan waktu yang diperlukan untuk mendapatkan gelar CS.
Raphael
8
@ScottB Anda sepertinya membingungkan ilmu komputer dengan pemrograman.
David Richerby
3
@ScottB Siapa bilang CS = pemrograman matematika +? Saya sendiri telah mengadvokasi pandangan yang terbatas ini sejak lama. Tetapi Anda memilikinya mundur juga: matematika adalah bagian integral dari CS, seperti halnya untuk fisika. Kita membutuhkannya , bahkan jika kita tidak ingin mempraktikkannya . (Yang mengatakan, ini bukan tempat untuk diskusi ini. Silakan bergabung dengan kami di Obrolan Ilmu Komputer jika Anda ingin melanjutkan.)
Raphael
4

Banyak orang sudah menyediakan aplikasi di CS. Tetapi kadang-kadang Anda akan menemukan Kalkulus saat yang tidak Anda duga:

Derivatif ekspresi reguler diperiksa ulang

Jika Anda tahu automata pdf ini mungkin layak dibaca.

Aristu
sumber
Saya tidak melihat adanya kalkulus diferensial di sana; Saya melihat kata "turunan", tetapi saya tidak melihat apa pun yang menyerupai kalkulus diferensial tradisional.
2
Ini disebut "turunan formal", dan ini terkait dengan Kalkulus. Anda juga akan melihat ini dilakukan dengan Menghasilkan Fungsi, beberapa rumus yang berkaitan dengan struktur diskrit dan area lain di mana Anda tidak benar-benar memiliki "fungsi halus".
Jay
@ Jay: Yang penting bukan namanya. Bagaimana memahami kalkulus membantu?
Christian
2
Itu dijelaskan di halaman Wikipedia ini . Derivatif formal adalah operasi pada elemen struktur analgebra yang mengandung polinomial, dan secara formal "cukup seperti" aturan yang biasa untuk membedakan polinomial, namun - berbeda dari apa yang dilihat siswa dalam Kalkulus - polinomial tidak melebihi real; mereka mungkin polinomial atas "cincin" yang sewenang-wenang (struktur aljabar lain). Dan ada aplikasi praktis dari turunan formal - saya telah melihat setidaknya satu (Algebraic Cryptanalysis - tidak dapat mengingat detailnya).
Jay
4

Beberapa contoh yang lebih spesifik:

  • Kalkulus digunakan untuk menurunkan aturan delta , yang memungkinkan beberapa jenis jaringan saraf untuk 'belajar'.
  • Kalkulus dapat digunakan untuk menghitung transformasi Fourier dari fungsi osilasi, sangat penting dalam analisis sinyal.
  • Kalkulus digunakan sepanjang waktu dalam grafik komputer, yang merupakan bidang yang sangat aktif karena orang terus menemukan teknik baru. Untuk contoh mendasar, lihat persamaan rendering Kajiya
  • Kalkulus penting dalam bidang geometri komputasi, menyelidiki pemodelan kurva dan permukaan.
anjing jones
sumber
3

Untuk jawaban-jawaban luar biasa ini saya menambahkan poin ini: ketelitian dalam pengujian .

Dalam membuat test case untuk beberapa aplikasi, saya harus menggunakan kalkulus untuk memprediksi waktu berjalan yang diharapkan, ukuran memori, dan memilih parameter optimal ketika menyetel struktur data. Ini termasuk memahami kesalahan pembulatan yang diharapkan, dll.

Sementara statistik disebutkan dalam jawaban lain, saya ingin secara spesifik menyebutkan algoritma Monte-carlo , seperti algoritma optimasi dan beberapa algoritma streaming hemat yang didasarkan pada prinsip-prinsip matematika yang mencakup kalkulus.

Industri khusus tempat saya bekerja di mana kalkulus diperlukan meliputi:

  • Keuangan (membuat platform perdagangan)

  • Asuransi (integrasi numerik polis asuransi dalam skenario bagaimana-jika untuk menghitung kerugian polis yang diharapkan)

  • Logistik (mengoptimalkan konsolidasi rute transportasi)

  • Pemrosesan sinyal

Paul Chernoch
sumber
3

Kalkulus - bagian integral - digunakan langsung di CS sebagai dasar untuk berpikir tentang penjumlahan. Jika Anda mengerjakan bagian mana saja dari bagian Matematika Beton Knuth tentang penjumlahan, Anda akan dengan cepat mengenali konvensi yang umum untuk kalkulus: memahami beberapa kasus terus menerus memberi Anda alat untuk mempertimbangkan diskrit.

Banyak penggunaan studi CS Anda melibatkan sistem pemrograman yang memantau perubahan, atau dalam beberapa kasus, upaya untuk memprediksi masa depan. Matematika di sekitar sistem itu berakar pada persamaan diferensial dan aljabar linier, dan persamaan diferensial adalah ... kalkulus. Ada guru seperti Gibert Strang yang mengadvokasi untuk bergerak lebih cepat ke bagian persamaan diferensial, tetapi masih merupakan subset kalkulus. Ketika perubahan tergantung pada perubahan dalam sistem apa pun, itu mulai menjadi tidak stabil (dan stabil) dengan cara-cara yang keduanya tidak intuitif dan sangat dipahami. Untuk memahami mengapa sistem linier Anda yang berperilaku baik dalam cara-cara nonlinier, Anda memerlukan alat kalkulus atau Anda harus menciptakannya kembali untuk ruang masalah Anda.

Dan akhirnya, CS sering membutuhkan membaca dan memahami karya orang lain, dan kalkulus adalah paparan pertama untuk banyak kosakata, konvensi, dan sejarah bersama.

Jess
sumber
"Banyak penggunaan studi CS Anda melibatkan sistem pemrograman yang memantau perubahan, atau dalam beberapa kasus, upaya untuk memprediksi masa depan" - Saya tidak berpikir ini mewakili program studi CS moust.
Raphael