Isi kandungan:

Cara Membuat Program Integrasi Numerik di Python: 10 Langkah
Cara Membuat Program Integrasi Numerik di Python: 10 Langkah

Video: Cara Membuat Program Integrasi Numerik di Python: 10 Langkah

Video: Cara Membuat Program Integrasi Numerik di Python: 10 Langkah
Video: Integral Numerik Menggunakan Metode Simpson 1/3 dengan Pemrograman Python 3 2024, Julai
Anonim
Cara Membuat Program Integrasi Numerik di Python
Cara Membuat Program Integrasi Numerik di Python

Ini adalah tutorial bagaimana membuat dan menjalankan program yang akan menilai integrasi pasti menggunakan algoritma integrasi berangka. Saya telah membahagikan langkah-langkahnya kepada 3 bahagian: memahami algoritma yang akan digunakan untuk membuat program, mengekod program menggunakan bahasa pengaturcaraan Python, dan menjalankan program. Tutorial ini ditujukan untuk seseorang yang mungkin perlu membuat kalkulator dengan cepat untuk menilai integrasi pasti, atau mungkin memerlukan algoritma untuk digunakan dalam program skala yang lebih besar. Pengetahuan asas kalkulus diharapkan, tetapi maklumat matematik yang relevan dikaji. Pengetahuan mengenai pengaturcaraan tidak diharapkan, tetapi berguna kerana saya hanya menerangkan secara ringkas bagaimana pengaturcaraan itu benar-benar berfungsi.

Apa yang anda perlukan:

Komputer peribadi dengan akses ke internet

Langkah 1: Memahami Algoritma Bahagian 1: Integral yang pasti dan Penggunaannya

Memahami Algoritma Bahagian 1: Integral yang pasti dan Penggunaannya
Memahami Algoritma Bahagian 1: Integral yang pasti dan Penggunaannya

Saya akan menganggap anda tahu sedikit tentang sebutan dalam konteks kalkulus asas. Integriti penting kerana ia membolehkan anda menjumlahkan pelbagai nilai yang didarabkan dengan panjang minimum; ini berguna dalam banyak bidang kewangan, teori nombor, fizik, kimia, dan juga bidang lain. Program ini, bagaimanapun, hanya akan membolehkan anda mengira kawasan di bawah kurva untuk selang waktu yang terbatas, atau dengan kata lain, program ini tidak menilai anti-derivatif - algoritma yang lebih kuat diperlukan untuk itu. Algoritma ini berguna jika anda perlu menilai integral yang pasti dalam program yang lebih besar yang ditentukan untuk sesuatu yang lain, atau jika anda ingin memeriksa jawapan anda untuk sebarang integrasi pasti yang dilakukan dengan tangan.

Integral pasti asas mewakili kawasan di bawah lengkung yang ditentukan oleh fungsi mis. f (x). Untuk integral pasti, kami mencari kawasan antara dua titik (masing-masing berlabel a dan b). Dalam gambar, wilayah pirus adalah kawasan yang saya maksudkan, dan persamaan untuk menentukan ini juga ditunjukkan di wilayah tersebut. Fungsi yang ditunjukkan dalam gambar adalah sewenang-wenangnya.

Langkah 2: Memahami Algoritma Bahagian 2: Pendekatan Numerik

Memahami Algoritma Bahagian 2: Pendekatan Numerik
Memahami Algoritma Bahagian 2: Pendekatan Numerik

