3 poin oleh GN⁺ 2024-05-19 | 1 komentar | Bagikan ke WhatsApp
  • Catatan pembelajaran yang membantu memahami kalkulus dari berbagai sudut pandang, dengan memanfaatkan sintaks Julia yang mudah dan kemampuan komputasinya untuk grafik serta eksperimen numerik
  • Mengikuti alur rule of four ala Harvard dengan membahas perspektif grafis, numerik, aljabar, dan verbal secara bersamaan, sementara Julia terutama digunakan untuk menunjukkan aspek grafis, numerik, dan sebagian aljabar
  • Sementara sistem aljabar komputer seperti Mathematica, Maple, dan Sage kuat dalam pemrosesan simbolik, catatan ini menempatkan Julia sebagai alat yang berfokus pada komputasi numerik dan menambahkan pemrosesan aljabar yang diperlukan
  • Pembelajar dapat menyiapkan lingkungan dengan mengikuti panduan instalasi dan antarmuka, serta menyederhanakan pekerjaan berulang dan fungsi umum dengan paket CalculusWithJulia
  • Setiap halaman membahas konsep yang terfokus seperti satu bagian dalam buku, dan melalui soal penilaian mandiri di bagian akhir, pembelajar dapat memeriksa konsep komputasi yang diperlukan untuk menyelesaikan kalkulus pengantar

Pendekatan belajar kalkulus dengan Julia

  • Calculus with Julia adalah kumpulan catatan untuk mempelajari calculus dengan bahasa Julia
  • Julia adalah bahasa pemrograman open source, dan dalam catatan ini sintaks yang mudah dipelajari serta kemampuan komputasinya digunakan sebagai alat yang cocok untuk belajar kalkulus
  • Dokumen untuk persiapan belajar juga disediakan
  • Sejak pertengahan 1990-an, pendidikan kalkulus memiliki kecenderungan untuk menggunakan beberapa perspektif sekaligus, dan “rule of four” ala Harvard berupaya memasukkan elemen grafis, numerik, aljabar, dan verbal sebisa mungkin
  • Catatan ini disusun agar melalui Julia pembelajar dapat meninjau aspek grafis dan numerik kalkulus, dan terkadang hingga aspek aljabarnya

Perbedaan dengan sistem aljabar komputer

  • Ada banyak contoh pengintegrasian sistem aljabar komputer seperti Mathematica, Maple, dan Sage ke dalam pembelajaran kalkulus
  • WolframAlpha memanggil kemampuan Mathematica sambil mengizinkan sintaks informal yang fleksibel, dan juga dapat digunakan sebagai backend untuk fitur Apple Siri
  • Sistem semacam ini memodelkan pemrosesan aljabar dan simbolik dengan baik dalam pembelajaran, sekaligus menyediakan sarana untuk menunjukkan aspek numerik
  • Sebaliknya, catatan ini menggunakan Julia terutama sebagai alat komputasi numerik, lalu menambahkan pemrosesan aljabar dan simbolik di atasnya
  • Proses melakukan pemrosesan simbolik secara langsung dengan tangan dapat bermanfaat untuk pembelajaran, tetapi sistem aljabar komputer dapat dengan mudah menghasilkan hasil akhir sehingga latihan tersebut tampak berulang

Cakupan pembelajaran dan susunan halaman

  • Tujuannya adalah mendekati konsep kalkulus dengan memanfaatkan teknologi, tanpa terikat pada detail mekanis bahasa komputer
  • Sintaks Julia diperlakukan sebagai bahasa yang tidak jauh lebih sulit untuk dimasuki pada tahap awal dibanding penggunaan kalkulator, tetapi memiliki potensi perluasan yang besar
  • Catatan ini menangani konsep komputasi dengan mereduksinya menjadi kumpulan terbatas
    • Dengan kumpulan ini saja, banyak soal kalkulus dapat diselesaikan
    • Berbagai aspek pemrograman tidak dibahas secara menyeluruh
    • Pembelajar yang lebih tertarik dapat mengeksplorasi lebih dalam melalui Julia
  • Di dalam konsep komputasi yang terbatas itu terdapat operator yang mereduksi perhitungan kalkulus menjadi pemanggilan fungsi berbentuk action(function, arguments...)
  • Dengan kumpulan kecil aksi (action) yang dapat dikombinasikan, banyak soal kalkulus pengantar dapat ditangani
  • Setiap halaman disusun di sekitar satu konsep yang relatif terfokus, seperti satu bagian dalam buku
  • Di akhir halaman terdapat soal untuk dikerjakan sendiri, dan semuanya memiliki jumlah jawaban penilaian mandiri yang terbatas
  • Ide-idenya diambil dari Strang, Knill, Schey, Hass dan lainnya, Rogawski dan lainnya, Angenent, berbagai halaman Wikipedia, serta sumber lain