Komputer memerlukan sekumpulan arahan yang luas untuk menghitung kawasan di bawah fungsi sewenang-wenang yang akan berfungsi untuk fungsi apa pun, jadi kaedah analisis yang mungkin anda biasa tidak berguna kerana terlalu khusus. Satu kaedah untuk mengira integrasi kira-kira, yang sebenarnya dapat dikendalikan oleh komputer, dilakukan dengan mengisi kawasan yang diminati dengan jumlah segi empat tepat yang ditentukan oleh pengguna dengan lebar yang sama dan tinggi berubah kemudian menjumlahkan semua kawasan segi empat tepat. Sifat segi empat tepat yang kaku akan menyebabkan sebahagian daripada keseluruhan kawasan tidak tersentuh, oleh itu mengapa ini dianggap sebagai penghampiran; namun, semakin banyak segi empat tepat yang dapat anda jalani di antara sempadan (a dan b), semakin tepat jaraknya kerana kawasan yang tidak tersentuh menjadi lebih jarang. Oleh kerana komputer akan melakukan tugas tersebut, anda dapat menetapkan bilangan segi empat tepat di wilayah yang diinginkan menjadi bilangan yang sangat besar, menjadikan perkiraannya sangat tepat. Dalam gambar sokongan, bayangkan bahawa setiap segi empat tepat di kawasan yang ditentukan mempunyai lebar yang sama. Saya melakukan yang terbaik untuk menjadikannya sama lebar dalam Microsoft Paint, tetapi tidak melakukan yang terbaik.

Langkah 3: Memahami Algoritma Bahagian 3: Peraturan Titik Tengah

Memahami Algoritma Bahagian 3: Peraturan Titik Tengah
Memahami Algoritma Bahagian 3: Peraturan Titik Tengah

Peraturan ini menetapkan bagaimana segi empat tepat dibuat dan digunakan dalam pendekatan. Setiap segi empat tepat dari segiempat tepat "N" harus memiliki lebar yang sama, Δx, tetapi setiap segi empat sama tidak boleh sama persis: faktor yang bervariasi adalah ketinggian yang berbeza-beza ketika fungsi dinilai pada titik tertentu. Peraturan titik tengah mendapat namanya dari fakta bahawa anda menilai ketinggian setiap segi empat tepat sebagai f (x_n), di mana "x_n" adalah titik tengah masing-masing dari setiap segi empat tepat, seperti yang terpasang di kiri atau kanan persegi panjang. Menggunakan titik tengah adalah seperti menerapkan rata-rata yang akan membuat pendekatan lebih tepat daripada jika Anda menggunakan kanan atau kiri. Gambar sokongan untuk langkah ini merangkum bagaimana peraturan titik tengah ditakrifkan secara matematik.

Langkah 4: Membuat Program Bahagian 1: Memuat turun Python Compiler / Editor

Sekarang anda memahami algoritma yang perlu dilaksanakan, adalah masalah mendapatkan komputer untuk melakukan pengiraan untuk anda. Langkah pertama untuk memberitahu komputer apa yang harus dilakukan adalah mendapatkan alat untuk melakukannya. Algoritma ini boleh dikodkan dalam bahasa apa pun; untuk kesederhanaan, program ini akan dikodkan dalam bahasa Python. Untuk memerintahkan komputer anda melakukan operasi dengan Python, anda memerlukan editor yang mengambil arahan yang ditulis dalam bahasa itu yang kemudian akan disusun menjadi bahasa mesin yang dapat difahami oleh komputer anda sehingga dapat melaksanakan tugas yang anda suruh lakukan. Pada zaman ini, editor dan penyusun biasanya disatukan, namun itu tidak selalu berlaku. Anda boleh menggunakan mana-mana editor / penyusun yang anda selesa, tetapi saya akan menunjukkan cara mendapatkan kegemaran peribadi saya untuk Python: Canopy. Sekiranya anda sudah mempunyai editor / penyusun, anda boleh melangkau langkah-langkah ini.

  1. Pergi ke
  2. Klik Muat turun Kanopi
  3. Klik butang muat turun yang sesuai dengan sistem operasi anda

    Muat turun akan dimulakan secara automatik

  4. Ikuti arahan penyemai setelah memulakan fail pelaksanaan
  5. Jalankan Program
  6. Klik "Editor" dari menu utama program
  7. Klik "buat fail baru" di bahagian tengah skrin

Dari sudut ini anda akan melihat tetingkap putih kosong dengan kursor menyerupai dokumen pemprosesan kata dasar. Anda kini sudah bersedia untuk memulakan pengkodan algoritma integrasi berangka untuk menyelesaikan integrasi pasti. Langkah-langkah seterusnya akan mempunyai potongan kod yang akan anda salin dan penjelasan mengenai apa yang dilakukan oleh coretan tersebut untuk program secara keseluruhan.

Langkah 5: Membuat Program Bahagian 2: Mengimport Fungsi & Menentukan Pemboleh ubah

Membuat Program Bahagian 2: Mengimport Fungsi & Menentukan Pemboleh ubah
Membuat Program Bahagian 2: Mengimport Fungsi & Menentukan Pemboleh ubah

Salin kod dalam gambar.

Untuk mana-mana program yang mungkin anda kodkan, akan ada pemboleh ubah. Pemboleh ubah adalah nama yang diberikan kepada nilai yang akan dikendalikan dan yang boleh berubah. Dalam kebanyakan bahasa pengaturcaraan (jika tidak semua) anda harus memulakan pemboleh ubah sebelum program dapat membuat perubahan padanya. Dalam kes program ini saya telah menamakan pemboleh ubah "N," "a," dan "b." Nilai-nilai ini mewakili bilangan lelaran (AKA bilangan segi empat tepat), batas bawah, dan sempadan atas masing-masing. Anda boleh menamakan apa sahaja yang anda mahukan, tetapi sesuai dengan formula yang diberikan dalam "Memahami Algoritma Bahagian 3: Peraturan Midpoint," yang terbaik adalah tetap sama. Perhatikan bahawa mereka tidak hanya ditetapkan pada nilai tertentu. Ini kerana mereka dijadikan input bahawa, ketika program dijalankan, pengguna program dapat menentukan berapa nilainya. Teks dalam tanda kutip, setelah perintah input, muncul ketika anda menjalankan program yang memberitahu anda jenis nilai yang hendak diketik. Anda juga akan melihat bahawa "int" dan "float" digunakan sebelum sebutan input. Istilah-istilah ini memberitahu komputer jenis pemboleh ubah nilai ini. "Int" adalah bilangan bulat, dan "apungan" adalah nilai titik terapung (iaitu perpuluhan). Harus jelas mengapa ini ditetapkan sedemikian.

Sebarang teks yang hadir selepas "#" adalah komen yang membolehkan pengaturcara mengikuti kod dengan cara humanistik; Saya telah membuat komen tertentu dalam kod saya yang akan anda salin, tetapi jangan ragu untuk menambahkan komen yang membantu anda secara khusus. Program tidak akan membaca apa-apa dengan "#" sebelum ia sebagai arahan.

Bahagian kod yang berbunyi "dari math import *" memberitahu program untuk mengimport pelbagai fungsi matematik yang dapat digunakan tanpa harus memprogramnya sendiri. "*" Bermaksud "semua." Baca bahagian kod ini sebagai: dari perpustakaan matematik mengimport semua fungsi. Ini membolehkan anda menggunakan fungsi matematik seperti sinus, cosine, log, exp, dll. Fungsi ini dapat disatukan secara matematik dalam kod.

Langkah 6: Membuat Program Bahagian 3: Membuat Fungsi untuk Integrasi

Membuat Program Bahagian 3: Membuat Fungsi untuk Integrasi
Membuat Program Bahagian 3: Membuat Fungsi untuk Integrasi

Salin kod dalam gambar di bawah kod sebelumnya.

PERINGATAN: Bahagian ini padat, dan saya ingin membersihkan beberapa perkara yang berpotensi membingungkan. Semasa bercakap mengenai pengaturcaraan, perkataan "function" banyak muncul. Istilah ini juga banyak muncul ketika anda bercakap mengenai matematik. Oleh itu, sejak ini, ketika saya bercakap mengenai fungsi dalam pengaturcaraan, saya akan menulis "Fungsi Python", dan ketika saya bercakap mengenai fungsi matematik, saya akan mengatakan "fungsi matematik." Pada satu ketika kita akan menggunakan fungsi Python sebagai representasi untuk fungsi matematik yang dimaksud.