Materi yang disediakan dan cara menjalankan

  • Catatan ini disertai paket Julia CalculusWithJulia
    • Menyediakan fungsi-fungsi sederhana yang menyederhanakan pekerjaan umum
    • Memuat paket-paket berguna yang akan digunakan berulang kali
  • Catatan ini disediakan dalam format Quarto book, dan informasi tentang buku Quarto dapat dilihat di dokumentasi Quarto
  • File PDF dapat dikompilasi dengan Quarto, tetapi ada banyak bagian yang harus diselaraskan, hasilnya tidak optimal, dan ukuran filenya juga cukup besar
  • Tersedia unduhan versi PDF
  • Kontribusi dapat dilakukan melalui tautan “Edit this page” dalam bentuk usulan topik tambahan, perbaikan kesalahan, atau perbaikan typo, dan kontributor dicatat di contributors
  • Julia dapat diinstal dengan mudah menggunakan utilitas juliaup
  • Tautan instance binder.org untuk menjalankan Julia di web juga disediakan, tetapi memiliki keterbatasan resource
    • Image tanpa SymPy
    • Image dengan SymPy, waktu loading lebih lama

1 komentar

 
GN⁺ 2024-05-19
Pendapat di Hacker News
  • Anak saya akan naik ke kelas 2 SMA dan sedang mengambil SVC, jadi secara pribadi materi ini tampak sangat tepat
    Jika penulis melihat thread ini, saya penasaran apakah ini juga cocok untuk siswa SMA yang baru sekadar pernah mencoba pengantar Python

    • Kalau siswa SMA belajar kalkulus, menurut saya lebih baik belajar dulu selama beberapa waktu dengan kertas dan pena sebelum pemrograman
      Yang penting adalah mengerjakan soal sendiri dan memikirkan konsep dasar, bukan memusingkan sintaks kode; latihan dengan tangan membantu menginternalisasi materi dengan lebih baik
    • Menurut saya jelas tidak
      Bagian pemrogramannya baik-baik saja, tetapi dari pembacaan sekilas, penjelasan matematikanya ditulis dengan cara yang akan sangat membingungkan bagi orang yang belum memahami kalkulus, sehingga siswa bisa merasa dirinya buruk dalam matematika padahal sebenarnya penjelasannya saja yang kurang
      Misalnya gambar di [1] menunjukkan sebuah kurva melewati kotak berarsir berbentuk L tanpa label sumbu, lalu dilanjutkan dengan persamaan parametrik dan beberapa substitusi untuk menurunkan rumus integrasi parsial
      Bahkan dari sudut pandang orang yang paham integrasi parsial, itu hampir termasuk cara paling membingungkan untuk menurunkan atau menjelaskan rumusnya, dan gambarnya juga tidak banyak membantu kecuali bagi orang yang sudah memahami konsepnya
      Jika pernah melihat ilustrasi yang sangat baik dan penjelasan yang jelas seperti dalam “Calculus” karya James Stewart, kontrasnya sangat mencolok
      Biasanya penjelasan integrasi parsial memang dimulai dari aturan turunan hasil kali seperti penulisnya, tetapi pertama-tama mencoba menurunkan hasil kali dengan beberapa contoh untuk membangun intuisi tentang bentuk antiturunan dari hasilnya, lalu mengintegralkan kedua sisi dan memisahkan integral untuk menurunkan rumusnya[2]
      Itu jauh lebih jelas dan mudah diikuti, dan jika benar-benar ingin membantu siswa, sebaiknya juga mengajarkan metode tabel/“DI” agar mereka tidak kesulitan dengan tanda saat melakukan integrasi parsial berkali-kali
      [1] https://jverzani.github.io/CalculusWithJuliaNotes.jl/integra...
      [2] Catatan penurunan yang saya buat saat belajar ada di sini. Ini bukan ditulis untuk menjelaskan kepada pemula, hanya catatan pribadi, tetapi tetap jauh lebih mudah diikuti daripada contoh di atas https://publish.obsidian.md/uncarved/3+Resources/Public/Inte...
    • Saya belajar kalkulus secara mandiri pada usia itu, yaitu kelas 11, dan awalnya tentu saja sulit, tetapi saya bertahan dengan menelusuri beberapa buku setengah-setengah sampai menemukan buku yang konsepnya benar-benar terasa pas
      Jadi kalau harus merekomendasikan, saya ingin menyarankan Quick Calculus karya Kleppner dan Ramsey
      Untuk membangun intuisi atas konsep yang baru pertama kali ditemui, tidak ada buku yang pernah saya gunakan yang mendekati buku ini
      Setelah itu dikuasai, buku bagus apa pun akan baik-baik saja; buku James Stewart juga sangat bagus, tetapi terlalu tebal, jadi lebih baik dipakai seperti buku referensi untuk memilih bacaan dan soal yang sesuai, bukan menyuruh mengerjakan semua soal dari halaman 1
      Intinya adalah sejak awal benar-benar memahami dasar tentang apa itu turunan, integral, dan limit, dan dalam hal itu Quick Calculus sangat unggul
      Jika siswa tertarik pada pemrograman, memilih latihan yang sesuai dari buku Julia ini atau buku serupa untuk melengkapi Stewart juga bagus, dan jika mau, mengerjakannya dengan Python pun sudah cukup
      Saya juga, pada usia yang sama, mengimplementasikan integrator numerik dan diferensiator simbolik dengan Python sebagai cara memperkuat pengetahuan kalkulus, dan keduanya bermanfaat sekaligus menyenangkan
      Khususnya diferensiasi simbolik terasa seperti sihir, tetapi pada akhirnya itu adalah melakukan parsing dan terus menambahkan setiap aturan yang dipelajari dalam matematika
    • Menurut saya, untuk mengikuti proses ini tidak perlu pernah mengenal Julia atau pemrograman sebelumnya
    • Istilah “kalkulus” bisa memiliki cukup banyak arti, dan bisa berbeda tergantung kelas, sekolah, dan negara
      Kalkulus yang saya pelajari selama 2 tahun terakhir di SMA mirip dengan kelas-kelas sebelumnya: mempelajari beberapa algoritma untuk memanipulasi simbol, tahap yang membutuhkan sedikit intuisi, serta beberapa fakta tentang kemiringan dan luas untuk menyelesaikan soal cerita
      Hal pertama yang dipelajari adalah aturan bahwa turunan dari x^n adalah n x^(n-1), yang merupakan bagian dari algoritma diferensiasi
      Di universitas, mata kuliah yang sama disebut analisis, dan isinya mendefinisikan berbagai konsep serta membuktikan sifat-sifatnya
      Kelas seperti ini umumnya mengikuti struktur tiga bagian: barisan·deret dan konvergensi ke limit, kontinuitas fungsi dan limit fungsi, lalu diferensiasi dan integrasi serta mungkin sebagian teorema Taylor
      Struktur ini tidak banyak berubah sejak Cauchy memperkenalkan banyak definisi “modern” dalam buku ajarnya, dengan pengecualian jelas berupa integral yang dikenal sebagai integral Riemann
      Saya tidak tahu proses ini jenis yang mana, tetapi karena dimulai dari limit, mungkin lebih dekat ke yang kedua, dan dalam hal itu saya tidak yakin seberapa bergunanya Julia
      Saat menilai kecocokannya, poin utamanya tampaknya bukan pemrograman, melainkan bahwa ini mungkin menuntut kematangan matematis
      Yang saya maksud dengan kematangan matematis di sini adalah kemampuan menangani definisi yang presisi dan konsep abstrak tanpa menarik banyak kesimpulan keliru, serta mampu mengikuti argumen dalam bentuk pembuktian matematis
  • Saya sempat membaca sekilas beberapa bagian buku ini dan merasa tertarik; rasanya saya juga bisa menyarankan anak-anak untuk belajar kalkulus dengan cara seperti ini.
    Namun saya penasaran dengan kalimat di paragraf pertama pengantar: “Julia adalah bahasa pemrograman open source dengan sintaks yang mudah dipelajari, dan cocok untuk pekerjaan ini.”
    Mengapa Julia lebih cocok dibanding bahasa lain?

    • Julia punya banyak keunggulan kecil yang berguna untuk matematika.
      Seperti notasi matematika standar, jika skalar ditempelkan di depan variabel, itu secara implisit menjadi perkalian; misalnya jika x bernilai 2, maka 3x dievaluasi menjadi 6.
      Dukungan Unicode-nya juga kaya, sehingga operator seperti ∈ dan ∉ mungkin terlihat agak berlebihan tetapi bekerja sesuai harapan; π sudah didefinisikan sebelumnya dan bahkan bertipe bilangan irasional, dan √ juga bisa dipakai sebagai operator sehingga √2 adalah ekspresi valid yang menghasilkan nilai floating-point.
      Julia tidak hanya mendukung sintaks seperti ini, tetapi juga menyediakan cara mudah untuk mengetikkannya.
      Meski sedikit kurang terkait dengan kalkulus, vektor dan matriks adalah tipe data kelas satu, sehingga jauh lebih mudah diketik dan dipahami sekilas dibanding Python.
      Bedanya seperti m = [1 2 3; 4 5 6; 7 8 9] versus m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]].
      Transposisi dilakukan dengan operator satu karakter ', hasil kali dalam bisa memakai operator titik m ⋅ n, dan A\b juga bekerja seperti di Matlab.
      Selain itu, Julia mendukung broadcasting dan juga memiliki comprehension, tetapi secara pribadi saya merasa broadcasting membuat comprehension tidak terlalu sering diperlukan.
      Bilangan rasional juga bawaan, dengan sintaks yang sangat sederhana seperti 1//2.
    • Karena Julia adalah bahasa yang dibuat dengan sasaran analisis numerik.
      “Pesaing” utamanya, Python, terkenal punya sintaks operasi matematika yang kurang bagus, dukungan matematika di standard library-nya kecil, sistem tipenya terbatas, dan performa eksekusinya sangat buruk.
      Julia memecahkan masalah-masalah ini sambil menyediakan bahasa yang relatif mudah dibaca, sering kali mirip dengan notasi matematika, dan performanya juga cukup baik.
    • Saya juga mencoba-coba beberapa bagian, dan meski format serta alur bukunya terasa agak membingungkan, beberapa fitur Julia menarik, seperti fitur notasi postfix yang memungkinkan notasi tulisan tangan seperti f’ dan f’’.
      Dari pengalaman pribadi, “buku kalkulus” terbaik menurut saya bukan memakai Julia, melainkan Haskell, yaitu Learn Physics with Functional Programming, yang hanya bergantung pada library untuk menggambar grafik.
      https://www.lpfp.io/
      Julia dikenal sebagai “bahasa pemrograman untuk matematika”, dan arah itu mendorong banyak bagian pengembangannya.
      Secara eksplisit, Julia mendukung banyak notasi matematika yang cocok dengan tulisan tangan atau simbol LaTeX.
      Secara implisit, sepertinya ini merujuk pada sintaks yang disederhanakan ala Python, interoperabilitas yang luas, penggunaan SymPy yang menangani banyak hal dalam tutorial ini, primitif komputasi paralel bawaan, serta kompilasi JIT yang memungkinkan iterasi dan eksplorasi cepat.
    • Ringkasan yang bagus ada di sini.
      https://computationalthinking.mit.edu/Spring21/
      Singkatnya, Julia cukup mirip dengan Python dan sama-sama mudah dipakai, tetapi punya sintaks yang jauh lebih kaya untuk mengekspresikan matematika secara langsung.
      Notebook-nya juga lebih kaya.
      Perbedaan utamanya adalah di notebook Python Anda menjalankan sel, sedangkan notebook Julia menangani hal-hal seperti dependensi.
      Jika x diubah menjadi angka atau slider, semua hal yang bergantung padanya ikut diperbarui.
      Definisikan grafik dan tambahkan slider, lalu semuanya langsung berjalan.
      Saya juga bukan ahli Julia dan sebagian besar bekerja dengan Python dan JavaScript, tetapi dalam kelas serupa, dua hal di atas sangat terlihat jelas.
    • Julia banyak mewarisi DNA MATLAB, seperti aljabar linear di standard library dan indeks yang dimulai dari 1.
      Di atas itu ada dukungan Unicode yang sangat sering digunakan, dan dalam banyak kasus sengaja bisa terlihat seperti pseudocode.
  • Menariknya, karena ingin belajar ML, belakangan ini saya mulai mempelajari kembali matematika, yaitu aljabar linear, kalkulus, dan statistik.
    Sambil mempelajari berbagai materi, saya juga mencoba implementasi sederhana dengan Python; agak memalukan, tetapi sebelumnya saya belum pernah memakai Python.
    Cukup menyenangkan bisa memutar vektor dan menggambar fungsi dengan matplotlib.
    Memang bisa digambar dengan tangan, tetapi tidak akan seindah itu.

  • Saat merancang kursus seperti ini, perlu agak berhati-hati.
    Umumnya ini kemungkinan paling menarik bagi orang yang sudah cukup memahami kalkulus dan pemrograman sekaligus, sementara target yang sebenarnya—orang yang sedang mempelajari salah satunya—mungkin belum cukup siap menerima kelas seperti ini.
    Secara pribadi, ketika saya mencoba memasukkan sistem aljabar komputer yang agak eksotis seperti Maxima atau Sagemath ke kelas kalkulus, responsnya paling banter hanya biasa saja.
    Menurut saya, sebagian masalahnya adalah mahasiswa tahun pertama tidak terlalu tertarik memasang perangkat lunak untuk mata kuliah yang bahkan bukan kelas ilmu komputer.
    Namun di kelas yang sedikit lebih tinggi tingkatnya, ini bisa bekerja cukup baik sebagai elemen opsional, dan saya mendapat hasil yang sangat bagus dengan proyek Python di kelas persamaan diferensial biasa.
    Fakta bahwa Python bukan bahasa niche jelas juga membantu.

    • Dalam pendidikan statistik pun ini kesulitan yang sering muncul, karena mahasiswa harus belajar konsep statistik dan perangkat lunak statistik sekaligus.
      Meski begitu, pada akhirnya tantangan itu layak diambil, dan menurut saya lebih baik daripada menyuruh mereka menghitung semuanya dengan tangan dan mencari nilai di tabel.
    • Dari sudut pandang programmer otodidak yang tidak pernah belajar lebih dari aljabar, materi ini terlihat sangat bagus, dan mungkin sayalah bagian dari kelompok sasaran kecil itu.
    • Jika Anda mendapat hasil baik dengan proyek Python di kelas persamaan diferensial biasa, saya penasaran buku ajar apa yang dipakai.
      Akan bagus jika Anda bisa membagikan referensi apa pun yang digunakan, entah catatan kuliah, kode, slide, buku, atau lainnya.
  • Terkait hal ini, jika Anda memakai Emacs, ada paket Calc yang mendukung aljabar komputer.
    Baru-baru ini saya merilis antarmuka yang membuat Calc jauh lebih mudah digunakan, dan menuliskannya di sini.
    http://yummymelon.com/devnull/mathing-in-emacs-with-casual.h...

  • Konsepnya saya suka
    Namun, rasanya akan jauh lebih baik jika materi seperti ini dibuat di atas sesuatu seperti MOOCulus, atau setidaknya berangkat dari sana
    https://ximera.osu.edu/mooculus/calculus1
    Secara keseluruhan, saya lebih memilih MOOCulus
    Meski begitu, nilai tambah yang diberikan Calculus with Julia tetap besar
    Akan bagus jika keduanya bisa diintegrasikan dengan cara apa pun
    Inti kekuatan MOOCulus adalah kualitas tulisannya lebih baik dan jauh lebih tidak bertele-tele, serta berkat latihan terintegrasinya, mahasiswa mengikuti materi dengan lebih cermat
    Materi ini juga banyak dipakai di kelas dan sudah cukup matang
    Jika di-fork lalu diperkuat dengan Julia, itu akan menjadi peningkatan yang sangat besar; menambahkan contoh aplikasi juga sepertinya demikian

    • Saya sudah mengecek situs webnya, dan cukup sulit juga memahami cara memakainya
      Selain itu, bagian “Equal or Not?” yang pertama saya klik pun memiliki error
  • Kombinasi Maxima dan Gnuplot, beserta dokumentasi yang disertakan, juga cukup bagus
    Seingat saya, dulu ada PDF pengantar/panduan untuk Maxima yang cukup matang

  • Apakah Julia bisa menjadi pengganti yang layak bagi orang yang biasa memakai Matlab?

    • Sangat mungkin
      Untuk perbedaan detailnya, lihat https://docs.julialang.org/en/v1/manual/noteworthy-differenc...
    • Sangat bisa
      Rasanya seperti memberikan segelas air es kepada seseorang di neraka
      Meminjam ucapan Steve Jobs tentang iTunes untuk Windows—tentu saja, saat itu iTunes belum menjadi kekacauan seperti kemudian
      Saya sangat menghormati pencapaian Cleve Moler dan Matlab, terutama dalam membuat LINPACK, EISPACK, dan sebagainya mudah diakses
      Mereka juga banyak berusaha mengatasi keterbatasan awal yang hanya memiliki satu tipe data, yaitu matriks
      Namun sebagai bahasa serbaguna modern, Julia jauh lebih nyaman dipakai sambil tetap mempertahankan hampir seluruh kekuatan Matlab
    • Dalam banyak hal, ya
      Jauh lebih cepat, umumnya memiliki lebih banyak fitur yang lebih baik sebagai bahasa pemrograman, dan paralelisasi juga jauh lebih mudah
      Sebagai orang yang pernah memakai keduanya secara profesional, saya akan mengatakan bahwa saat ini Julia umumnya pilihan yang lebih baik
      Namun bahasa seperti Matlab atau Stata memiliki sangat banyak algoritma lama yang sudah diimplementasikan, dan bisa saja belum ada implementasi padanannya di Julia
      Jika yang Anda butuhkan adalah salah satunya, sering kali sulit membenarkan penggunaan bahasa lain
      Dalam praktiknya, memindahkan kode Matlab/Python/Stata ke Julia umumnya cukup mudah
    • Sangat bisa
      Kode Julia bisa jauh lebih enak dibaca dan jauh lebih berkinerja dibanding kode Matlab
    • Tergantung apakah Anda bergantung pada toolbox atau fitur integrasi MATLAB tertentu
      Jika tidak, Julia akan terasa nyaman dan menjadi pengganti yang memadai
      Sintaksnya sampai batas tertentu mirip dan memiliki banyak kemudahan terkait array seperti MATLAB
      Selain itu, Julia menyediakan sistem tipe yang bagus dan penanganan pemrograman serbaguna yang jauh lebih baik; misalnya hal-hal seperti lokasi fungsi tidak berperilaku aneh
      Saya sarankan mencobanya langsung
  • Tautan PDF di header halaman menghasilkan 404

    • Sepertinya memang sengaja dinonaktifkan
      “Catatan ini dapat dikompilasi menjadi file PDF melalui Quarto. Karena hasilnya cukup besar, file untuk diunduh tidak disediakan. Pembaca yang berminat dapat mengunduh repositori, menginstansiasi environment, lalu menjalankan quarto dari subdirektori quarto untuk merendernya menjadi PDF; file itu akan dibuat. Prosesnya memakan waktu”
  • “Perhitungan adalah godaan yang harus ditahan selama mungkin”
    J.P. Boyd