Coretan kod seterusnya ini adalah nadi program. Di sini, fungsi Python ditakrifkan yang menjalankan algoritma penyatuan berangka menggunakan aturan titik tengah. "def Integrate (N, a, b)" berbunyi sebagai: menentukan fungsi yang disebut "Integrate" yang menerima pemboleh ubah "N," "a," dan "b," dan mengembalikan kawasan di bawah lengkung (fungsi matematik) yang juga ditakrifkan dalam fungsi Python "Integrate". Anda boleh memanggil fungsi Python ini apa sahaja semasa melakukan pengekodan, tetapi masuk akal untuk memanggilnya menyatu kerana ia adalah fungsi yang memang menyatukan fungsi matematik.

Pada ketika ini, kita perlu mengulas bagaimana Python mengasingkan blok kod. Sekatan kod adalah keseluruhan bahagian yang melakukan tugas tertentu. Bahasa pengaturcaraan yang berbeza akan mempunyai cara yang ditentukan untuk membezakan "blok" ini. Untuk Python, blok dibezakan dengan lekukan: setiap bahagian yang menjalankan tugas mempunyai indennya sendiri, dan ada blok yang boleh diinduksi di dalam blok lekukan yang lain. Ini mewakili tugas dalam tugas, dan pada dasarnya memberitahu urutan kod yang perlu dilaksanakan. Dalam kes fungsi Python yang ditentukan "Integrate," semua yang ada dalam fungsi tersebut adalah satu blok sehingga membezakan tugas-tugas yang akan dilaksanakan dalam fungsi tersebut. Terdapat bahagian-bahagian lekukan dalam fungsi Python ini yang menjalankan tugas mereka sendiri juga. Ia berjalan seperti berikut: perintah (tugas) ditetapkan, titik dua mengikuti perintah, dan perintah yang dilakukan adalah lekukan di bawahnya.

Sejurus selepas menentukan fungsi Python "integrate", anda akan menentukan fungsi Python lain yang disebut f (x). Ini mewakili fungsi matematik yang akan disatukan. Untuk setiap fungsi matematik yang berbeza yang ingin anda gabungkan, anda harus menggunakan baris program ini untuk mengubahnya (tidak seperti pemboleh ubah yang ditentukan semasa program dijalankan). Setiap fungsi Python akan mempunyai nilai kembali, inilah fungsi yang dikembalikan semasa anda membuangnya. Dalam kes ini, nilai lemparan adalah "x," dan istilah "x" ini akan mengambil nilai dari apa sahaja yang anda lemparkan - ia adalah nilai sementara.

Seterusnya, for-loop bertindak sebagai penjumlahan yang ditentukan dalam formula di bahagian "Memahami Algoritma" dalam tutorial ini. Penjumlahan ini memerlukan beberapa lagi pemboleh ubah, salah satunya akan berfungsi sebagai nilai pulangan untuk keseluruhan fungsi "Integrate" Python. Sebelum gelung untuk, saya telah menetapkan pemboleh ubah ini sebagai "nilai," dan "nilai2." tugas untuk gelung adalah untuk melakukan iterasi pada pelbagai nilai untuk pemboleh ubah yang ditentukan, yang dapat dengan mudah ditentukan dalam perintah untuk gelung; dalam kes ini, pemboleh ubah tersebut adalah "n." Julat yang mana lelaran berlaku ialah 1 hingga N + 1. Anda harus perhatikan bahawa penjumlahan yang ditentukan dalam formula yang disebutkan di atas hanya berkisar antara 1 hingga N. Kami menentukannya dengan cara ini kerana bahasa Python mengira setiap nilai berulang bermula dari sifar, jadi pada dasarnya kita harus mengalihkan julat nilai agar sesuai dengan yang kita inginkan julat. Gelung untuk kemudian memungkinkan penjumlahan semua ketinggian segi empat sama dan menyimpan nilai itu ke dalam pemboleh ubah yang saya sebut "nilai." Ini dilihat pada bahagian kod yang muncul sebagai: nilai + = f (a + ((n- (1/2)) * ((b-a) / N))).

Dari situ, bahagian kod seterusnya menggunakan pemboleh ubah yang disebut "value2" yang kemudian ditugaskan untuk menjadi jumlah semua ketinggian setiap segi empat dikalikan dengan lebar piawai setiap segi empat tepat - ini adalah jawapan terakhir kami yang kami mahukan dipaparkan oleh program kami, dan dengan demikian nilai pengembalian fungsi Python "Integrate".

Langkah 7: Membuat Program Bahagian 4: Memaparkan Jawapan

Membuat Program Bahagian 4: Menampilkan Jawapan
Membuat Program Bahagian 4: Menampilkan Jawapan

Salin kod dalam gambar di bawah kod sebelumnya.

Sekarang jawapannya dapat diperoleh melalui fungsi Python "Integrate", kami ingin dapat memaparkannya. Ini hanya masalah meletakkan nilai yang dimasukkan oleh pengguna ("N," "a," dan "b") ke dalam fungsi "Integrate" Python dan mencetaknya di skrin. Perintah ini ditunjukkan pada baris 21, dan sebenarnya itulah yang perlu anda lakukan untuk menyelesaikan langkah ini. Kod pada baris 19 dan 20 hanya ada untuk "menambah" output keseluruhan program. "print (" ………………………. ")" memisahkan bahagian input program dari bahagian output, dan "print (" Inilah jawapan anda: ")" hanyalah sebutan yang jawapannya akan dicetak selepas baris teks itu.

Langkah 8: Menjalankan Program Bahagian 1: Menjalankan Program Seperti Ada

Menjalankan Program Bahagian 1: Menjalankan Program Seperti
Menjalankan Program Bahagian 1: Menjalankan Program Seperti

Sekiranya anda tidak menggunakan Canopy, maka anda mungkin tidak perlu mengikuti langkah ini sama sekali dan menjalankan program mungkin memerlukan prosedur yang berbeza. Di Canopy, sebelum anda dapat menjalankan program, anda perlu menyimpannya. Jenis fail untuk program Python adalah fail.py - secara automatik disimpan seperti ini. Pilih di mana anda mahu fail disimpan, maka anda akan dapat menjalankan program.

Menjalankan Program:

  1. Tekan butang hijau yang kelihatan seperti "butang main" yang terletak di bar alat tepat di atas tempat nama fail anda muncul (rujuk gambar).
  2. Program ini kemudian akan dijalankan di layar bawah editor yang dikenali sebagai persekitaran analisis data Canopy. Dengan andaian anda menyalin arahan ketika saya menulisnya, anda akan melihat di bahagian bawah persekitaran analisis data Canopy arahan: "Masukkan berapa kali anda mahu menjumlahkan (lebih banyak kali = lebih tepat):". (rujuk gambar)
  3. Masukkan nilai untuk berapa kali anda mahu melakukan lelaran iaitu 10000 (berapa segi empat tepat yang anda mahu masuk ke kawasan anda), kemudian tekan enter.
  4. Lebih banyak arahan akan muncul dengan pernyataan yang seharusnya merupakan input input yang biasa anda kodkan ke dalam program pada langkah 5. Isi dengan tepat seperti di nombor 3 di atas.
  5. Integral harus dinilai, dan hasilnya harus muncul.

Sekiranya anda mengodkan program seperti yang ditunjukkan pada gambar sebelumnya, anda baru sahaja mengintegrasikan f (x) = x ^ 2 melalui beberapa batas. Unggul x ^ 2 adalah mudah untuk dinilai dengan tangan, oleh itu anda harus memeriksa dan memastikan program memberikan jawapan yang sangat dekat dengan nilai analisis yang betul yang ditentukan dengan tangan. Semasa saya menjalankan program dengan nilai N = 10000, a = 0, dan b = 10, saya mendapat jawapan 333.33333249999964. Jawapan analitik yang betul, adalah 333.333. Ini sangat tepat dan cepat. Anda pada asasnya memerah 10, 000 segi empat tepat antara 0 dan 10 pada paksi x dan menggunakannya untuk menghampiri kawasan di bawah lengkung x ^ 2!

Langkah 9: Menjalankan Program Bahagian 2: Mengintegrasikan Fungsi Matematik Lain

Menjalankan Program Bahagian 2: Mengintegrasikan Fungsi Matematik Lain
Menjalankan Program Bahagian 2: Mengintegrasikan Fungsi Matematik Lain

Pada langkah sebelumnya, jika anda mengikuti dengan setia, anda mengintegrasikan f (x) = x ^ 2. Itu bukan satu-satunya fungsi matematik yang dapat disatukan oleh program ini. Ingat dari langkah 5 anda mengimport susunan perpustakaan matematik fungsi Python ke dalam program. Ini membolehkan anda menggunakan fungsi matematik yang lebih rumit yang dapat disatukan. Mari beri satu tembakan. Sudah tentu, anda boleh menggunakan fungsi yang anda mahukan, tetapi saya akan menunjukkan lebih tepat ketepatan kod ini dengan mengintegrasikan fungsi matematik tertentu yang menghasilkan nilai yang terkenal apabila disatukan dalam julat tertentu. Fungsi itu ialah f (x) = Sin [x]. Fungsi matematik ini ditunjukkan dalam gambar yang disertakan pertama, diplotkan dari 0 hingga 2π, dan kawasan yang menarik dilorekkan dengan warna pirus. Terdapat jumlah kawasan positif yang sama kerana terdapat kawasan negatif dalam selang waktu ini, jadi jika anda menambahkan jumlah kawasan, anda akan mendapat sifar. Mari lihat apakah ini benar-benar berlaku:

Menempatkan fungsi matematik f (x) = Sin [x] ke dalam program:

  1. Sebelum menjalankan program lagi, di bawah komen "#taip fungsi anda setelah kembali," taip: sin (x) di mana x ** 2 berada pada masa ini. (rujuk gambar).
  2. Jalankan program dengan menekan butang main hijau sekali lagi.
  3. Taip 10000 untuk nilai N (berapa kali anda mahu menjumlahkan).
  4. masukkan "0" untuk batas bawah.
  5. Masukkan 6.2832 untuk batas atas (kira-kira 2π).
  6. Lihat nilai yang anda dapat.

Semasa saya melakukan ini, saya akhirnya mendapat nilai 1.079e-10: ini sama dengan.0000000001079, yang hampir mendekati sifar, sehingga nampaknya tepat, dan menunjukkan bahawa algoritma menangani kawasan negatif dengan secukupnya.

Langkah 10: Menjalankan Program Bahagian 3: Memperluas Program

Pada tahap ini anda sudah selesai: anda mempunyai algoritma integral pasti berfungsi yang dikodkan dalam Python yang berjalan dengan lancar dan memberikan jawapan yang sangat tepat. Walau bagaimanapun, program ini dapat diperbaiki. Saya bukan pengaturcara, dan saya mempunyai pengalaman minimum dengan Python. Sebenarnya, saya terpaksa menyegarkan diri menggunakan Python untuk menyelesaikan tutorial ini, tetapi itu harus memberi anda keyakinan bahawa Python adalah bahasa yang mudah dipelajari. Maksud saya ialah anda dapat memperluas program ini dengan menjadikannya lebih efisien, mungkin melaksanakan beberapa GUI, dan menjadikannya lebih mesra pengguna.

Fikiran saya untuk mengembangkan program:

  • Laksanakan antara muka pengguna grafik yang membolehkan anda menjalankan program tanpa menggunakan persekitaran analisis data interaktif Canopy
  • Buat agar fungsi matematik yang akan disatukan tidak harus dimasukkan ke dalam program, tetapi dapat dimasukkan setelah program dijalankan (saya pada awalnya berusaha untuk melakukan ini, tetapi tidak dapat mengetahuinya).
  • Tentukan fungsi Python "Integrate" sehingga memerlukan fungsi f (x) seperti yang dinyatakan dalam fungsi f (x) di dalamnya.

Ini hanya beberapa contoh bidang penambahbaikan, tetapi saya jamin ada banyak bidang lain yang dapat diperbaiki. Oleh itu, saya meninggalkan langkah ini sebagai contoh kelemahan program ini dan mungkin merupakan latihan kepada sesiapa sahaja yang ingin meningkatkan lagi program ini.

Disyorkan: