Buku Ringkasan Calculation
Buku Ringkasan Calculation
MATEMATIKA
TEKNIK
21539144004
S1-TEKNIK MANUFAKTUR-E2
Bab ini mencakup semua prosedur matematika dasar dan khusus untuk nilai
masinis modern dan pekerja logam. Geometri dan trigonometri bidang adalah bilangan
prima penting, seperti manipulasi aljabar dasar. Solusi untuk banyak dasar dan operasi
permesinan dan pengerjaan logam yang kompleks akan sulit atau tidak mungkin tanpa
menggunakan cabang-cabang matematika ini. Dalam bab ini dan sub- bagian lain dari
buku pegangan ini, semua aspek dasar dan penting dari cabang-cabang matematika
ini akan dibahas secara rinci. Contoh permesinan dan pengerjaan logam yang khas
masalah dan solusi mereka disajikan di seluruh buku pegangan ini.
Sebaliknya, jika sudut-sudut suatu segitiga sama besar dengan sudut-sudut pada
segitiga lainnya, segitiga-segitiga itu sebangun dan sisi-sisinya proporsional; jadi jika
sudut A = sudut A′, sudut B = sudut B′, dan sudut C = sudut C′, maka a:b:c = a′:b′:c′
dan a/a′ = b/b′ = c/c′.
Segitiga sama kaki (lihat Gambar 1.3). Jika sisi c = sisi b, maka sudut C = sudut B.
Segitiga sama sisi (lihat Gambar 1.4). Jika sisi a = sisi b = sisi c, sudut A, B, dan C sama
(60 °).
Segitiga siku-siku (lihat Gbr.1.5). c2 = a2 + b2 dan c = (a2 + b2) 1/2 jika sudut C =
90°. Oleh karena itu, a = (c2 b2) 1/2 dan b = (c2 a2) 1/2. Hubungan ini pada semua segitiga
siku-siku disebut teorema Pythagoras.
GAMBAR 1.3 Sama Kaki segi tiga. GAMBAR 1.4 Segitiga sama sisi.
Perpotongan garis lurus (lihat Gambar 1.7). Sudut A = sudut A′, dan sudut B =
sudut B′.
Dua garis sejajar berpotongan dengan garis lurus (lihat Gambar 1.8). Interior
alternative dan sudut luar sama besar: sudut A = sudut A′; sudut B = sudut B′.
Gambar geometris empat sisi (lihat Gambar 1.9). Jumlah semua sudut dalam =
360°; sudut A + sudut B + sudut C + sudut D = 360°.
Garis singgung sebuah titik pada lingkaran berada pada 90°, atau normal,
terhadap garis radial yang ditarik ke titik singgung (lihat Gambar 1.10).
GAMBAR 1.9 Segiempat (empat sisi). GAMBAR 1.10 Garis singgung pada suatu titik pada
lingkaran.
1.4 Bab 1
Titik singgung persekutuan dua lingkaran berpotongan dengan garis yang ditarik antara pusat (lihat
Gambar 1.11).
Sudut A = sudut B = sudut C. Semua sudut keliling tali busur adalah sama (lihat
Gambar 1.14).
GAMBAR 1.14 Sudut keliling tali busur. GAMBAR 1.15 Setengah sudut (B).
GAMBAR 1.17 Sudut keliling 90°. GAMBAR 1.18 Busur dan sudut proporsional.
CATATAN. Sudut dapat diberikan dalam derajat desimal atau radian, secara konsisten.
Keliling sebanding dengan jari-jarinya masing-masing (lihat Gambar 1.19). C:C′ = r:R,
dan luas sebanding dengan kuadrat dari jari-jari masing-masing.
Contoh :
Sebagian besar persamaan yang ditunjukkan dalam buku pegangan ini diselesaikan
dengan cara yang sama, yaitu, dengan mengganti nilai yang diketahui untuk variabel
dalam persamaan dan memecahkan kuantitas yang tidak diketahui menggunakan aturan
dan prosedur aljabar dan trigonometri standar
Jika a, b, dan c real, jika b2 4ac positif, akar-akarnya real dan tidak sama.Jika b2 4ac
adalah nol, akar-akarnya nyata dan sama. Jika b2 4ac negatif, akar-akarnya imajiner dan
tidak setara.
1.8 Bab satu
Logaritma basis 10 disebut sebagai logaritma umum atau logaritma Briggs, setelah
penemu mereka. Logaritma basis e (di mana e = 2,71828) dinyatakan sebagai natural,
hiperbolik, atau Logaritma Naperi, label terakhir yang mengacu pada penemunya. Dasar
alami sistem logaritma didefinisikan oleh deret tak hingga.
MATEMATIKA UNTUK MESIN DAN PEKERJA LOGAM 1.9
Cukup kalikan log natural dengan 0,43429 (modulus) untuk mendapatkan yang
setara catatan umum.
Demikian pula, kalikan log umum dengan 2,30261 untuk mendapatkan persamaan
natural catatan. (Akurasi adalah hingga empat tempat desimal untuk kedua kasus.)
1.2.2 Transposisi Persamaan (Sederhana dan Kompleks)
Transpos Persamaan. Kami dapat memecahkan untuk salah satu yang tidak
diketahui jika semua variabel lainnya diketahui. persamaan yang diberikan adalah
Penyelesaian untuk d:
1.10 BAB SATU
Penyelesaian untuk d :
Persamaan Dasar
Ada enam fungsi trigonometri: sinus, cosinus, tangen, kotangen, secan, dan
kosekans. Hubungan fungsi trigonometri ditunjukkan pada Gambar. 1.20. Fungsi
trigonometri yang ditunjukkan untuk sudut A (segitiga siku-siku) meliputi:
tan A = a/b
(singgung) cot A =
b/a (kotangen)
detik A = c/b
(secan) csc A = c/a
(kosekan)
Untuk sudut B, fungsinya menjadi (lihat Gambar 1.20)
sin B = b/c
(sinus) cos B =
a/c (cosinus)
tan B = b/a
(singgung) cot B =
a/b (kotangen)
detik B = c/a
(secan) csc B = c/b
(kosekan)
Seperti yang dapat dilihat dari sebelumnya, sinus dari suatu sudut tertentu selalu
merupakan sisi berlawanan dengan sudut yang diberikan dibagi dengan sisi miring
segitiga. Kosinus selalu adalah sisi yang berdekatan dengan sudut yang diberikan dibagi
dengan sisi miring, dan garis singgungnya selalu sisi di hadapan sudut yang diberikan
dibagi dengan sisi yang berdekatan dengan sudut. Hubungan ini harus diingat setiap saat
ketika melakukan operasi trigonometri.
Juga:
Ini mencerminkan fakta penting bahwa kosekan, sekan, dan kotangen adalah
kebalikan dari sinus, cosinus, dan tangen. Fakta ini juga harus diingat ketika melakukan
operasi trigonometri.
Tanda dan Batas Fungsi Trigonometri. Bagan koordinat berikut menunjukkan tanda
fungsi di setiap kuadran dan batas numeriknya. Sebagai contoh, sinus dari setiap sudut
antara 0 dan 90° akan selalu positif, dan numeriknya nilai akan berkisar antara 0 dan 1,
sedangkan cosinus dari setiap sudut antara 90 dan 180 ° akan selalu negatif, dan nilai
numeriknya akan berkisar antara 0 dan 1. Setiap kata-kata kasar kuadran berisi 90°;
dengan demikian kuadran keempat berkisar antara 270 dan 360°.
MATEMATIKA UNTUK MESIN DAN PEKERJA LOGAM 1.13
Hukum trigonometri menunjukkan hubungan antara sisi dan sudut segitiga tidak
siku-siku atau segitiga miring dan memungkinkan kita untuk menghitung yang tidak
diketahui bagian dari segitiga ketika nilai-nilai tertentu diketahui. Lihat Gambar 1.21 untuk
ilustrasi hukum trigonometri berikut.
dan
Solusi Segitiga
Dimana
Solusi Praktis untuk Segitiga. Bagian sebelumnya tentang dasar fungsi trigonometri
dan hukum trigonometri, bersama-sama dengan solusi segitiga grafik, akan
memungkinkan Anda untuk menyelesaikan semua segitiga bidang, baik bagian dan
areanya. Kapanpun Anda memecahkan segitiga, pertanyaan selalu muncul, "Apakah
solusinya benar?" Di kantor teknik, segitiga dapat ditarik ke skala menggunakan AutoCad
dan sudutnya dan sisi diukur, tetapi di toko ini tidak dapat dilakukan dengan akurat.
Dalam permesinan, masalah gearing, dan tool engineering, segitiga harus diselesaikan
dengan akurasi tinggi dan solusinya diverifikasi.
Konversi Sudut ke Derajat Desimal. Sudut yang diberikan dalam derajat, menit, dan
detik harus dikonversi ke derajat desimal sebelum menemukan fungsi trigonometri sudut
pada kalkulator genggam modern.
Mengonversi Derajat, Menit, dan Detik ke Derajat Desimal Prosedur. Ubah 26°41′26″ ke
derajat desimal. Derajat = 26.000.000 dalam derajat desimal
Mengonversi Derajat Desimal ke Derajat, Menit, dan Detik Prosedur. Ubah 56,5675
derajat desimal menjadi derajat, menit, dan detik.
Derajat = 56 derajat
Kasus 1. Diberikan a, A, dan B, sudut C dapat ditemukan dari rumus sudut; kemudian
sisi b dan c dapat ditemukan dengan menggunakan hukum sinus dua kali.
Kasus 2. Diketahui a, b, dan A, sudut B dapat ditentukan dengan hukum sinus, sudut C
dari rumus sudut, dan sisi c oleh hukum sinus lagi.
Kasus 3. Diberikan a, b, dan C, sisi c dapat ditemukan dengan hukum cosinus, dan
sudut A dan B dapat ditemukan dengan hukum sinus yang digunakan dua kali; atau
sudut A dari hokum sinus dan sudut B dari rumus sudut.
Kasus 4. Mengingat a, b, dan c, semua sudut dapat ditemukan dengan hukum cosinus;
atau sudut A dapat ditemukan dari hukum cosinus, dan sudut B dan C dari hokum dari
sinus; atau sudut A dari hukum cosinus, sudut B dari hukum sinus, dan sudut C dari
rumus sudut.
CATATAN. Kasus 2 disebut kasus ambigu, di mana mungkin ada satu solusi, dua
solusi, atau tidak ada solusi, diberikan a, b, dan A.
● Jika sudut A < 90° dan a < b sin A, tidak ada solusi.
● Jika sudut A < 90° dan a = b sin A, ada satu solusi—segitiga siku-siku.
● Jika sudut A < 90° dan b > a > b sin A, ada dua solusi—segitiga miring.
● Jika sudut A > 90° dan a > b, ada satu solusi—segitiga miring.
Rumus Setengah Sudut Khusus. Dalam kasus 4 segitiga di mana hanya tiga sisi a,
b, dan c diketahui, himpunan rumus setengah sudut yang ditunjukkan di sini dapat
digunakan untuk mencari sudut
Dimana
CATATAN. Tanda sebelum radikal tergantung pada kuadran di mana x/2 jatuh. Lihat
fungsi dalam grafik empat kuadran dalam teks.
Hubungan Lain-lain
Kemudian
Kita sekarang tahu sisi a, b, dan c dan sudut A, B, dan C. Menyelesaikan Segitiga
Tidak Siku Kanan Menggunakan Hukum Trigonometri. Selesaikan segitiga pada Gambar
1.28. Diketahui: Dua sudut dan satu sisi:
Maka
Solusi untuk segitiga ini telah dihitung sebagai a = 3.250, b = 4.3457, c = 2.0150,
sudut A = 45°, sudut B = 109°, dan sudut C = 26°.
Selesaikan segitiga pada Gambar 1.29. Diketahui: Dua sisi dan satu sudut:
Pertama, cari sudut B dari hukum sinus:
Tinggi x ini juga dapat ditemukan dari fungsi sinus sudut C′, ketika sisi a diketahui,
seperti yang ditunjukkan di sini:
Kedua metode menghasilkan solusi numerik yang sama: 1,051. Juga, solusi
sebelumnya untuk segitiga yang ditunjukkan pada Gambar. 1.29 benar karena akan
menyeimbangkan Mollweide persamaan.
Selesaikan segitiga pada Gambar 1.30. Diketahui: Tiga sisi dan tidak ada
sudut.Menurut bagan solusi segitiga sebelumnya, memecahkan segitiga ini membutuhkan
penggunaan hokum kosinus. Lanjutkan sebagai berikut. Pertama, selesaikan untuk setiap
sudut (kita akan mengambil sudut C terlebih dahulu).
Kedua, menurut hukum cosinus, cari sudut B:
Oleh karena itu, solusi untuk segitiga yang ditunjukkan pada Gambar 1.30 adalah a
= 1,1875, b = 2,4375, c = 1,7500 (diberikan), sudut A = 27,113°, sudut B = 110.695°,
dan sudut C = 42,192° (dihitung). Ini juga dapat diperiksa menggunakan persamaan
Mollweide.
Bukti Persamaan Mollweide. Dari teorema Pythagoras diketahui dan dapat
dibuktikan bahwa setiap segitiga dengan sisi sama dengan 3 dan 4 dan sisi miring dari 5
akan menjadi segitiga siku-siku sempurna. Kelipatan angka 3, 4, dan 5 juga menghasilkan
segitiga siku-siku sempurna, seperti 6, 8, dan 10, dst. (c 2 = a2 + b2 ). Jika Anda
memecahkan 3, 4, dan 5 segitiga proporsional untuk sudut internal dan kemudian
Substitusikan sisi dan sudut ke dalam persamaan Mollweide, persamaan tersebut akan
seimbang, yang menunjukkan bahwa solusi tersebut valid secara matematis.
● Segitiga tidak “tertutup”, atau jumlah sudut dalam tidak sama dengan 180°.
FungsiTrigonometri Alami. Tidak ada tabel trigonometri alami fungsi atau logaritma
dalam buku pegangan ini. Ini karena ketersediaannya yang luas kalkulator digital
elektronik. Anda dapat menemukan nilai numerik ini lebih cepat dan lebih akurat daripada
yang dapat disediakan oleh tabel mana pun. Lihat Sec. 1.4 untuk penggunaan kalkulator
dan teknik teknis yang berlaku untuk praktik permesinan dan pengerjaan logam.
Fungsi trigonometri alami untuk sinus, kosinus, dan tangen dapat dihitung
menggunakan persamaan deret tak hingga berikut. Fungsi kotangen, secan, dan cosecant
hanyalah kebalikan numerik dari tangen, cosinus, dan sinus fungsi,masing-masing.
Menghitung Fungsi Trigonometri Alami. Seri tak terbatas untuk sinus (sudut x harus
diberikan dalam radian).
Garis singgung alami sekarang dapat ditemukan dari deret sinus dan kosinus
menggunakan Persamaan
Kalkulator elektronik digital genggam atau saku modern adalah alat yang sangat
berharga untuk masinis dan pekerja logam. Banyak tabel rumit seperti fungsi metrik
trigono natural, pangkat dan akar, tabel batang sinus, fungsi involute, dan tabel mic
logarit tidak disertakan dalam buku pegangan ini karena ketersediaannya yang siap pakai,
kesederhanaan, kecepatan, dan akurasi tinggi dari perangkat ini.
Kalkulator saku multifungsi yang khas ditunjukkan pada Gambar 1.31. Jenis ini
perangkat akan digunakan untuk mengilustrasikan metode kalkulator yang ditunjukkan
pada Sec. 1.4.2 berikut.
GAMBAR 1.32 Kalkulator yang dapat diprogram dengan kemampuan memecahkan persamaan
yang kompleks dan fitur-fitur canggih lainnya. HP-48G di sebelah kanan dan TI-85 di sebelah
kiri.
Beberapa mesin yang lebih baru juga tidak mengandalkan daya baterai, karena
memiliki a built-in panel konversi surya sensitivitas tinggi yang mengubah cahaya ruangan
menjadi energi listrik untuk menyalakan kalkulator. Meluasnya penggunaan perangkat ini
telah meningkatkan produktivitas industri secara signifikan sejak diperkenalkan pada
tahun 1970-an.
1.4.2 Teknik Kalkulator Modern
Menemukan Fungsi Trigonometri Alami. Fungsi trigonometri alami dari semua sudut
diperoleh dengan mudah, dengan kecepatan dan presisi tinggi.
Kotangen, secan, dan cosecan dicari dengan menggunakan tombol resiprokal (x−1)
pada kalkulator.
Menemukan Logaritma Umum dan Alami Bilangan. Umum, atau Briggs, sistem
logaritma dibangun dengan basis 10 (lihat Bagian 1.2.1).
CONTOH
Oleh karena itu, log10 110.235 ditemukan dengan menekan log dan memasukkan
nomor ke dalam Kalkulator:
Tekan: log
Masukkan: 110.235,
lalu = Jawaban:
2.042319506
Karena nilai logaritmik adalah eksponen yang dinaikkan 10 untuk mendapatkan
nomor, kami akan melakukan perhitungan ini:
102.042319506 = 110.235
BUKTI
Masukkan:
10 Tekan:
yx
Masukkan: 2.042319506
Tekan: =
Logaritma alami, atau hiperbolik, dari suatu bilangan ditemukan dengan cara
yang sama. CONTOH. Temukan logaritma natural, atau hiperbolik, dari 110,235.
Tekan: ln
Masukkan: 110.235,
lalu = Jawaban:
4.702614451
Pangkat dan Akar (Eksponensial). Menemukan pangkat dan akar (eksponensial) dari
angka sederhana di kalkulator saku dan membuat prosedur logaritmik dan tabel logaritma
usang, serta fungsi tabel angka yang ditemukan di buku pegangan usang.
Tekan: x
Masukkan: 3,4575,
lalu = Jawaban:
1.859435398
Prosedur ini hanya memakan waktu beberapa
detik. CONTOH. Temukan (0,0625)4.
Masukkan:
0,0625 Tekan:
xy Masukkan: 4
Tekan: =
Jawaban: 1.525879 × 10−5
Tekan: = Tekan: =
Contoh yang ditampilkan adalah beberapa jenis bracketing yang lebih umum. Tanda
kurung akan menjadi lebih sulit pada persamaan yang panjang dan kompleks. Penjelasan
dari urutan masuk dan prosedur bracketing biasanya ditunjukkan dalam instruksi buku
yang datang dengan kalkulator saku. Kalkulator yang menampilkan persamaan karena
sedang dimasukkan ke dalam kalkulator adalah jenis yang disukai. Kalkulator Casio
ditunjukkan pada Gambar. 1.31 adalah jenis ini. Kalkulator TI dan HP
yang lebih canggih ditunjukkan pada: Gambar 1.32 juga menampilkan seluruh
persamaan yang dimasukkan, sehingga lebih mudah digunakan dan mengurangi
kemungkinan kesalahan entri braket.
1.5 KONVERSI SUDUT—DERAJAT DAN RADIAN
Jadi
56,785° = 0,9911
radian CONTOH. Ubah 2.0978R ke derajat desimal.
57.2957795 × 2.0978 = 120.0591°
Jadi
1 radian = 57.295779513082°
1° = 0,0174532925199 radian
2πR =
360° R =
180 °
1 radian =
180/π°
1°=π/180
radian
e = 2,718281828 (basis logaritma natural)
Bilangan yang ditulis dalam bentuk 1,875 × 10 5 atau 3,452 × 10−6 dinyatakan
dalam notasi pangkat sepuluh. Operasi aritmatika pada bilangan yang sangat besar atau
sangat kecil dengan mudah dan nyaman
diproses menggunakan notasi pangkat sepuluh dan Prosedur. Proses ini secara otomatis
dilakukan oleh kalkulator kalkulasi ilmiah genggam. Jika jawaban yang dihitung lebih
besar atau lebih kecil dari yang dapat ditangani oleh tampilan digital, jawabannya akan
diberikan dalam notasi pangkat sepuluh.
Metode penanganan angka ini selalu digunakan dalam perhitungan ilmiah dan teknik
ketika nilai angka begitu menentukan. Notasi teknik biasanya diberikan dalam kelipatan
3, seperti 1,246 × 103 , 6,983
× 10−6 , dll.
Anda sebenarnya menghitung jumlah tempat di mana titik desimal digeser, baik ke
kanan atau ke kiri. Pergeseran ke kanan menghasilkan eksponen negatif, dan bergeser
ke kiri menghasilkan eksponen positif.
Perkalian, pembagian, eksponen, dan radikal dalam notasi pangkat sepuluh adalah
mudah ditangani, seperti yang ditunjukkan di sini.
Dalam contoh sebelumnya, Anda harus menggunakan aturan aljabar standar untuk
penjumlahan, pengurangan, perkalian, dan pembagian pangkat atau pangkat bilangan.
Dengan demikian,
Biasanya, 100 persen dari setiap kuantitas diwakili oleh angka 1.00, yang berarti
jumlah total. Jadi, jika kita mengambil 50 persen dari kuantitas apa pun, atau kelipatan
apa pun dari 100 persen, itu harus dinyatakan sebagai desimal:
1% = 0,01
10% = 0,10
65,5% = 0,655
145% = 1,45
Akibatnya, kami membagi angka persentase, seperti 65,5 persen, dengan 100 untuk
mendapatkan pada ekuivalen desimal yang diperlukan untuk perhitungan.
Mari kita bandingkan dua bilangan arbitrer, 33 dan 52, sebagai ilustrasi:
Jadi, angka 52 adalah 57,58 persen lebih besar dari angka 33. Dapat juga dikatakan
bahwa 33 meningkat 57,58 persen sama dengan 52; yaitu, 0,5758 × 33 + 33 = 52.
Sekarang,
Jadi, bilangan 52 dikurangi 36,54 persen itu sendiri adalah 33. Kita juga dapat
mengatakan bahwa 33 adalah 36,54 persen lebih kecil dari 52 yaitu 0,3654 × 52 = 19
dan 52 19 = 33.Bilangan 33 adalah
berapa persen dari 52? Artinya, 33/52 = 0,6346. Jadi, 33 adalah 63,46 persen dari 52.
1.36 BAB SATU
Contoh Perhitungan Persentase Praktis. Aspring dikompresi menjadi 417 lbf dan
kemudian didekompresi menjadi 400 lbf, atau beban. Persentase penurunan tekanan
adalah (417-400)/417 = 0,0408, atau 4,08 persen. Tekanan, atau beban, kemudian
dinaikkan menjadi 515 lbf. persentase kenaikan lebih dari 400 lbf adalah (515 400)/515
= 0,2875, atau 28,75 persen.
Ada empat sistem temperatur yang umum digunakan dalam perhitungan teknik dan
desain: Fahrenheit (°F), Celcius (sebelumnya Celcius; °C), Kelvin (K), dan Rankine (°R).
Persamaan relasional yang tepat ini adalah semua yang Anda butuhkan untuk
mengkonversi dari kedua sistem.
Masukkan suhu yang diketahui, dan selesaikan persamaan untuk nilai yang tidak
diketahui. CONTOH. Anda ingin mengonversi 66°C ke Fahrenheit.
Cara ini jauh lebih mudah daripada mencoba mengingat dua persamaan yang ekuivalen,
yaitu:
Dua sistem lainnya, Kelvin dan Rankine, dikonversi seperti yang dijelaskan di
sini Skala Kelvin dan Celcius dihubungkan oleh
K = 273,18 + °C
°R = 459,69 + °F
1.10 SETARA BERAT KECIL: ADAT AS (Biji-bijian DAN OUNS) VERSUS METRIK
(GRAM)
CONTOH. Untuk mendapatkan berat dalam gram, kalikan berat dalam biji-bijian dengan
0,0648. Atau, bagi berat dalam butir dengan 15,43.
CONTOH. Untuk mendapatkan berat dalam biji-bijian, kalikan berat dalam gram dengan
15,43. Atau, bagi berat dalam gram dengan 0,0648.
Kuis F.13
5. Hitunglah luas daerah yang dilingkupi antara sumbu x dan kurva y= e x antara x =1 dan x
=2, berikan jawaban anda dalam bentuk e.
6. Hitunglah luas daerah yang dilingkupi antara kurva y=e x dan garis lurus y=1 x antara x=1
dan x=2, berikan jawabanmu untuk 3 dp.
Integrasi 1
Integrasi adalah proses kebalikan dari diferensiasi. Ketika kita membedakan kita mulai 1
dengan ekspresi dan lanjutkan untuk menemukan turunannya. Ketika kita berintegrasi,
kita mulai dengan turunannya dan kemudian temukan ekspresi dari mana turunannya
diturunkan.
Misalnya, d/dx (x4) =4x3. Jadi, integral dari 4x3 terhadap x kita tahu menjadi x4
Ini tertulis: ꭍ 4x3 dx = x4
Simbol f (x) dx menyatakan integral dari f (x) terhadap variabel x; symbol ꭍ
dikembangkan dari huruf kapital S yang digunakan pada abad ke-17 ketika ide-ide
kalkulus pertama kali dibuat.
Ekspresi f( x) yang akan diintegralkan disebut integran dan dx diferensial berguna
untuk membantu dalam evaluasi tertentu integral, seperti yang akan kita lihat di
Program selanjutnya.
Konstanta integrasi
Dalam tiga contoh ini kita kebetulan mengetahui ekspresi dari mana turunan 4x3
diturunkan. Tetapi setiap suku konstan dalam ekspresi aslinya menjadi nol dalam turunan
dan semua jejaknya hilang. Jadi jika kita tidak tahu sejarahnya turunan 4x3 kami tidak
memiliki bukti nilai suku konstan, baik itu 0, +2, -5 atau nilai lainnya. Oleh karena itu,
kami mengakui keberadaan istilah konstan seperti itu dari beberapa nilai dengan
menambahkan simbol C ke hasil integrasi:
C disebut konstanta integrasi dan harus selalu disertakan. Integral semacam itu disebut
integral tak tentu karena biasanya kita tidak mengetahui nilai C. Namun, dalam keadaan
tertentu, nilai C dapat ditemukan jika informasi lebih lanjut tentang integral tersedia.
Misalnya, untuk menentukan I = ꭍ 4x3 dx, mengingatkan bahwa I = 3 dimana x = 2.
Seperti sebelumnya:
Tapi I = 3 ketika x2 sehingga 3 = 24 +C =16 +C : C=- 13. Jadi, dalam hal ini I = x4-13.
Integral standar 2
standar integral.
Rangkuman ulasan 3
1 Integrasi adalah proses kebalikan dari diferensiasi. Diberikan turunan kita harus
Tinjau Latihan 1
Jadi, bagaimana dengan yang satu ini? Jika I=ꭍ(8x3 -3x2+ 4x5)dx, tentukan
nilainya dari I ketika x=3, mengingat bahwa pada x= 2, I=26.
Pertama kita harus menentukan fungsi untuk I, sehingga melakukan integrasi, kita
dapatkan I ...........
7
Sekarang kita dapat menghitung nilai C karena kita diberitahu bahwa ketika x 2, I 26. Jadi,
menyatakan fungsi untuk I dalam bentuk bersarang, kita memiliki
I = …..
Fungsi dari fungsi linier dari x 12
Seringkali perlu untuk mengintegrasikan salah satu dari ekspresi yang ditampilkan dalam
daftar kami integral standar ketika variabel x diganti dengan ekspresi linier di x. Itu
adalah, berbentuk ax+b. Misalnya, y=ꭍ(3x+2)4 dx memiliki struktur yang sama dengan
y=ꭍx4 dx kecuali bahwa x digantikan oleh ekspresi linier 3x +2. Mari kita
masukkan u=3x+2 maka:
ꭍ(3x+2)4 dx menjadi ꭍu4 dx
Kita sekarang harus mengubah variabel x dalam dx sebelum kita dapat melanjutkan.
Sekarang, u 3x 2
Lihat saja integral standar dasar dengan bentuk yang sama, ganti x dalam hasil dengan
ekspresi linier dan akhirnya dibagi dengan koefisien x dalam ekspresi linier dan ingat
konstanta integrasi.
Pada titik ini mari kita berhenti sejenak dan meringkas fakta-fakta utama yang
berhubungan dengan integrasi ekspresi polinomial dan 'fungsi fungsi linier dari x'.
Rangkuman ulasan
1 Integrasikan suku demi suku dan gabungkan konstanta integrasi individual ke dalam satu simbol.
2 Integrasi 'fungsi fungsi linear dari x' Ganti x dalam integral standar yang sesuai dengan
ekspresi linier dan membagi hasilnya dengan koefisien x dalam ekspresi linier.
Tinjau Latihan
Anda akan mengingat Aturan Pecahan Parsial yang kami daftarkan sebelumnya dan
digunakan di Program F.8, jadi mari kita terapkan dalam contoh ini. Kami hanya akan
berurusan dengan yang sederhana penyebut linier pada tahap ini.
untuk membagi 17
18
20 f=*+
4.ln(3x-1)
+ 3.ln(z + 2) -F :
[4x’ + 2hx + 5
) 2x2 + 9x + 4
Rangkuman ulasan
Pecahan aljabar sering dapat dinyatakan dalam pecahan parsial. Ini membuat
integrasi pecahan aljabar seperti itu mungkin, integrasi setiap parsial pecahan.
Tinjau Latihan 24
Perhatikan luas A dari gambar dibatasi oleh kurva y=f( x), sumbu x dan dua garis vertikal
melalui x=a dan x=b (di mana b > a).
Untuk mengevaluasi area A Anda perlu pertimbangkan luas total antara yang sama kurva
dan sumbu x dari kiri ke atas beberapa titik P sewenang-wenang pada kurva dengan
koordinat (x, y) yang akan kita nyatakan oleh Ax.
Luas Ax adalah luas yang dibatasi oleh garis di bawah busur PQ di mana Q memiliki
koordinat (x+∂x, ∂y+y). Jika strip didekati dengan persegi panjang dengan tinggi y dan
lebar x maka ∂Ax
∂y.x. Ini berarti bahwa:
Kesalahan dalam pendekatan ini diberikan oleh luas PQR pada gambar di sebelah
kanan, di mana strip berada diperbesar.
Jika lebar strip dikurangi maka kesalahannya adalah sesuai dikurangi. Juga, jika x ! 0 lalu
Kapak
! 0 dan
Akibatnya, karena integrasi adalah proses kebalikan dari diferensiasi, itu terlihat itu:
Luas total antara kurva dan sumbu x hingga titik P diberikan oleh tak tentu integral.
Karena b > a, selisih kedua luas ini Ab Aa memberikan luas yang dibutuhkan A. Itu
adalah:
Bilangan a dan b disebut limit integral dimana limit kanannya adalah di atas tanda integral
dan limit kiri di bawah. Seperti integral dengan batas disebut integral tertentu. Perhatikan
bahwa dalam proses pengurangan ketika integral dievaluasi, konstanta integrasi
menghilang meninggalkan nilai numerik daerah tersebut.
Contoh 1
Untuk menentukan luas daerah yang dibatasi oleh kurva y=3x 2+6x+8, sumbu x dan
ordinat x=1 dan x=3.
Perhatikan bahwa kami menyertakan ekspresi dalam tanda kurung siku dengan batas
terlampir. Sekarang hitung nilai pada batas atas dan bawah dan kurangi yang kedua dari
yang pertama memberikan A ........
Contoh 2
Tentukan luas daerah yang dibatasi oleh kurva y 3x 2+14x+15, sumbu x dan ordinat di
x=1 dan x=2.
Contoh 3
Hitung luas daerah yang dibatasi oleh kurva y 6x 2+24x+10, sumbu x dan koordinat x=0
dan x=4.
Dan sekarang:
Contoh 4
Tentukan luas daerah di bawah kurva y=e x antara x=2 dan x=3. Lakukan ini dengan
metode yang sama. Kekuatan e tersedia dari sebagian besar kalkulator atau dari tabel.
A = ………….
Pada titik ini mari kita berhenti sejenak dan meringkas fakta-fakta utama yang
berhubungan dengan area di bawah ini kurva
Rangkuman ulasan 30
Area A, dibatasi oleh kurva y=f (x), the sumbu x dan ordinat x a dan x b, adalah diberikan
oleh:
1 Tentukan luas yang dibatasi oleh y=5+4x-x2, sumbu x dan ordinat x=1
dan x=4. 2 Hitung luas di bawah kurva y=2x 2+4x+3, antara x=2 dan
x=5.
3 Tentukan luas yang dibatasi oleh y=x2-2x+3, sumbu x dan
ordinat x=1 dan x=3.
Perhatikan bahwa dalam semua integral tertentu ini, kita menghilangkan konstanta
integrasi karena kita tahu itu akan hilang pada tahap pengurangan.
Kami telah mengidentifikasi nilai integral tertentu sebagai area di bawah kurva. Namun,
beberapa integral tertentu memiliki nilai negatif, jadi bagaimana kita menghubungkannya
dengan luas karena semua luas adalah besaran positif? Sebelum kita dapat membuat
tautan ini, kita harus pertimbangkan penentuan area dengan cara yang sedikit berbeda.
Kita telah melihat bahwa area A di bawah kurva y=f (x) antara x=a dan
x=b adalah diberikan oleh integral tertentu:
Jika kita membagi seluruh gambar antara x=a dan x=b menjadi beberapa strip seperti
itu, luas total adalah kira-kira jumlah luas semua persegi panjang y: x. yaitu A jumlah
semua persegi panjang y:
x antara x a dan x b. Ini bisa ditulis di mana simbol mewakili 'jumlah semua l
suku bentuk ...'
Jika kita membuat strip lebih sempit, akan ada lebih dari mereka untuk menutupi seluruh
gambar, tetapi kesalahan total dalam aproksimasi berkurang.
Jika kita melanjutkan prosesnya, kita sampai pada suatu jumlah tak terbatas dari persegi
kecil yang sempit, masing-masing dengan area yang terlalu kecil untuk ada sendiri.
34 Untuk mengilustrasikannya, perhatikan luas A di bawah garis lurus y=x, di atas sumbu
x dan antara nilai x=2 dan x=4 seperti yang ditunjukkan pada gambar di bawah ini
Luas segitiga adalah 1/2 tinggi dasar dan luas A sama dengan selisih luas dari dua
segitiga OQQ’ dan OPP’ yang seperti itu:
A=1/2x4x4-1/2x2x2
=8-2=6 unit2
Nilai ini sekarang akan dikonfirmasi dengan membagi area menjadi strip yang sama,
menjumlahkan daerah mereka dan kemudian mengambil batas sebagai lebar strip
pergi ke nol.
Tapi, untuk semua strip seperti itu di seluruh gambar, y negatif dan x bernilai positif.
Oleh karena itu, dalam kasus ini, y∂x negatif dan jumlah semua besaran tersebut memberikan total negatif, bahkan ketika
Jadi ꭍ33 y dx memiliki nilai negatif, yaitu dikurangi nilai daerah tertutup.
Masalah muncul ketika bagian dari area yang akan dihitung terletak di atas sumbu x dan bagian di bawah. Dalam hal ini, integrasi dari
x=a ke x=b memberikan jumlah aljabar dari dua bagian.
Oleh karena itu, selalu bijaksana untuk membuat sketsa gambaran masalah sebelum melakukan integrasi dan, jika perlu, untuk
menghitung bagian positif dan negative secara terpisah dan menambahkan nilai numerik dari setiap bagian untuk mendapatkan area
fisik antara batas yang ditentukan.
Sebagai contoh, kita akan menentukan luas fisis bangun yang dibatasi oleh kurva y=x2-4, sumbu x dan koordinat pada x=1 dan
x=4.
Kurva y=x2-4 adalah, tentu saja, parabola y=x2 menurunkan 4 unit di sumbu y. Ini melintasi sumbu x ketika y=0, yaitu x 2-
4=0, x2=4 ; x=±2
Gambar dari masalah kita terbentang dari x=1 sampai x=4, yang meliputi luas di bawah sumbu x antara x=1 dan x=2 dan area di atas
sumbu x antara x=2 dan x=4. Oleh karena itu, kami menghitung luas fisis yang dilingkupi dua bagian dan tambahkan hasilnya.
Seandainya kita terintegrasi langsung dalam satu perhitungan, kita seharusnya memperoleh:
Meskipun memberikan nilai integral tertentu yang benar, tidak memberikan nilai yang benar dari total area tertutup.
Luas antara kurva dan garis berpotongan 37
Mencari luas daerah yang dibatasi oleh kurva y=25-x2 dan garis lurus y=x+13.
Pertama kita harus mengembangkan gambar. Kita ketahuilah bahwa y=x2 adalah parabola biasa:
Y=25-x2 adalah parabola terbalik mengangkat 25 unit pada skala y. Juga ketika y=0,
Misalkan P1(x,y1) menjadi titik pada y1-25-x2 dan P2(x; y2) titik yang sesuai pada y2=x+13. Maka luas strip
luas gambar
Rangkuman ulasan 40
1 Integral tentu
Integral dengan limit (misalnya x=a dan x=b) disebut integral tertentu. konstanta integrasi C dalam kasus seperti itu akan selalu
hilang pada pengurangan panggung, sejak
Tinjau Latihan 41
3 Tentukan luas daerah yang dilingkupi antara kurva y=x 3 dan garis lurus y=x.
2 (a) Grafik y=x3+2x2+x+1 antara x=1 dan x=2 terletak seluruhnya di atas sumbu x
sehingga luas yang dilingkupi antara kurva, sumbu x dan antara x=1 dan x=2 diberikan oleh:
3 Kurva y=x3 dan garis y=x berpotongan ketika x3-x, yaitu ketika x3-x=0.
Memfaktorkan kita melihat bahwa ini berarti x(x2-1)=0 yang dipenuhi jika x=0, x=1 dan x=1.
Dari gambar tersebut kita dapat melihat bahwa luas yang dilingkupi antara kurva y=x 3 dan garis lurus y x ada dua bagian, satu di
atas sumbu x dan yang lainnya di bawah. Dari gambar tersebut dengan mudah dapat dilihat bahwa kedua bagian tersebut sama,
jadi kita hanya perlu mencari cari luas antara x=0 dan x=1 lalu gandakan luas totalnya diselubungi.
Luas daerah antara x=0 dan x=1 sama dengan luas di bawah garis y=x dikurangi luas di bawah kurva y=x3. Itu adalah:
Luas total yang dilingkupi kemudian dua kali ini, yaitu ½ unit2.
:. :, Test exercise F.13
45 ,. i
(c) 3x A 2wc *A
2 (ai O‹= m u‹ -st - s - ‹)a.
_ , _
(c) r=2O-Ir-
RINGKASAN WOLFRAM
PART 1
Menjalankan Mathematica
Untuk mengetahui cara menginstal dan menjalankan Mathematica, Anda harus
membaca dokumentasi yang disertakan dengan salinan matematika. Detailnya berbeda
dari satu sistem komputer ke sistem komputer lainnya, dan dipengaruhi oleh berbagai
jenis penyesuaian yang dapat dilakukan pada Mathematica. Namun demikian, bagian
ini menguraikan dua kasus umum.
Perhatikan bahwa meskipun detail menjalankan Mathematica berbeda dari satu
sistem komputer ke sistem komputer lainnya, struktur dari perhitungan Mathematica
adalah sama dalam semua kasus. Anda memasukkan input, lalu Mathematica
memprosesnya, dan mengembalikan hasilnya.
1.0 Antar muka
Dalam antarmuka "notebook", Anda berinteraksi dengan Mathematica dengan
membuat dokumen interaktif.jika Anda menggunakan komputer Anda melalui
antarmuka grafis murni, Anda biasanya akan mengklik dua kali ikon Mathematica
untuk memulai matematika. Jika Anda menggunakan komputer Anda melalui sistem
operasi berbasis teks, Anda biasanya akan mengetikkan perintah mathematica untuk
memulai Mathematica.
Ketika Mathematica dijalankan, biasanya memberikan Anda buku catatan
kosong. Anda memasukkan input Mathematica ke dalam notebook, lalu ketik Shift-
Enter untuk membuat Mathematica memproses input Anda. (Untuk mengetik Shift-
Enter, tahan tombol Shift, lalu tekan Enter.) Anda dapat menggunakan fitur pengeditan
standar dari antarmuka grafis Anda untuk menyiapkan input Anda, yang mungkin akan
terjadi aktif untuk beberapa baris. Shift-Enter memberi tahu Mathematica bahwa Anda
telah menyelesaikan input Anda. Jika keyboard Anda memiliki angka keypad, Anda
dapat menggunakan tombol Enter sebagai ganti Shift-Enter.
Setelah Anda mengirim input Mathematica dari notebook Anda, Mathematica akan
melabeli input Anda dengan In[n]:=. Ini memberi label pada keluaran yang sesuai
Keluar[n]=.
Anda mengetik 2 + 2, lalu akhiri input Anda dengan Shift-Enter. Mathematica
memproses input, lalu menambahkan label input In[1]:=, dan memberikan keluaran.
Bagian 0.5.1 membahas beberapa detail penting tentang mereproduksi dialog pada sistem
komputer Anda. Bagian 1.3 memberikan informasi lebih lanjut tentang notebook Mathematica.
Anda harus menyadari bahwa notebook adalah bagian dari "ujung depan" untuk
Mathematica. Kernel Mathematica yang benar-benar melakukan komputasi dapat
dijalankan pada komputer yang sama dengan front end, atau pada komputer lain yang
terhubung melalui beberapa jenis jaringan atau jalur. Dalam kebanyakan kasus, kernel
bahkan tidak dimulai sampai Anda benar-benar melakukan perhitungan
denganMatematika.
Untuk keluar dari Mathematica, Anda biasanya memilih item menu Keluar di antarmuka
notebook
Dalam bahasa komputer tradisional seperti C, Fortran, Java atau Perl, input yang
Anda berikan harus selalu terdiri dari string karakter biasa yang bisa diketik langsung
di keyboard. Tetapi bahasa Mathematica juga memungkinkan Anda memberi input
yang berisi karakter khusus, superskrip, pecahan bawaan, dan sebagainya.
Bahasa ini menggabungkan banyak fitur notasi matematika tradisional. Tetapi
Anda harus menyadari bahwa tujuan dari bahasa adalah untuk menyediakan cara yang
tepat dan konsisten untuk menentukan perhitungan. Dan sebagai hasilnya, itu tidak
mengikuti semua detail yang agak serampangan dari notasi matematika tradisional.
Namun demikian, seperti yang dibahas dalam Bagian 1.10.9, Mathematica selalu
memungkinkan untuk menghasilkan keluaran yang meniru setiap aspek notasi
matematika tradisional. Dan seperti yang dibahas dalam Bagian 1.10.9, Mathemat ica
juga dapat mengimpor teks yang menggunakan notasi tersebut, dan sampai batas
tertentu menerjemahkannya ke dalam bahasanya sendiri yang lebih tepat.
Membangun Perhitungan
Menggunakan Hasil Sebelumnya
Dalam melakukan perhitungan, Anda akan sering perlu menggunakan hasil
sebelumnya yang sudah Anda dapatkan. Di Mathematica, % selalu berdiri untuk hasil
terakhir Anda.
Mendefinisikan Variabel
Saat Anda melakukan perhitungan panjang, seringkali lebih mudah untuk
memberi nama pada hasil antara Anda. Sama seperti dalam standar matematika, atau
dalam bahasa komputer lainnya, Anda dapat melakukannya dengan memperkenalkan
variabel bernama.
Sangat penting untuk menyadari bahwa nilai yang Anda tetapkan ke variabel
bersifat permanen. Setelah Anda menetapkan nilai untuk a variabel tertentu, nilainya
akan disimpan sampai Anda menghapusnya secara eksplisit. Nilainya tentu saja akan
hilang jika Anda mulai sesi Mathematica yang sama sekali baru.
Melupakan definisi yang Anda buat sebelumnya adalah satu-satunya penyebab
kesalahan paling umum saat menggunakan Mathematica. Jika
Anda menetapkan x = 5, Mathematica mengasumsikan bahwa Anda selalu ingin
x memiliki nilai 5, sampai atau kecuali Anda secara eksplisit mengatakannya
sebaliknya. Untuk menghindari kesalahan, Anda harus menghapus nilai yang telah
Anda tetapkan segera setelah Anda selesai menggunakannya.
Variabel yang Anda definisikan dapat memiliki hampir semua nama. Tidak ada
batasan panjang nama mereka. Satu kendala, namun, apakah nama variabel tidak
pernah bisa dimulai dengan angka. Misalnya, x2 dapat berupa variabel, tetapi 2x
berarti 2*x.
Mathematica menggunakan huruf besar dan huruf kecil. Ada konvensi bahwa
objek
Mathematica bawaan selalu memiliki nama yang dimulai dengan huruf besar (kapital). Untuk
menghindari kebingungan, Anda harus selalu memilih nama untuk Anda variabel sendiri yang
dimulai dengan huruf kecil.
Membuat Daftar Objek
Dalam melakukan perhitungan, seringkali lebih mudah untuk mengumpulkan
beberapa objek, dan memperlakukannya sebagai satu kesatuan. Daftar memberi Anda
cara untuk membuat koleksi objek di Mathematica. Seperti yang akan Anda lihat nanti,
daftar sangat penting dan struktur umum di Mathematica.
Daftar seperti {3, 5, 1} adalah kumpulan dari tiga objek. Tetapi dalam banyak
hal, Anda dapat memperlakukan seluruh daftar sebagai satu kesatuan obyek. Anda
dapat, misalnya, melakukan aritmatika pada seluruh daftar sekaligus, atau menetapkan
seluruh daftar menjadi nilai a variabel.
Memanipulasi Elemen Daftar
Banyak dari operasi manipulasi daftar yang paling kuat di Mathematica
memperlakukan seluruh daftar sebagai objek tunggal. Kadang-kadang, namun, Anda
perlu memilih atau mengatur elemen individual dalam daftar.
Anda dapat merujuk ke elemen daftar Mathematica dengan memberikan "indeks" -nya.
Elemen diberi nomor secara berurutan,
mulai pada 1.
Empat Jenis Bracketing di Mathematica
Selama beberapa bagian terakhir, kami telah memperkenalkan masing-masing dari
empat jenis bracketing yang digunakan dalam Mathematica.
Setiap jenis bracketing memiliki arti yang sangat berbeda. Penting bagi Anda untuk
mengingat semuanya.
Ketika ekspresi yang Anda ketik rumit, sering kali merupakan ide yang baik untuk
menempatkan ruang ekstra di dalam setiap rangkaian tanda kurung.
Ini membuat Anda lebih mudah melihat pasangan tanda kurung yang cocok. v[[ 8a, b<
]], misalnya, lebih mudah untuk mengenali dari v[[8a, b<]].
Urutan Operasi
Dalam melakukan perhitungan dengan Mathematica, Anda biasanya melalui urutan
langkahlangkah. Jika Anda mau, Anda bisa melakukannya masing-masing melangkah di jalur
terpisah.
Namun, seringkali Anda akan merasa nyaman untuk menempatkan beberapa langkah
pada baris yang sama. Anda dapat melakukan ini hanya dengan memisahkan bagian
input yang ingin Anda berikan dengan titik koma.
Dalam beberapa kasus, Anda mungkin tidak perlu menggunakan ujung depan
notebook, dan Anda mungkin ingin berinteraksi lebih langsung dengan kernel
Mathematica. Anda dapat melakukan ini dengan menggunakan antarmuka berbasis
teks, di mana teks yang Anda ketik di keyboard langsung ke kernel.
Perbedaan antara Sistem Komputer
Ada banyak perbedaan rinci antara berbagai jenis sistem komputer. Tapi salah
satu fitur penting dari Mathematica memungkinkan Anda untuk bekerja dan membuat
materi tanpa khawatir tentang perbedaan tersebut.
Untuk menyesuaikan sebaik mungkin dengan sistem komputer tertentu,
antarmuka pengguna untuk Mathematica pada yang berbeda sistem pasti setidaknya
sedikit berbeda. Tetapi poin pentingnya adalah bahwa di luar perbedaan yang dangkal,
Mathematica diatur untuk bekerja dengan cara yang persis sama pada setiap jenis
sistem komputer.
• Bahasa yang digunakan oleh kernel Mathematica
• Struktur buku catatan Mathematica
• Protokol komunikasi MathLink
• Elemen Mathematica yang persis sama pada semua sistem komputer.
• Perintah yang Anda berikan ke kernel Mathematica, misalnya, benar-benar identik di
setiap computer sistem. Ini berarti bahwa ketika Anda menulis program menggunakan
perintah ini, Anda dapat langsung mengambil program dan jalankan di komputer mana
pun yang mendukung Mathematica.
Struktur notebook Mathematica juga sama pada semua sistem komputer. Dan
sebagai hasilnya, jika Anda membuat notebook di satu sistem komputer, Anda dapat
langsung mengambilnya dan menggunakannya di sistem lain.
• Tampilan visual jendela, font, dll.
• Mekanisme untuk mengimpor dan mengekspor materi dari notebook
• Pintasan keyboard untuk perintah menu
• Elemen yang dapat berbeda antara satu sistem komputer dengan sistem komputer lainnya.
• Meskipun struktur yang mendasari notebook Mathematica selalu sama, sering kali ada
perbedaan yang dangkal dalam cara notebook terlihat pada sistem komputer yang
berbeda, dan dalam beberapa mekanisme yang disediakan untuk berinteraksi dengan
mereka.
Tujuannya dalam setiap kasus adalah untuk membuat buku catatan bekerja dengan cara
yang akrab bagi orang-orang yang terbiasa jenis tertentu dari sistem komputer.
Selain itu, dengan menyesuaikan detail notebook ke setiap sistem komputer
tertentu, pertukaran menjadi lebih mudah materi antara notebook dan program lain
yang berjalan di sistem komputer itu.
Notebook Mathematica yang sama pada tiga sistem komputer yang berbeda. Struktur
dasarnya persis sama, tetapi beberapa rincian presentasinya berbeda.
Topik Khusus: Menggunakan Antarmuka Berbasis Teks
Dengan antarmuka berbasis teks, Anda berinteraksi dengan Mathematica hanya dengan
mengetik baris input yang berurutan, dan kembali baris output berturut-turut di layar Anda.
Pada setiap tahap, Mathematica mencetak prompt dalam bentuk In[n]:= untuk
memberi tahu Anda bahwa ia siap menerima input. Kapan Anda telah memasukkan
input Anda, Mathematica memprosesnya, dan kemudian menampilkan hasilnya
dengan label formulir Out[n]=.
Jika input Anda pendek, maka Anda dapat memberikannya pada satu baris,
mengakhiri baris dengan menekan Enter atau Return. Jika masukan Anda adalah lagi,
Anda dapat memberikannya pada beberapa baris. Mathematica akan secara otomatis
melanjutkan membaca baris-baris yang berurutan sampai memiliki menerima ekspresi
lengkap. Jadi, misalnya, jika Anda mengetik tanda kurung buka pada satu baris,
Mathematica akan lanjutkan membaca baris input yang berurutan sampai melihat
tanda kurung penutup yang sesuai. Perhatikan bahwa jika Anda memasukkan baris
yang benar-benar kosong, Mathematica akan membuang baris yang telah Anda ketik
sejauh ini, dan mengeluarkan prompt input baru.
Melakukan Perhitungan di Notebook
Sebuah notebook Mathematica khas yang berisi teks, grafik dan ekspresi
Mathematica.
Tanda kurung di sebelah kanan
menunjukkan luas masing-
masing sel.
Buku Catatan sebagai Dokumen
Notebook Mathematica memungkinkan Anda membuat dokumen yang dapat
dilihat secara interaktif di layar atau dicetak di atas kertas.Khususnya di buku catatan
yang lebih besar, biasanya ada bab, bagian, dan seterusnya, masing-masing diwakili
oleh kelompok sel. Luasnya kelompokkelompok ini ditunjukkan oleh tanda kurung di
sebelah kanan.
Sekelompok sel dapat terbuka atau tertutup. Saat terbuka, Anda dapat melihat
semua sel di dalamnya secara eksplisit. Tapi ketika itu ditutup, Anda hanya melihat
sel pertama atau judul dalam grup. Notebook besar sering didistribusikan dengan
banyak kelompok sel tertutup, sehingga ketika Anda pertama kali melihat notebook,
Anda hanya melihat garis besar isinya. Anda kemudian dapat membuka bagian yang
Anda minati dengan mengklik dua kali yang sesuai kurung. Elemen Aktif di Notebook
Salah satu fitur yang paling kuat dari notebook Mathematica adalah bahwa
tindakan mereka dapat diprogram. Jadi, untuk misalnya, Anda dapat mengatur tombol
di notebook Mathematica yang menyebabkan berbagai operasi dilakukan setiap kali
Anda mengkliknya.
Paket Mathematica
Salah satu fitur yang paling penting dari Mathematica adalah bahwa itu adalah
sistem yang dapat diperluas. Ada sejumlah matematika dan fungsionalitas lain yang
dibangun ke dalam Mathematica. Tetapi dengan menggunakan bahasa Mathematica,
itu adalah selalu memungkinkan untuk menambahkan lebih banyak fungsi.
Untuk banyak jenis perhitungan, apa yang dibangun ke dalam versi standar
Mathematica akan cukup memadai. Namun, jika Anda bekerja di area khusus tertentu,
Anda mungkin mendapati bahwa Anda sering kali perlu menggunakan fungsi tertentu
yang tidak dibangun ke dalam Mathematica.
Dalam kasus seperti itu, Anda mungkin dapat menemukan paket Mathematica yang
berisi fungsi yang Anda butuhkan. Matematika paket adalah file yang ditulis dalam bahasa
Mathematica.
Mereka terdiri dari kumpulan definisi Mathematica yang
"mengajarkan" Mathematica tentang area aplikasi
tertentu.
paket dibaca dalam paket
Mathematica Membaca dalam paket
Mathematica.
Jika Anda ingin menggunakan fungsi dari paket tertentu, Anda harus terlebih
dahulu membaca paket tersebut ke Mathematica. Rinciannya tentang bagaimana
melakukan ini dibahas dalam Bagian 1.11. Ada berbagai konvensi yang mengatur
nama yang harus Anda gunakan untuk merujuk ke paket.
Peringatan dan Pesan
Mathematica biasanya melakukan pekerjaannya secara diam-diam, memberikan output
hanya ketika selesai melakukan perhitungan Anda diminta.
Namun, jika Mathematica melakukan sesuatu yang sebenarnya tidak Anda
inginkan, Mathematica biasanya akan mencetak pesan untuk memperingatkan Anda.
Fungsi akar kuadrat seharusnya hanya memiliki satu argumen. Mathematica mencetak
pesan untuk memperingatkan Anda bahwa Anda telah memberikan dua argumen di
sini.
1.3.12 Mengganggu Perhitungan
Mungkin akan ada saatnya Anda ingin menghentikan Mathematica di tengah
perhitungan.
Mungkin kamu sadar bahwa Anda meminta Mathematica untuk melakukan hal yang
salah. Atau mungkin
perhitungannya hanya memakan waktu lama, dan Anda
mau untuk mencari tahu apa yang sedang terjadi.
Cara Anda menginterupsi perhitungan Mathematica tergantung pada jenis antarmuka
yang Anda gunakan.
• Antarmuka notebook Alt-Comma atau Command-Comma
• Antarmuka berbasis teks Control-C
Kunci khas untuk menginterupsi perhitungan di Mathematica.
Pada beberapa sistem komputer, Mathematica mungkin memerlukan beberapa
waktu untuk merespons interupsi Anda. Ketika Mathematica melakukannya
menanggapi, biasanya akan memberi Anda menu hal-hal yang mungkin untuk
dilakukan.
• lanjutkan melanjutkan perhitungan
• tunjukkan tunjukkan apa yang dilakukan Mathematica
• periksa periksa keadaan perhitungan Anda saat ini
• batalkan batalkan perhitungan khusus ini
• keluar keluar dari Mathematica sepenuhnya
Perhitungan Aljabar
Komputasi Simbolik
Salah satu fitur penting dari Mathematica adalah dapat melakukan perhitungan
simbolik, serta numerik. Ini berarti yang dapat menangani rumus aljabar serta angka.
Diferensiasi
Integrasi
Seri Daya
Operasi matematika yang telah kita bahas sejauh ini adalah eksak. Dengan input yang
tepat, hasilnya adalah formula yang tepat.
Namun, dalam banyak situasi, Anda tidak memerlukan hasil yang pasti.
Mungkin cukup memadai, misalnya, untuk menemukan rumus perkiraan yang valid,
katakanlah, bila kuantitas x kecil.
Deret pangkat adalah rumus perkiraan yang memainkan banyak peran yang sama
sehubungan dengan ekspresi aljabar sebagai angka perkiraan bermain sehubungan dengan
ekspresi numerik. Mathematica memungkinkan Anda melakukan operasi dengan daya seri,
dalam semua kasus mempertahankan urutan yang sesuai atau "tingkat presisi" untuk rangkaian
daya yang dihasilkan.
Batas
Transformasi Integral
Persamaan Pengulangan
Daftar
Mengumpulkan Objek Bersama
Kami pertama kali menemukan daftar di Bagian 1.2.3 sebagai cara
mengumpulkan angka bersama-sama. Di bagian ini, kita akan melihat banyak cara
yang berbeda untuk menggunakan daftar. Anda akan menemukan bahwa daftar adalah
beberapa objek yang paling fleksibel dan kuat di Mathematica.
Anda akan melihat bahwa daftar di Mathematica mewakili generalisasi dari
beberapa konsep standar dalam matematika dan ilmu Komputer.
Pada tingkat dasar, apa yang dilakukan daftar Mathematica pada dasarnya adalah
menyediakan cara bagi Anda untuk mengumpulkan beberapa ekspresi dalam bentuk apa pun.
Membuat Tabel Nilai
Anda dapat menggunakan daftar sebagai tabel nilai. Anda dapat membuat tabel,
misalnya, dengan mengevaluasi ekspresi untuk a urutan nilai parameter yang berbeda.
Vektor dan Matriks
Vektor dan matriks di Mathematica hanya diwakili oleh daftar dan daftar daftar,
masingmasing.
Mendapatkan Potongan Daftar
2.1 Ekspresi
2.1.1 Semuanya Adalah Ekspresi
Mathematica menangani berbagai macam hal: rumus matematika, daftar dan grafik, untuk beberapa
nama.
Meskipun mereka sering terlihat sangat berbeda, Mathematica mewakili semua hal ini dalam satu cara
yang seragam. Mereka semua ekspresi.
Contoh prototipikal dari ekspresi Mathematica adalah f[x, y]. Anda dapat menggunakan f[x, y] untuk
merepresentasikan fungsi matematika f Hx, yL. Fungsi tersebut diberi nama f, dan memiliki dua argumen, x
dan y.
Anda tidak selalu harus menulis ekspresi dalam bentuk f[x, y, … ]. Misalnya, x + y juga merupakan
ekspresi. Kapan
Anda mengetik x + y, Mathematica mengubahnya menjadi bentuk standar Plus[x, y]. Kemudian, ketika
mencetaknya lagi, itu memberikannya sebagai x + y.
Hal yang sama berlaku untuk "operator" lainnya, seperti ^ (Power) dan / (Divide).
Faktanya, semua yang Anda ketikkan ke Mathematica diperlakukan sebagai ekspresi.
Anda dapat melihat bentuk lengkap dari ekspresi apapun dengan menggunakan FullForm[expr].
Berikut adalah ekspresi.
2. 1. 2 Arti Ekspresi
Gagasan tentang ekspresi adalah prinsip pemersatu yang penting dalam Mathematica. Ini adalah fakta
bahwa setiap objek di Mathematica memiliki struktur dasar yang sama yang memungkinkan Mathematica
untuk mencakup begitu banyak area dengan perbandingan sejumlah kecil operasi dasar. Meskipun semua
ekspresi memiliki struktur dasar yang sama, ada banyak cara berbeda untuk menggunakan ekspresi. Berikut
adalah beberapa interpretasi yang dapat Anda berikan pada bagian-bagian dari sebuah ekspresi.
Ekspresi dalam Mathematica sering digunakan untuk menentukan operasi. Jadi, misalnya, mengetik
2 + 3 menyebabkan 2 dan 3 menjadi ditambahkan bersama-sama, sementara Faktor[x^6 - 1] melakukan
faktorisasi.
Mungkin penggunaan ekspresi yang lebih penting dalam Mathematica, bagaimanapun, adalah untuk
mempertahankan struktur, yang dapat: kemudian ditindaklanjuti oleh fungsi lainnya. Ekspresi seperti {a, b,
c} tidak menentukan operasi. Itu hanya mempertahankan struktur daftar, yang berisi kumpulan tiga elemen.
Fungsi lain, seperti Reverse atau Dot, dapat bertindak berdasarkan ini struktur.
Bentuk lengkap dari ekspresi {a, b, c} adalah Daftar [a, b, c]. Daftar kepala tidak melakukan operasi.
Sebaliknya, itu tujuannya adalah untuk berfungsi sebagai "tag" untuk menentukan "tipe" struktur.
Anda dapat menggunakan ekspresi di Mathematica untuk membuat struktur Anda sendiri. Misalnya,
Anda mungkin ingin mewakili titik dalam ruang tiga dimensi, ditentukan oleh tiga koordinat. Anda dapat
memberikan setiap titik sebagai titik[x, y, z]. NS titik "fungsi" lagi tidak melakukan operasi. Ini berfungsi
hanya untuk mengumpulkan tiga koordinat bersama-sama, dan untuk memberi label objek yang dihasilkan
sebagai titik.
Anda dapat menganggap ekspresi seperti titik[x, y, z] sebagai "paket data", ditandai dengan kepala
tertentu. Bahkan meskipun semua ekspresi memiliki struktur dasar yang sama, Anda dapat membedakan
"jenis" ekspresi yang berbeda dengan memberi mereka berbeda kepala. Anda kemudian dapat mengatur
aturan dan program transformasi yang memperlakukan berbagai jenis ekspresi dengan cara yang berbeda.
Ada beberapa jenis operator yang umum di Mathematica. + di x + y adalah operator "infix". - di -p
adalah operator "awalan". Bahkan ketika Anda memasukkan ekspresi seperti f[x, y, … ] Mathematica
memungkinkan Anda melakukannya dengan cara yang meniru bentuk infiks, prefiks, dan postfiks.
Anda harus memperhatikan bahwa // memiliki prioritas yang sangat rendah. Jika Anda meletakkan
//f di akhir ekspresi apa pun yang berisi operator aritmatika atau logika, f diterapkan ke seluruh ekspresi.
Jadi, misalnya, x+y //f berarti f[x+y], bukan x+f[y]. Bentuk awalan @ memiliki prioritas yang jauh lebih
tinggi. f @ x + y setara dengan f[x] + y, bukan f [x + y]. Anda dapat menulis f [x + y] dalam bentuk awalan
sebagai f @ (x + y). 2.1.4 Bagian dari Ekspresi
Karena daftar hanyalah jenis ekspresi tertentu, tidak mengherankan jika Anda dapat merujuk ke
bagian ekspresi apa pun seperti halnya Anda merujuk ke bagian daftar.
Anda harus menyadari bahwa penetapan indeks ke bagian ekspresi dilakukan berdasarkan bentuk
internal Mathematica dari ekspresi, seperti yang ditunjukkan oleh FullForm. Bentuk-bentuk ini tidak selalu
berhubungan langsung dengan apa yang Anda lihat dicetak. Hal ini terutama berlaku untuk ekspresi aljabar,
di mana Mathematica menggunakan bentuk internal standar, tetapi mencetak ekspresi dengan cara khusus.
Bagian 1.2.4 membahas bagaimana Anda dapat menggunakan daftar indeks untuk memilih beberapa
elemen daftar sekaligus. Anda dapat menggunakan prosedur yang sama untuk memilih beberapa bagian
dalam ekspresi pada suatu waktu.
Setiap bagian dalam ekspresi dapat dilihat sebagai argumen dari beberapa fungsi. Ketika Anda
memilih beberapa bagian dengan memberikan daftar indeks, bagian-bagian digabungkan menggunakan
fungsi yang sama seperti dalam ekspresi. 2.1.5 Memanipulasi Ekspresi seperti Daftar
Anda dapat menggunakan sebagian besar operasi daftar yang dibahas di Bagian 1.8 pada semua jenis ekspresi
Mathematica. Dengan menggunakan operasi ini, Anda dapat memanipulasi struktur ekspresi dalam banyak
cara.
Berikut adalah ekspresi yang sesuai dengan jumlah istilah.
Take[t, 2] mengambil dua elemen pertama dari t, sama seperti jika t adalah sebuah daftar.
Anda dapat menggunakan FreeQ[expr, form] untuk menguji apakah formulir tidak muncul di mana pun di
expr.
Anda harus ingat bahwa semua fungsi yang memanipulasi struktur ekspresi bertindak pada bentuk internal
ini
ekspresi. Anda dapat melihat formulir ini menggunakan FullForm[expr]. Mereka mungkin tidak seperti yang
Anda harapkan dari versi cetak dari ekspresi.
Here is a function with four arguments.
Anda dapat menganggap ekspresi Mathematica sebagai pohon. Dalam ekspresi di atas, simpul teratas di
pohon terdiri dari a
Plus. Dari simpul ini muncul dua “cabang”, x^3 dan (1 + x)^2. Dari simpul x^3, kemudian ada dua cabang,
x dan 3, yang dapat dilihat sebagai "daun" dari pohon. Matriks ini adalah pohon sederhana dengan hanya
dua tingkat.
Pohon untuk ekspresi ini memiliki beberapa tingkatan. Representasi pohon di sini terlalu panjang untuk
ditampung dalam satu baris, jadi itu harus dipecah menjadi dua baris.
Indeks yang melabeli setiap bagian dari sebuah ekspresi memiliki interpretasi sederhana dalam hal pohon.
Turun dari atas simpul pohon, setiap indeks menentukan cabang mana yang akan diambil untuk mencapai
bagian yang Anda inginkan.
Ini mencari x dalam ekspresi t ke level 1. Ini hanya menemukan satu kejadian.
Ketika Anda sudah memahami level biasa, Anda dapat mencoba memikirkan level negatif. Bagian label level
negative ekspresi mulai dari bagian bawah pohon. Level -1 berisi semua daun pohon: objek seperti simbol
dan angka.
Ini menunjukkan bagian u pada level -1.
Anda dapat menganggap ekspresi memiliki "kedalaman", yang sama dengan jumlah maksimum level yang
ditunjukkan oleh Bentuk Pohon. Secara umum, level -n dalam suatu ekspresi didefinisikan terdiri dari semua
subekspresi yang kedalamannya n.
2. 2 Operasi Fungsional
2. 2. 1 Nama Fungsi sebagai Ekspresi
Dalam ekspresi seperti f[x], "nama fungsi" f itu sendiri adalah ekspresi, dan Anda dapat memperlakukannya
seperti yang Anda lakukan lainnya ekspresi.
Anda dapat mengganti nama fungsi menggunakan aturan transformasi.
Setiap tugas yang Anda buat akan digunakan pada nama fungsi.
Kemampuan untuk memperlakukan nama-nama fungsi seperti jenis ekspresi lainnya merupakan
konsekuensi penting dari sifat simbolis dari bahasa Mathematica. Itu memungkinkan seluruh jajaran operasi
fungsional yang dibahas dalam bagian-bagian yang mengikuti.
Fungsi Mathematica biasa seperti Log atau Integrasi biasanya beroperasi pada data seperti angka dan
aljabar ekspresi. Fungsi Mathematica yang mewakili operasi fungsional, bagaimanapun, dapat beroperasi
tidak hanya pada biasa data, tetapi juga pada fungsi itu sendiri. Jadi, misalnya, operasi fungsional Inverse
Function mengambil Nama fungsi Mathematica sebagai argumen, dan mewakili kebalikan dari fungsi
tersebut.
InverseFunction adalah operasi fungsional: dibutuhkan fungsi Mathematica sebagai argumen, dan
mengembalikan fungsi lain yang mewakili kebalikannya.
Hasil yang diperoleh dari InverseFunction adalah fungsi yang dapat Anda terapkan pada data.
Anda juga dapat menggunakan InverseFunction dengan cara yang murni simbolis.
Ada banyak jenis operasi fungsional di Mathematica. Beberapa mewakili operasi matematika; yang lain
mewakili berbagai macam prosedur dan algoritma.
Kecuali jika Anda terbiasa dengan bahasa simbolik tingkat lanjut, Anda mungkin tidak akan mengenali
sebagian besar fungsi operasi dibahas di bagian berikut. Pada awalnya, operasi mungkin tampak sulit untuk
dipahami. Tapi itu layak dipertahankan. Operasi fungsional menyediakan salah satu cara paling efisien secara
konseptual dan praktis untuk digunakan Matematika.
2.2.2 Menerapkan Fungsi Berulang Kali
Banyak program yang Anda tulis akan melibatkan operasi yang perlu diulang beberapa kali. Nest dan
NestList adalah konstruksi yang kuat untuk melakukan ini.
Nest[f, x, n] mengambil “nama” f dari suatu fungsi, dan menerapkan fungsi tersebut sebanyak n kali ke x.
Nest dan NestList memungkinkan Anda menerapkan fungsi beberapa kali. Seringkali Anda mungkin ingin
menerapkan fungsi sampai hasilnya tidak berubah lagi. Anda dapat melakukan ini menggunakan FixedPoint
dan FixedPointList.
Berikut adalah fungsi yang mengambil satu langkah dalam pendekatan Newton ke
Ini berulang kali menerapkan divide2 hingga hasilnya bukan lagi bilangan genap.
Ini berulang kali menerapkan newton3, berhenti ketika dua hasil berturut-turut tidak lagi dianggap tidak
sama, seperti di FixedPoint List.
Hal ini berlangsung sampai pertama kali hasil yang telah terlihat sebelumnya muncul kembali.
Operasi seperti Nest mengambil fungsi f dari satu argumen, dan menerapkannya berulang kali. Pada setiap
langkah, mereka menggunakan hasil dari langkah sebelumnya sebagai argumen baru dari f.
Penting untuk menggeneralisasi gagasan ini ke fungsi dua argumen. Anda dapat kembali menerapkan fungsi
tersebut berulang kali, tetapi sekarang setiap hasil Anda mendapatkan persediaan hanya salah satu argumen
baru yang Anda butuhkan. Pendekatan yang nyaman adalah mendapatkan yang lain argumen pada setiap
langkah dari elemen daftar yang berurutan.
Fold memberikan elemen terakhir dari daftar yang dihasilkan oleh FoldList.
Menggunakan Fold dan FoldList Anda dapat menulis banyak program yang elegan dan efisien di
Mathematica. Dalam beberapa kasus, Anda mungkin terbantu untuk menganggap Fold dan FoldList sebagai
menghasilkan sarang sederhana dari keluarga fungsi yang diindeks oleh argumen kedua mereka.
Ini mendefinisikan fungsi nextdigit.
Apa yang Apply lakukan secara umum adalah mengganti kepala ekspresi dengan fungsi yang Anda tentukan.
Ini dia menggantikan plus dengan daftar.
2.2.4 Menerapkan Fungsi ke Bagian Ekspresi
Jika Anda memiliki daftar elemen, seringkali penting untuk dapat menerapkan fungsi secara terpisah ke
masing-masing elemen. Anda dapat melakukan ini di Mathematica menggunakan Peta.
Ini berlaku f secara terpisah untuk setiap elemen dalam daftar.
Ini mendefinisikan fungsi yang mengambil dua elemen pertama dari daftar.
Apa yang Map[f, expr] lakukan secara efektif adalah "membungkus" fungsi f di sekitar setiap elemen
ekspresi expr. Kamu bisa gunakan Peta pada ekspresi apa pun, bukan hanya daftar.
Ini berlaku untuk setiap elemen dalam jumlah.
Secara umum, Anda dapat menggunakan spesifikasi level seperti yang dijelaskan di Bagian 2.1.7 untuk
memberi tahu Map ke bagian ekspresi mana yang harus terapkan fungsi Anda.
Ini berlaku f hanya untuk bagian m di level 2.
Mengatur opsi Heads->True membungkus f di sekitar kepala setiap bagian, serta elemennya.
Spesifikasi level memungkinkan Anda memberi tahu Map ke level bagian mana dalam ekspresi yang Anda
inginkan untuk diterapkan fungsi. Dengan MapAt, bagaimanapun, Anda bisa memberikan daftar eksplisit
bagian di mana Anda ingin fungsi diterapkan. Anda menentukan masing-masing bagian dengan memberikan
indeksnya, seperti yang dibahas dalam Bagian 2.1.4.
Peta memungkinkan Anda untuk menerapkan fungsi dari satu argumen ke bagian ekspresi. Terkadang,
bagaimanapun, Anda mungkin sebagai gantinya ingin menerapkan fungsi beberapa argumen ke bagian yang
sesuai dari beberapa ekspresi berbeda. Kamu bisa melakukan ini menggunakan MapThread.
Fungsi seperti Peta memungkinkan Anda membuat ekspresi dengan bagian yang dimodifikasi. Terkadang
Anda hanya ingin melalui sebuah ekspresi, dan menerapkan fungsi tertentu ke beberapa bagian, tanpa
membangun ekspresi baru. Kasus yang khas adalah ketika fungsi yang Anda terapkan memiliki “efek
samping” tertentu, seperti membuat tugas, atau menghasilkan keluaran.
Peta membangun daftar baru di mana f telah diterapkan ke setiap elemen daftar.
Pemindaian mengevaluasi hasil penerapan fungsi ke setiap elemen, tetapi tidak membuat ekspresi baru.
2.2.5 Fungsi Murni
Saat Anda menggunakan operasi fungsional seperti Nest dan Map, Anda harus selalu menentukan fungsi
yang akan diterapkan. Dalam semua contoh di atas, kami telah menggunakan "nama" fungsi untuk
menentukan fungsi. Fungsi murni memungkinkan Anda memberi fungsi yang dapat diterapkan pada
argumen, tanpa harus mendefinisikan nama fungsi secara eksplisit.
Ini mendefinisikan fungsi h.
Berikut adalah cara untuk mendapatkan hasil yang sama menggunakan fungsi murni.
Ada beberapa cara yang setara untuk menulis fungsi murni di Mathematica. Idenya dalam semua kasus
adalah untuk membangun sebuah objek yang, ketika diberikan dengan argumen yang sesuai, menghitung
fungsi tertentu. Jadi, misalnya, jika kesenangan itu murni fungsi, kemudian fun[a] mengevaluasi fungsi
dengan argumen a.
Berikut adalah fungsi murni yang mewakili operasi kuadrat.
Anda dapat menggunakan fungsi murni di mana pun Anda biasanya memberi nama fungsi.
Jika Anda akan menggunakan fungsi tertentu berulang kali, maka Anda dapat mendefinisikan fungsi tersebut
menggunakan f[x_] := body, dan mengacu pada fungsi dengan namanya f. Di sisi lain, jika Anda hanya
berniat menggunakan fungsi sekali, Anda mungkin akan menemukan lebih baik memberikan fungsi dalam
bentuk fungsi murni, tanpa pernah menamainya.
Jika Anda terbiasa dengan logika formal atau bahasa pemrograman LISP, Anda akan mengenali fungsi murni
Mathematica sebagai ekspresi seperti l atau fungsi anonim. Fungsi murni juga dekat dengan gagasan
matematika murni dari operator.
Sama seperti nama suatu fungsi tidak relevan jika Anda tidak berniat untuk merujuk ke fungsi itu lagi,
demikian juga nama-nama dari argumen dalam fungsi murni tidak relevan. Mathematica memungkinkan
Anda untuk menghindari penggunaan nama eksplisit untuk argument fungsi murni, dan sebagai gantinya
untuk menentukan argumen dengan memberikan "nomor slot" #n. Dalam fungsi murni Mathematica, #n
adalah singkatan dari argumen ke-n yang Anda berikan. # singkatan dari argumen pertama.
#^2 & adalah bentuk singkat untuk fungsi murni yang mengkuadratkan argumennya.
Ini menerapkan fungsi yang mengambil dua elemen pertama dari setiap daftar. Dengan menggunakan fungsi
murni, Anda tidak perlu mendefinisikan berfungsi secara terpisah.
Saat Anda menggunakan formulir pendek untuk fungsi murni, sangat penting untuk tidak melupakan
ampersand. Jika Anda meninggalkan ampersand out, Mathematica tidak akan tahu bahwa ekspresi yang
Anda berikan akan digunakan sebagai fungsi murni.
Saat Anda menggunakan notasi ampersand untuk fungsi murni, Anda harus berhati-hati tentang
pengelompokan bagian di Anda memasukkan. Seperti yang ditunjukkan pada Bagian A.2.7, notasi
ampersand memiliki prioritas yang cukup rendah, yang berarti Anda dapat mengetik ekspresi seperti #1 +
#2 & tanpa tanda kurung. Di sisi lain, jika Anda ingin, misalnya, menyetel opsi menjadi a fungsi murni,
Anda perlu menggunakan tanda kurung, seperti pada opsi -> (menyenangkan &). Fungsi murni di
Mathematica dapat mengambil sejumlah argumen. Anda dapat menggunakan ## untuk mewakili semua
argumen yang diberikan, dan ##n untuk mewakili argumen ke-n dan selanjutnya. ## adalah singkatan dari
semua argumen.
Ini menghasilkan matriks 3x3 yang elemen-elemennya adalah kuadrat dari jumlah indeksnya.
NestList dan FoldList telah dibahas di Bagian 2.2.2. Khususnya dengan menggunakannya dengan fungsi
murni, Anda bisa membangun beberapa program Mathematica yang sangat elegan dan efisien.
Ini memberikan daftar hasil yang diperoleh dengan mendiferensiasikan xn secara berurutan terhadap x.
Ini memilih elemen dari daftar yang fungsi murninya menghasilkan True, yaitu, yang secara numerik lebih
besar dari 4.
Anda dapat menggunakan Select untuk memilih bagian dari ekspresi apa pun, bukan hanya elemen daftar.
Ini memberikan jumlah istilah yang melibatkan x, y dan z.
Anda dapat menggunakan Select untuk memilih hanya istilah-istilah dalam jumlah yang tidak melibatkan
simbol x.
Bagian 2.3.5 membahas beberapa “predikat” yang sering digunakan sebagai kriteria dalam Select.
Ini memberikan elemen pertama yang memenuhi kriteria yang Anda tentukan.
2.2.8 Ekspresi dengan Kepala Yang Bukan Simbol
Dalam kebanyakan kasus, Anda ingin kepala f dari ekspresi Mathematica seperti f[x] menjadi simbol
tunggal. Namun, ada beberapa aplikasi penting dari kepala yang bukan simbol.
Ekspresi ini memiliki f[3] sebagai kepala. Anda dapat menggunakan kepala seperti ini untuk mewakili
"fungsi yang diindeks".
Anda dapat menggunakan ekspresi apa pun sebagai kepala. Ingatlah untuk memasukkan tanda kurung yang
diperlukan.
Satu kasus di mana kita telah menemukan penggunaan ekspresi rumit sebagai kepala dalam bekerja dengan
murni fungsi dalam Bagian 2.2.5. Dengan memberikan Function[vars, body] sebagai kepala ekspresi, Anda
menentukan fungsi dari argumen yang akan dievaluasi.
Dengan fungsi kepala[x, x^2], nilai ekspresi adalah kuadrat dari argumen.
Ada beberapa konstruksi di Mathematica yang bekerja seperti fungsi murni, tetapi yang mewakili jenis
tertentu fungsi, biasanya yang numerik. Dalam semua kasus, mekanisme dasar melibatkan pemberian kepala
yang berisi informasi lengkap tentang fungsi yang ingin Anda gunakan.
Penggunaan penting lainnya dari ekspresi yang lebih rumit sebagai kepala adalah dalam
mengimplementasikan fungsi dan operator fungsional dalam matematika.
Sebagai salah satu contoh, perhatikan operasi diferensiasi. Seperti yang akan dibahas dalam Bagian 3.5.4,
ekspresi seperti f'
mewakili fungsi turunan, diperoleh dari f dengan menerapkan operator fungsional padanya. Dalam
Mathematica, f' direpresentasikan sebagai Derivatif[1][f]: "operator fungsional" Derivatif[1] diterapkan ke f
untuk memberikan yang lain fungsi, direpresentasikan sebagai f'.
Ekspresi ini memiliki kepala yang mewakili penerapan "operator fungsional" Derivatif[1] ke "fungsi" f.
Anda dapat mengganti kepala f' dengan kepala lain, seperti fp. Ini secara efektif menjadikan fp sebagai
"fungsi turunan" yang diperoleh dari F.
Anda bisa mendapatkan jumlah dari dua ekspresi di Mathematica hanya dengan mengetik x + y. Terkadang
juga berharga untuk
pertimbangkan untuk melakukan operasi seperti penambahan pada operator Anda
dapat menganggap ini sebagai penjumlahan dari dua operator f dan g.
Menggunakan Through, Anda dapat mengonversi ekspresi ke bentuk yang lebih eksplisit.
𝛿𝑥
Mathematica tidak secara otomatis menerapkan bagian terpisah dari operator ke ekspresi.
Fungsi seperti Perluas tidak secara otomatis masuk ke dalam kepala ekspresi.
Anda dapat menggunakan Operate untuk menerapkan fungsi secara khusus ke kepala ekspresi.
Anda dapat menggunakan Sortir untuk menempatkan argumen fungsi apa pun ke dalam urutan standar
Argumen kedua untuk Sort adalah fungsi yang digunakan untuk menentukan apakah pasangan berurutan. Ini
mengurutkan angka ke dalam urutan menurun.
Kriteria pengurutan ini menempatkan elemen yang tidak bergantung pada x sebelum elemen yang
bergantung pada x.
Flatten menghapus kemunculan bersarang dari suatu fungsi.
Anda dapat menggunakan Flatten untuk "menyambung" urutan elemen ke dalam daftar atau ekspresi lainnya.
Anda dapat menggunakan Flatten untuk mengimplementasikan properti matematika dari associativity.
Fungsi Distribusi memungkinkan
Anda untuk mengimplementasikan properti seperti distributivity dan linearity.
Secara umum, jika f distributif terhadap Plus, maka ekspresi seperti f[a + b] dapat “diperluas” menjadi f[a] +
f[b].
Fungsi Expand melakukan ekspansi semacam ini untuk operator aljabar standar seperti Times.
Mendistribusikan memungkinkan Anda melakukan jenis ekspansi yang sama untuk operator arbitrer.
Perluas menggunakan distribusi Times over Plus untuk melakukan ekspansi aljabar.
Ini menerapkan distribusi atas daftar, bukan jumlah. Hasilnya berisi semua kemungkinan pasangan argumen.
Ini mendistribusikan lebih dari daftar, tetapi melakukannya hanya jika kepala dari seluruh ekspresi adalah f
Ini mendistribusikan daftar, memastikan bahwa kepala seluruh ekspresi adalah f. Hasilnya, ia
menggunakan gp sebagai pengganti Daftar, dan fp menggantikan f
Terkait dengan Distribute adalah fungsi Thread. Apa yang dilakukan Thread secara efektif adalah
menerapkan fungsi secara paralel ke semua elemen dari daftar atau ekspresi lainnya.
Seperti disebutkan dalam Bagian 1.8.1, dan dibahas secara lebih rinci di Bagian 2.6.3, banyak fungsi
Mathematica bawaan memiliki properti sebagai "dapat dicantumkan", sehingga mereka secara otomatis
ditempatkan di atas daftar apa pun yang muncul sebagai argumen.
Fungsi matematis bawaan seperti Log dapat dicantumkan, sehingga secara otomatis dimasukkan ke dalam
daftar.
Log, bagaimanapun, tidak secara otomatis melewati persamaan.
Anda dapat menggunakan Utas untuk menerapkan fungsi ke kedua sisi persamaan.
Outer[f, list1, list2 ] mengambil semua kemungkinan kombinasi elemen dari list1 dan list2 , dan
menggabungkannya dengan f.
Luar dapat dilihat sebagai generalisasi dari produk Cartesian untuk tensor, seperti yang dibahas dalam Bagian
3.7.11.
Bentuk luar semua kemungkinan kombinasi elemen, dan berlaku f untuk mereka.
Anda dapat menggunakan Outer pada urutan ekspresi apa pun dengan kepala yang sama.
Outer, like Distribute, constructs all possible combinations of elements. On the other hand, Inner, like Thread,
constructs only combinations of elements that have corresponding positions in the expressions it acts on.
Berikut adalah struktur yang dibangun oleh Inner.
FlattenAt memungkinkan Anda menentukan pada posisi apa Anda ingin sublist diratakan.
Objek urutan secara otomatis disambungkan, dan tidak memerlukan perataan eksplisit.
2.3 Pola
2.3.1 Pendahuluan
Pola digunakan di seluruh Mathematica untuk mewakili kelas ekspresi. Contoh sederhana dari sebuah pola
adalah ekspresi f[x_]. Pola ini mewakili kelas ekspresi dengan bentuk f[anything]. Kekuatan utama dari pola
berasal dari fakta bahwa banyak operasi di Mathematica dapat dilakukan tidak hanya dengan satu ekspresi,
tetapi juga dengan pola yang mewakili seluruh kelas ekspresi. Anda dapat menggunakan pola dalam aturan
transformasi untuk menentukan bagaimana kelas ekspresi harus diubah.
Anda dapat menggunakan pola untuk menemukan posisi semua ekspresi di kelas tertentu
Objek dasar yang muncul di hampir semua pola Mathematica adalah _ (secara tradisional disebut "kosong"
oleh Mathematica programmer). Aturan dasarnya adalah bahwa _ adalah singkatan dari ekspresi apa pun.
Pada sebagian besar keyboard, _ garis bawah karakter muncul sebagai versi yang digeser dari - karakter
tanda hubung. Jadi, misalnya, pola f[_] mewakili ekspresi apa pun dari bentuk f[anything]. Pola f[x_] juga
singkatan dari ekspresi apa pun dalam bentuk f[anything], tetapi memberi nama x ke ekspresi apa pun,
memungkinkan Anda untuklihat di sisi kanan aturan transformasi. Anda dapat mengosongkan di mana saja
dalam ekspresi. Apa yang Anda dapatkan adalah pola yang cocok dengan semua ekspresi yang bisa dibuat
dengan "mengisi bagian yang kosong" dengan cara apa pun.
Anda dapat membuat pola untuk ekspresi dengan struktur apa pun
Salah satu penggunaan pola yang paling umum adalah untuk argumen fungsi "menghancurkan". Jika Anda
membuat definisi untuk f[list_], maka Anda perlu menggunakan fungsi seperti Bagian secara eksplisit untuk
memilih elemen daftar. Tapi jika kamu tahu misalnya bahwa daftar akan selalu memiliki dua elemen, maka
biasanya jauh lebih mudah daripada memberikan sebuah definisi sebagai gantinya untuk f[{x_, y_}].
Kemudian Anda dapat merujuk ke elemen daftar secara langsung sebagai x dan y. Tambahan, Mathematica
tidak akan menggunakan definisi yang Anda berikan kecuali argumen f benar-benar berbentuk daftar yang
diperlukan dari dua ekspresi.
Berikut adalah salah satu cara untuk mendefinisikan fungsi yang mengambil daftar dua elemen, dan
mengevaluasi elemen pertama yang dipangkatkan elemen kedua
Berikut adalah cara yang jauh lebih elegan untuk membuat definisi, menggunakan pola.
Poin penting untuk dipahami adalah bahwa pola Mathematica mewakili kelas ekspresi dengan struktur
tertentu. Satu pola akan cocok dengan ekspresi tertentu jika struktur polanya sama dengan struktur ekspresi,
di arti bahwa dengan mengisi kekosongan dalam pola Anda bisa mendapatkan ekspresi. Meskipun dua
ekspresi mungkin sama secara matematis, mereka tidak dapat diwakili oleh pola Mathematica yang sama
kecuali mereka memiliki struktur yang sama.
Jadi, misalnya, pola (1 + x_)^2 dapat mewakili ekspresi seperti (1 + a)^2 atau (1 + b^3)^2 yang memiliki
struktur yang sama. Namun, itu tidak dapat digunakan untuk ekspresi 1 + 2 a + a^2. Meskipun ekspresi ini
secara matematis sama dengan (1 + a)^2, tidak memiliki struktur yang sama dengan pola (1 + x_)^2. Fakta
bahwa pola di Mathematica menentukan struktur ekspresi sangat penting dalam memungkinkan untuk
mengatur aturan transformasi yang mengubah struktur ekspresi, sementara membiarkannya secara matematis
sama. Perlu disadari bahwa secara umum sangat tidak mungkin bagi Mathematica untuk mencocokkan pola
dengan matematika, daripada struktural, kesetaraan. Dalam kasus ekspresi seperti (1 + a)^2 dan 1 + 2 a +
a^2, Anda dapat menentukan kesetaraan hanya dengan menggunakan fungsi seperti Expand dan Factor. Tapi,
seperti yang dibahas dalam Bagian 2.6.2 tidak ada yang umum cara untuk mengetahui apakah pasangan
arbitrer ekspresi matematika adalah sama. Sebagai contoh lain, pola x^_ akan cocok dengan ekspresi x^2.
Namun, itu tidak akan cocok dengan ekspresi 1, bahkan meskipun ini dapat dianggap sebagai x^0. Bagian
2.3.9 akan membahas bagaimana membangun pola yang khusus ini
kasus akan cocok. Tetapi Anda harus memahami bahwa dalam semua kasus, pencocokan pola di
Mathematica pada dasarnya bersifat struktural.
x^n_ hanya cocok dengan x^2 dan x^3. 1 dan x secara matematis dapat ditulis sebagai xn , tetapi tidak
memiliki struktur yang sama.
Hal lain yang perlu disadari adalah bahwa struktur yang digunakan Mathematica dalam pencocokan pola
adalah bentuk penuh dari ekspresi dicetak oleh FullForm. Jadi, misalnya, objek seperti 1/x, yang bentuk
lengkapnya adalah Power[x, -1] akan dicocokkan dengan pola x_^n_, tetapi tidak dengan pola x_/y_, yang
bentuk lengkapnya adalah Kali[x_, Daya[y_, -1]]. Lagi, Bagian 2.3.9 akan membahas bagaimana Anda dapat
membangun pola yang dapat cocok dengan semua kasus ini.
Ekspresi dalam daftar berisi kekuatan eksplisit b, sehingga aturan transformasi dapat diterapkan.
Meskipun Mathematica tidak menggunakan kesetaraan matematis seperti x1 = x saat mencocokkan pola, ia
menggunakan kesetaraan struktural tertentu. Jadi, misalnya, Mathematica memperhitungkan sifat-sifat
seperti komutatif dan asosiatif dalam pencocokan pola.
Untuk menerapkan aturan transformasi ini, Mathematica menggunakan komutatifitas dan asosiatifitas
penjumlahan.
Diskusi sejauh ini hanya mempertimbangkan objek pola seperti x_ yang dapat mewakili ekspresi tunggal apa
pun. Nanti subbagian, kami membahas konstruksi yang digunakan Mathematica untuk memperluas dan
membatasi kelas ekspresi yang diwakili oleh pola.
Pola _Integer cocok dengan bilangan bulat apa pun. Ini memberikan daftar bilangan bulat yang muncul di
level mana pun.
Ini memberikan posisi dua pangkat pertama dari x yang muncul di tingkat mana pun.
Posisi ditentukan dengan tepat dalam bentuk yang digunakan oleh fungsi seperti Extract dan ReplacePart
yang dibahas di Bagian 1.8.
Ini menghapus semua bilangan bulat yang muncul di level mana pun.
temukan semua cara agar expr bisa cocok dengan lhs
Ini menemukan semua cara agar jumlah dapat ditulis dalam dua bagian.
Ini menemukan semua pasangan elemen identik. Pola ___ singkatan dari setiap urutan elemen.
Aturan transformasi hanya berlaku untuk kasus di mana dua argumen dari f adalah identic
Mathematica allows you to give names not just to single blanks, but to any piece of a pattern. The object
x:pattern in general represents a pattern which is assigned the name x. In transformation rules, you can use
this mechanism to name exactly those pieces of a pattern that you need to refer to on the right-hand side of
the rule.
Ini memberi nama untuk bentuk lengkap _^_ sehingga Anda dapat merujuknya secara keseluruhan di sisi
kanan aturan transformasi.
Saat Anda memberi nama yang sama pada dua bagian pola, Anda membatasi pola agar hanya cocok dengan
ekspresi di yang bagian-bagian yang bersesuaian adalah identik.
Di sini polanya cocok dengan kedua kasus.
Sekarang kedua argumen f dibatasi menjadi sama, dan hanya kasus pertama yang cocok
Definisi ini hanya berlaku jika argumen gamma adalah bilangan bulat.
Ini memberikan definisi untuk fac yang hanya berlaku jika argumennya n positif.
Anda dapat gunakan /; pada seluruh definisi dan aturan transformasi, serta pada pola individu. Secara umum,
Anda bisa taruh /; kondisi di akhir setiap := definisi atau :> aturan untuk memberi tahu Mathematica bahwa
definisi atau aturan hanya berlaku ketika kondisi yang ditentukan berlaku. Perhatikan bahwa /; kondisi
biasanya tidak boleh diletakkan di akhir = definisi atau -> aturan, karena mereka akan segera dievaluasi,
seperti yang dibahas dalam Bagian 2.5.8.
Berikut adalah cara lain untuk memberikan definisi yang hanya berlaku jika argumennya n positif.
Anda dapat menggunakan /; operator untuk menerapkan kendala matematika sewenang-wenang pada
penerapan aturan. Secara tipikal kasus, Anda memberikan pola yang secara struktural cocok dengan berbagai
ekspresi, tetapi kemudian menggunakan batasan matematika untuk mengurangi rentang ekspresi ke set yang
jauh lebih kecil.
Aturan ini hanya berlaku untuk ekspresi yang memiliki struktur v[x_, 1 - x_].
Ekspresi ini, meskipun secara matematis dari bentuk yang benar, tidak memiliki struktur yang sesuai,
sehingga aturannya tidak berlaku.
Aturan ini berlaku untuk ekspresi apa pun dalam bentuk w[x_, y_], dengan batasan tambahan bahwa y == 1
- x.
Dalam mengatur pola dan aturan transformasi, seringkali ada pilihan di mana harus meletakkan /; kondisi.
Misalnya, Anda dapat menempatkan /; kondisi di sisi kanan aturan dalam bentuk lhs :> rhs /; kondisi, atau
Anda dapat meletakkannya di sisi kiri dalam bentuk lhs /; kondisi -> rs. Anda mungkin juga dapat
memasukkan kondisi di dalam ekspresi lhs. Satu-satunya kendala adalah bahwa semua nama pola yang Anda
gunakan dalam kondisi tertentu harus muncul dalam pola yang syaratnya dilampirkan. Jika ini tidak terjadi,
maka beberapa nama yang diperlukan untuk mengevaluasi kondisi mungkin belum "terikat" dalam proses
pencocokan pola. Jika ini terjadi, maka Mathematica menggunakan nilai global untuk variabel yang sesuai,
bukan nilai yang ditentukan oleh pencocokan pola
Jadi, misalnya, kondisi di f[x_, y_] /; (x + y < 2) akan menggunakan nilai untuk x dan y yang ditemukan
dengan mencocokkan f[x_, y_], tetapi kondisi dalam f[x_ /; x + y < 2, y_] akan menggunakan nilai global
untuk y, bukan yang ditemukan dengan mencocokkan pola.
Selama Anda memastikan bahwa nama yang sesuai telah ditentukan, biasanya paling efisien untuk
meletakkan /; kondisi pada bagian terkecil dari pola. Alasan untuk ini adalah Mathematica mencocokkan
potongan pola secara berurutan, dan semakin cepat ia menemukan /; kondisi yang gagal, semakin cepat dapat
menolak pertandingan.
Menempatkan /; kondisi di sekitar x_ sedikit lebih efisien daripada meletakkannya di sekitar seluruh pola.
Anda harus meletakkan tanda kurung di sekitar /; bagian dalam kasus seperti ini.
Adalah umum untuk menggunakan /; untuk mengatur pola dan aturan transformasi yang hanya berlaku untuk
ekspresi dengan properti tertentu. Ada kumpulan fungsi yang dibangun ke dalam Mathematica untuk
menguji properti ekspresi. Ini adalah konvensi bahwa fungsi semacam ini memiliki nama yang diakhiri
dengan huruf Q, yang menunjukkan bahwa mereka "mengajukan pertanyaan".
Aturan ini berlaku untuk semua elemen daftar yang berupa angka.
Sebuah fitur penting dari semua fungsi pengujian properti Mathematica yang namanya berakhiran Q adalah
bahwa mereka selalu kembali
Salah jika mereka tidak dapat menentukan apakah ekspresi yang Anda berikan memiliki properti tertentu.
4561 adalah bilangan bulat, jadi ini mengembalikan True.
Dalam beberapa kasus, Anda dapat secara eksplisit menentukan hasil yang harus diberikan oleh fungsi
pengujian properti. Jadi, dengan definisi seperti x /: IntegerQ[x] = Benar, seperti yang dibahas dalam Bagian
2.5.10, Mathematica akan mengasumsikan bahwa x adalah bilangan bulat.
Ini berarti bahwa jika Anda secara eksplisit meminta IntegerQ[x], Anda sekarang akan mendapatkan True,
bukan False. Namun, Mathematica tidak secara otomatis menyebarkan pernyataan, sehingga tidak dapat
menentukan misalnya bahwa IntegerQ[x^2] adalah Benar. Anda harus memuat paket Mathematica yang
sesuai untuk memungkinkan hal ini.
Dengan ==, persamaan tetap dalam bentuk simbolis; === menghasilkan False kecuali ekspresi secara nyata
sama
Pola konstruksi /; kondisi memungkinkan Anda untuk mengevaluasi kondisi yang melibatkan nama pola
untuk menentukan apakah ada kecocokan. Pola konstruksi? tes sebagai gantinya menerapkan tes fungsi ke
seluruh ekspresi dicocokkan dengan pola untuk menentukan apakah ada kecocokan. Menggunakan ? dari
pada /; terkadang mengarah ke lebih ringkas definisi.
Dengan definisi ini kecocokan untuk x_ diuji dengan fungsi NumberQ.
Berikut adalah definisi yang lebih rumit. Jangan lupa tanda kurung di sekitar fungsi murni.
Berikut adalah contoh lain, di mana salah satu alternatif itu sendiri adalah sebuah pola.
Saat Anda menggunakan alternatif dalam pola, Anda harus memastikan bahwa rangkaian nama yang sama
muncul di setiap alternatif.
Ketika pola seperti (a[x_] | b[x_]) cocok dengan ekspresi, akan selalu ada ekspresi pasti yang sesuai dengan
objek x. Di sisi lain, jika Anda mencoba mencocokkan pola seperti (a[x_] | b[y_]), maka akan ada ekspresi
pasti yang sesuai dengan x, atau y, tetapi tidak keduanya. Akibatnya, Anda tidak dapat menggunakan x dan
y untuk merujuk ke ekspresi yang pasti, misalnya di sisi kanan aturan transformasi.
Di sini f digunakan untuk memberi nama kepala, yang dapat berupa a atau b.
Dalam hal ini, ekspresi harus dimasukkan ke dalam bentuk g[b + a, b] agar memiliki struktur yang sama
dengan polanya.
Kapanpun Mathematica menemukan fungsi tak beraturan atau komutatif seperti Plus atau Times dalam suatu
pola, itu secara efektif menguji semua kemungkinan urutan argumen untuk mencoba dan menemukan
kecocokan. Terkadang, mungkin ada beberapa pemesanan yang mengarah ke pertandingan. Dalam kasus
seperti itu, Mathematica hanya menggunakan urutan pertama yang ditemukannya. Misalnya, h[x_ + y_, x_
+ z_] dapat mencocokkan h[a + b, a + b] dengan xØa, yØb, zØb atau dengan xØb, yØa, zØa. Mathematica
mencoba kasusnya xØa, yØb, zØb terlebih dahulu, dan dengan demikian menggunakan kecocokan ini. Ini
bisa cocok dengan x a atau dengan x b. Mathematica mencoba x a terlebih dahulu, dan menggunakan
kecocokan ini.
Selain tidak beraturan, fungsi seperti Plus dan Times juga memiliki sifat datar atau asosiatif. Ini berarti
Anda dapat secara efektif "mengkurung" argumen mereka dengan cara apa pun, sehingga, misalnya, x + (y
+ z) adalah ekuivalen dengan x + y + z, dan seterusnya.
Mathematica memperhitungkan kerataan dalam pola yang cocok. Akibatnya, pola seperti g[x_ + y_] dapat
cocok dengan g[a + b + c], dengan x a dan y (b + c).
Argumen dari g ditulis sebagai a + (b + c) agar sesuai dengan polanya.
Jika tidak ada kendala lain, Mathematica akan mencocokkan x_ dengan elemen pertama dari penjumlahan
Mathematica biasanya dapat menerapkan aturan transformasi ke suatu fungsi hanya jika pola dalam aturan
tersebut mencakup semua argumen dalam fungsi tersebut. Namun, jika Anda memiliki fungsi datar,
terkadang dimungkinkan untuk menerapkan aturan transformasi genap meskipun tidak semua argumen
tercakup.
Aturan ini berlaku meskipun tidak mencakup semua persyaratan dalam penjumlahan.
Karena Plus adalah fungsi datar, pola seperti x_ + y_ dapat mencocokkan jumlah dengan sejumlah suku apa
pun. pola ini tidak dapat, bagaimanapun, cocok dengan satu istilah seperti a. Namun, pola x_ + y_. berisi
bagian opsional, dan dapat cocok dengan jumlah eksplisit istilah di mana x_ dan y_ muncul, atau satu istilah
x_, dengan y diambil sebagai 0.
Menggunakan konstruksi seperti x_., Anda dapat dengan mudah membuat pola tunggal yang cocok dengan
ekspresi dengan beberapa yang berbeda struktur. Ini sangat berguna ketika Anda ingin mencocokkan
beberapa bentuk yang sama secara matematis yang tidak memiliki struktur yang sama.
Polanya cocok dengan g[a^2], tetapi tidak cocok dengan g[a + b].
untuk menyertakan subdaftar yang menggantung di ujung daftar asli. Secara default, itu mengisi
tambahan elemen dengan memperlakukan daftar asli sebagai siklik. Itu juga dapat memperlakukannya
sebagai diisi dengan elemen yang Anda tentukan.
Ini termasuk sublist tambahan, memperlakukan daftar asli sebagai siklik.
Anda dapat menganggap Partisi sebagai mengekstrak subdaftar dengan menggeser template, dan
memilih elemen dari daftar asli. Anda dapat memberi tahu Partisi tempat memulai dan menghentikan proses
ini.
Ini memberikan semua subdaftar yang tumpang tindih dengan daftar asli.
Dalam beberapa kasus, mungkin lebih mudah untuk memasukkan padding eksplisit ke dalam daftar.
Anda dapat melakukan ini menggunakan PadLeft dan Padg Benar.
Anda dapat menganggap SparseArray[rules] sebagai mengambil semua spesifikasi posisi yang
mungkin, lalu menerapkan aturan untuk menentukan nilai tambang dalam setiap kasus. Seperti biasa, aturan
yang diberikan sebelumnya dalam daftar akan dicoba terlebih dahulu.
Ini menghasilkan matriks diagonal acak.
Untuk banyak tujuan, Mathematica memperlakukan objek SparseArray seperti daftar biasa yang
sesuai. Jadi, misalnya, jika Anda meminta bagian dari objek array jarang, Mathematica akan beroperasi
seolah-olah Anda telah meminta bagian dalam daftar biasa yang sesuai.
Ini menghasilkan objek array yang jarang.
Terkadang Anda mungkin harus terus menerapkan aturan berulang kali, sampai ekspresi yang Anda
kerjakan tidak perubahan yang lebih lama. Anda dapat melakukan ini menggunakan operasi penggantian
berulang expr //. aturan (atau Replaceg Berulang[expr, aturan]).
Dengan operator pengganti tunggal /. setiap aturan dicoba hanya sekali pada setiap bagian dari ekspresi.
Dengan operator penggantian berulang //. aturan dicoba berulang kali sampai ekspresi tidak lagi
berubah.
Jika Anda memberikan seperangkat aturan yang melingkar, maka //. dapat terus mendapatkan hasil
yang berbeda selamanya. Dalam prakteknya, maksimal jumlah ibu yang melewati itu //. membuat ekspresi
tertentu ditentukan oleh pengaturan untuk opsi MaxItergasi. Jika Anda ingin melanjutkan selama mungkin,
Anda dapat menggunakan ReplaceRepeated[expr, rules, MaxItg erasi -> Tak terhingga]. Anda selalu dapat
berhenti dengan menginterupsi Mathematica secara eksplisit.
Dengan menyetel opsi MaxIterations, Anda dapat secara eksplisit memberi tahu ReplaceRepeated
berapa kali untuk mencoba aturan yang Anda berikan.
Untuk daftar aturan yang panjang, Anda akan menemukan bahwa menyiapkan tabel pengiriman
membuat operasi penggantian menjadi lebih cepat. Ini adalah terutama benar ketika aturan Anda adalah
untuk simbol individu atau ekspresi lain yang tidak melibatkan objek pola. Setelah Anda membuat tabel
pengiriman dalam kasus seperti itu, Anda akan menemukan bahwa /. operator membutuhkan waktu yang
kurang lebih Terlepas dari jumlah aturan yang Anda miliki. Namun, tanpa tabel pengiriman, /. akan memakan
waktu secara langsung sebanding dengan jumlah total aturan.
Kode yang dikompilasi tidak mengharapkan bilangan kompleks, jadi Mathematica harus kembali
mengevaluasi secara eksplisit simbolik asli ekspresi.
Fitur penting dari Compile adalah ia tidak hanya dapat menangani ekspresi matematika, tetapi juga
berbagai hal sederhana program matematika. Jadi, misalnya, Kompilasi dapat menangani kondisional dan
mengontrol struktur aliran.
Dalam semua kasus, Compile[vars, expr] menganggap argumennya tidak dievaluasi. Ini berarti bahwa
Anda dapat secara eksplisit memberikan "program" sebagai ekspresi untuk dikompilasi.
Ini menciptakan versi terkompilasi dari program Mathematica yang mengimplementasikan pendekatan
Newton ke akar kuadrat.
Ini menunjukkan bentuk eksplisit dari kode yang dikompilasi yang dihasilkan oleh Compile. Aliran
instruksi dalam objek CompiledFunction terdiri dari daftar instruksi untuk idealisasi sederhana komputer.
Komputer diasumsikan memiliki "register" bernomor, di mana operasi dapat dilakukan. Ada lima tipe dasar
register: logika, integer, real, kompleks, dan tensor. Untuk masing-masing tipe dasar ini maka dimungkinkan
memiliki register skalar tunggal atau larik register dengan peringkat apa pun. Daftar jumlah total register
masing-masing jenis yang diperlukan untuk mengevaluasi objek CompiledFunction tertentu diberikan
sebagai elemen kedua objek. Instruksi aktual dalam objek kode yang dikompilasi diberikan sebagai daftar.
Elemen pertama adalah “opcode” bilangan bulat yang menentukan operasi apa yang harus dilakukan.
Elemen-elemen selanjutnya adalah jumlah register tertentu jenis, atau konstanta literal. Biasanya elemen
terakhir dari daftar adalah nomor "daftar tujuan", di mana: hasil operasi harus diletakkan.
2.7 Modularitas dan Penamaan Benda
2.7.1 Modul dan Variabel Lokal
Mathematica biasanya mengasumsikan bahwa semua variabel Anda bersifat global. Ini berarti bahwa
setiap kali Anda menggunakan nama seperti x, Mathematica biasanya mengasumsikan bahwa Anda mengacu
pada objek yang sama.
Khususnya ketika Anda menulis program, bagaimanapun, Anda mungkin tidak ingin semua variabel
Anda menjadi global. Anda mungkin, misalnya, ingin menggunakan nama x untuk merujuk ke dua variabel
yang sangat berbeda dalam dua program yang berbeda. Dalam hal ini, Anda memerlukan x di setiap program
untuk diperlakukan sebagai variabel lokal.
Anda dapat mengatur variabel lokal di Mathematica menggunakan modul. Di dalam setiap modul,
Anda dapat memberikan daftar variabel yang akan diperlakukan sebagai lokal ke modul.
t di dalam modul bersifat lokal, sehingga dapat diperlakukan secara independen dari t global.
Cara paling umum modul digunakan adalah dengan mengatur variabel sementara atau menengah di
dalam fungsi Anda mendefinisikan. Penting untuk memastikan bahwa variabel tersebut tetap lokal. Jika
tidak, maka Anda akan mendapat masalah setiap kali nama mereka kebetulan bertepatan dengan nama
variabel lain.
Anda dapat memperlakukan variabel lokal dalam modul seperti simbol lainnya. Jadi, misalnya, Anda
dapat menggunakannya sebagai nama untuk fungsi lokal, Anda dapat menetapkan atribut untuknya, dan
seterusnya.
Saat Anda menyiapkan variabel lokal dalam modul, Mathematica awalnya tidak memberikan nilai pada
variabel. Ini berarti bahwa Anda dapat menggunakan variabel dengan cara simbolis murni, bahkan jika ada
nilai global yang ditentukan untuk variabel di luar modul.
Anda dapat menentukan nilai awal untuk variabel lokal mana pun dalam sebuah modul. Nilai awal
selalu dievaluasi sebelum modul dijalankan. Akibatnya, bahkan jika variabel x didefinisikan sebagai lokal
ke modul, x global akan digunakan jika: muncul dalam ekspresi untuk nilai awal.
Saat Anda mengatur /; kondisi untuk definisi, Anda sering perlu memasukkan variabel sementara.
Dalam banyak kasus, Anda mungkin ingin berbagi variabel sementara ini dengan isi sisi kanan definisi.
Mathematica memungkinkan Anda untuk menyertakan seluruh sisi kanan definisi Anda dalam sebuah
modul, termasuk kondisinya.
2.7.2 Konstanta Lokal
Dengan@ 8 x = x0 , y = y0, … <,
badan D tentukan konstanta lokal
x , y , … Mendefinisikan
konstanta lokal.
Modul memungkinkan Anda untuk mengatur variabel lokal, di mana Anda dapat menetapkan urutan
nilai apa pun. Seringkali, bagaimanapun, semua Anda yang benar-benar dibutuhkan adalah konstanta lokal,
yang Anda tetapkan nilainya hanya sekali.
Konstruk Mathematica With memungkinkan Anda untuk
mengatur konstanta lokal tersebut. Ini
mendefinisikan nilai global untuk t.
Dalam[1]:= t = 17
Keluar[1]= 17
Dicetak dari Mathematica Help Browser 3
© 1988-2003 Wolfram Research, Inc. Semua hak dilindungi undang-undang.
Ini mendefinisikan fungsi menggunakan t sebagai konstanta lokal.
Dalam[2]:= w[x_] := Dengan[{t = x + 1}, t + t^3] Ini
menggunakan definisi w.
Dalam[3]:= w[a]
Keluar[3]= 1 + a + H1 + aL3 t
masih memiliki nilai globalnya.
Dalam[4]:= t
Keluar[4]= 17
Sama seperti di Modul, nilai awal yang Anda definisikan di Dengan dievaluasi sebelum Dengan
dijalankan.
Ekspresi t + 1 yang memberikan nilai konstanta lokal t dievaluasi menggunakan t global.
Dalam[5]:= Dengan[{t = t + 1}, t^2]
Keluar[5]= 324
Cara kerja With[8x = x0, … <, body] adalah dengan mengambil body, dan mengganti setiap
kemunculan x, dst. di dalamnya dengan x0 , dst.
Anda dapat menganggap With sebagai generalisasi dari /. operator, cocok untuk aplikasi ke kode
Mathematica, bukan ekspresi
lainnya.
Ini menggantikan x dengan a.
Dalam[6]:= Dengan[{x = a}, x = 5]
Keluar[6]= 5
Setelah penggantian, tubuh With adalah a = 5, sehingga mendapatkan nilai global 5.
Dalam[7]:= a
Keluar[7]= 5
Ini menghapus nilai a.
Dalam[8]:= Hapus[a]
Dalam beberapa hal, Dengan seperti kasus khusus Modul, di mana setiap variabel lokal diberi nilai
tepat satu kali.
Salah satu alasan utama menggunakan With daripada Module adalah karena biasanya membuat
program Mathematica Anda menulis lebih mudah dipahami. Dalam modul, jika Anda melihat variabel lokal
x pada titik tertentu,
Anda berpotensi harus melacak melalui semua kode dalam modul untuk mengetahui nilai x pada saat itu.
Namun, dalam konstruksi
With, Anda dapat selalu cari tahu nilai konstanta lokal hanya dengan melihat daftar nilai awal, tanpa
harus menelusuri melalui kode tertentu.
Jika Anda memiliki beberapa konstruksi Dengan, selalu yang terdalam untuk variabel tertentu yang
berlaku. Kamu bisa campuran Modul dan Dengan. Aturan umumnya adalah bahwa variabel terdalam untuk
variabel
tertentu adalah variabel yang berlaku.
4 Dicetak dari Peramban Bantuan Mathematica
© 1988-2003 Wolfram Research, Inc. Semua hak dilindungi undang-undang.
Dengan konstruksi Dengan bersarang, yang terdalam selalu yang berlaku.
Dalam[9]:= Dengan[{t = 8}, Dengan[{t = 9}, t^2]]
Keluar[9]= 81
Anda dapat mencampur Modul dan Dengan konstruksi.
Dalam[10]:= Modul[{t = 8}, Dengan[{t = 9}, t^2]]
Keluar[10]= 81
Variabel lokal dalam konstruksi dalam tidak menutupi yang di luar kecuali jika namanya bertentangan.
Dalam[11]:= Dengan[{t = a}, Dengan[{u = b}, t + u]]
Keluar[11]= a + b
Kecuali untuk pertanyaan kapan x dan body dievaluasi, With[8x = x0 <, body] pada dasarnya bekerja
seperti body /. x -> x0 . Namun, With berperilaku dengan cara khusus ketika badan ekspresi itu sendiri berisi
konstruksi With atau Modul.
Masalah utamanya adalah untuk mencegah konstanta lokal di berbagai konstruksi With agar tidak
saling bertentangan, atau dengan objek global. Rincian bagaimana hal ini dilakukan dibahas dalam Bagian
2.7.3.
Y di dalam With diganti namanya untuk mencegah konflik dengan global y.
Dalam[12]:= Dengan[{x = 2 + y}, Tahan[Dengan[{y = 4}, x + y]]]
Keluar[12]= Tahan@Dengan@8y$ = 4<, H2 + yL + y$DD
2.7.3 Cara Kerja Modul
Cara kerja modul di Mathematica pada dasarnya sangat sederhana. Setiap kali modul apa pun
digunakan, simbol baru adalah dibuat untuk mewakili setiap variabel lokalnya. Simbol baru diberi nama unik
yang tidak boleh
bertentangan dengan apapun nama lain. Nama dibentuk dengan mengambil nama yang Anda tentukan untuk
variabel lokal, diikuti
oleh $, dengan unik
"nomor seri" ditambahkan.
Nomor seri ditemukan dari nilai variabel global $ModuleNumber. Variabel ini menghitung total berapa
kali Modul dalam bentuk apa pun telah digunakan.
Modul menghasilkan simbol dengan nama bentuk x $nnn untuk mewakili setiap variabel lokal.
Prinsip dasar modul di Mathematica.
Ini menunjukkan simbol yang dihasilkan untuk t dalam
modul. Dalam[1]:= Modul[{t}, Cetak[t]] t$1
Dicetak dari Mathematica Help Browser 5
© 1988-2003 Wolfram Research, Inc. Semua hak dilindungi undang-undang.
Simbolnya berbeda setiap kali modul apa pun
digunakan. Dalam[2]:= Modul[{t, u}, Cetak[t];
Cetak[u]] t$2 u$2
Untuk sebagian besar tujuan, Anda tidak perlu berurusan langsung dengan simbol aktual yang
dihasilkan di dalam modul. Namun, jika
misalnya Anda memulai dialog saat modul sedang dieksekusi, maka Anda akan melihat simbol-simbol
ini. Hal yang sama juga benar setiap kali Anda menggunakan fungsi seperti Trace untuk
melihat evaluasi modul. Anda melihat simbol yang dihasilkan di dalam modul saat
Anda menggunakan Trace.
Dalam[3]:= Jejak[ Modul[{t}, t = 3] ]
Keluar[3]= 8Modul@8t<, t = 3D, 8t$3 = 3, 3<, 3< Ini
memulai dialog di dalam modul.
Dalam[4]:= Modul[{t}, t = 6; Dialog[ ]]
Di dalam dialog, Anda melihat simbol yang dihasilkan untuk
2.7.5 Variabel Dummy dalam Matematika
Saat Anda membuat rumus matematika, Anda sering harus memperkenalkan berbagai jenis objek lokal
atau "boneka" variabel”. Anda dapat memperlakukan variabel dummy tersebut menggunakan modul dan
konstruksi
pelingkupan Mathematica lainnya.
Variabel integrasi adalah contoh umum dari variabel dummy dalam matematika. Saat Anda menulis
formal integral, notasi konvensional mengharuskan Anda untuk memperkenalkan variabel integrasi dengan
nama yang pasti. Variabel ini adalah dasarnya "lokal" untuk integral, dan namanya, meskipun sewenang-
wenang, tidak boleh bertentangan
dengan nama lain di Anda ekspresi
matematika.
Dalam banyak kasus, masalah yang paling penting adalah bahwa variabel dummy harus tetap lokal,
dan tidak boleh mengganggu variabel lain dalam ekspresi matematika Anda. Namun, dalam beberapa kasus,
yang lebih penting
adalah perbedaannya penggunaan variabel dummy yang sama tidak
boleh bertentangan.
Variabel dummy berulang sering muncul dalam produk vektor dan tensor. Dengan “konvensi
penjumlahan”, sembarang vektor atau indeks tensor yang muncul tepat dua kali dijumlahkan dengan semua
nilai yang mungkin.
Nama sebenarnya dari
indeks berulang tidak pernah penting, tetapi jika ada dua indeks berulang yang terpisah, penting agar
namanya tidak konflik.
Ada banyak situasi dalam matematika di mana Anda perlu memiliki variabel dengan nama yang unik.
Salah satu contohnya adalah di merepresentasikan solusi persamaan. Dengan persamaan seperti sin HxL =
0, ada banyak sekali solusi,
masing-masing dari bentuk x = n p, di mana n adalah variabel dummy yang dapat sama dengan sembarang
bilangan bulat. Jika Anda menghasilkan solusi persamaan pada dua kesempatan terpisah, tidak ada jaminan
bahwa nilai n harus sama dalam kedua kasus. Hasil dari,
Anda harus mengatur solusinya sehingga objek n berbeda setiap saat.
Tempat lain di mana objek unik diperlukan adalah dalam mewakili "konstanta integrasi". Saat Anda
mengerjakan integral, Anda secara efektif menyelesaikan persamaan untuk turunan. Secara umum, ada
banyak kemungkinan solusi untuk persamaan, berbeda dengan "konstanta integrasi" aditif. Fungsi Integral
Mathematica standar selalu mengembalikan solusi tanpa konstanta integrasi. Tetapi jika Anda ingin
memperkenalkan konstanta
integrasi, Anda perlu untuk menggunakan modul untuk memastikan bahwa
mereka selalu unik.
Seperti yang dijelaskan pada bagian di atas, variabel x dalam modul seperti Modul[8x<, body] selalu
diatur untuk merujuk ke simbol unik, berbeda setiap kali modul digunakan, dan berbeda dari simbol global
x. X dalam blok seperti Blok[8x<, body], bagaimanapun, dianggap sebagai simbol global x. Apa yang
dilakukan blok adalah membuat nilai x lokal. Nilai x saat Anda memasuki blok selalu dikembalikan saat
Anda keluar dari blok. Dan selama pelaksanaan blok, x dapat mengambil nilai apapun.
Ini menetapkan simbol t untuk memiliki nilai 17.
Dalam blok, variabel mempertahankan nama globalnya, tetapi dapat memiliki nilai lokal
Blok di Mathematica secara efektif memungkinkan Anda untuk mengatur "lingkungan" di mana Anda
dapat mengubah sementara nilai-nilai variabel. Ekspresi yang Anda evaluasi pada titik mana pun selama
eksekusi blok akan menggunakan nilai saat ini didefinisikan untuk variabel dalam blok. Ini benar apakah
ekspresi muncul secara langsung sebagai bagian dari tubuh blok, atau diproduksi pada titik mana pun dalam
evaluasinya.
Ini mendefinisikan nilai tertunda untuk simbol u
Penggunaan implisit penting Blok di Mathematica adalah untuk konstruksi iterasi seperti Do, Sum dan
Tabel. Mathematica secara efektif menggunakan Blok untuk mengatur nilai lokal untuk variabel iterasi di
semua konstruksi ini.
Saat Anda mengatur fungsi di Mathematica, terkadang nyaman untuk memiliki "variabel global" yang
dapat mempengaruhi fungsi tanpa diberikan secara eksplisit sebagai argumen. Jadi, misalnya, Mathematica
sendiri memiliki variabel global $RecursionLimit yang mempengaruhi evaluasi semua fungsi, tetapi tidak
pernah secara eksplisit diberikan sebagai argumen.
Mathematica biasanya akan menyimpan nilai apa pun yang Anda tetapkan untuk variabel global
sampai Anda mengubahnya secara eksplisit. Namun, sering kali, Anda ingin menyetel nilai yang hanya
bertahan selama durasi komputasi tertentu, atau bagian dari komputasi. Anda dapat melakukan ini dengan
membuat nilai lokal ke blok Mathematica.
Ini mendefinisikan fungsi yang tergantung pada "variabel global" t.
Dalam hal ini, nilai global t digunakan.
Anda dapat menggunakan variabel global tidak hanya untuk mengatur parameter dalam fungsi, tetapi
juga untuk mengumpulkan hasil dari fungsi. Oleh mengatur variabel tersebut menjadi lokal ke blok, Anda
dapat mengatur untuk mengumpulkan hasil hanya dari fungsi yang dipanggil selama pelaksanaan blok.
Fungsi ini menambah variabel global t, dan mengembalikan nilainya saat ini
Jika Anda tidak menggunakan blok, mengevaluasi h[a] akan mengubah nilai global t.
Saat Anda memasukkan blok seperti Blok[8x<, body], nilai apa pun untuk x akan dihapus. Ini berarti
Anda pada prinsipnya bisa memperlakukan x sebagai "variabel simbolik" di dalam blok. Namun, jika Anda
secara eksplisit mengembalikan x dari blok, itu akan menjadi digantikan oleh nilainya di luar blok segera
setelah dievaluasi.
Nilai t dihapus saat Anda memasuki blok.
Jika Anda mengembalikan ekspresi yang melibatkan t, bagaimanapun, itu dievaluasi menggunakan
nilai global untuk t
Sebagian besar bahasa komputer tradisional menggunakan apa yang disebut mekanisme "pelingkupan
leksikal" untuk variabel, yang analog dengan: mekanisme modul di Mathematica. Beberapa bahasa komputer
simbolis seperti LISP juga memungkinkan "dinamis" scoping”, analog dengan blok Mathematica.
Ketika pelingkupan leksikal digunakan, variabel diperlakukan sebagai lokal ke bagian tertentu dari
kode dalam suatu program. dalam dinamis pelingkupan, nilai-nilai variabel lokal ke bagian dari sejarah
eksekusi program.
Dalam bahasa yang dikompilasi seperti C dan Java, ada perbedaan yang sangat jelas antara "kode" dan
"riwayat eksekusi". Sifat simbolis Mathematica membuat perbedaan ini sedikit kurang jelas, karena "kode"
pada prinsipnya dapat dibangun secara dinamis selama eksekusi program.
Apa yang dilakukan Module[vars, body] adalah memperlakukan bentuk badan ekspresi pada saat
modul dijalankan sebagai "kode" dari program Mathematica. Kemudian ketika salah satu vars secara
eksplisit muncul dalam "kode" ini, itu dianggap lokal.
Block[vars, body] tidak melihat bentuk ekspresi body. Sebaliknya, selama evaluasi tubuh, blok
menggunakan nilai lokal untuk vars.
2.7.8 Konteks
Itu selalu merupakan ide yang baik untuk memberikan nama variabel dan fungsi yang sejelas
mungkin.
Kadang-kadang, bagaimanapun, nama-nama seperti itu mungkin menjadi sangat panjang.
Di Mathematica, Anda dapat menggunakan gagasan "konteks" untuk mengatur nama-nama simbol.
Konteks khususnya penting dalam paket Mathematica yang memperkenalkan simbol yang namanya tidak
boleh bertentangan dengan simbol lainnya. Jika Anda menulis paket Mathematica, atau menggunakan paket
canggih yang telah ditulis orang lain, maka Anda perlu tahu tentang konteks.
Ide dasarnya adalah bahwa nama lengkap dari setiap simbol dipecah menjadi dua bagian: konteks dan
nama pendek. Nama lengkapnya adalah ditulis sebagai context`short, di mana ` adalah karakter backquote
atau aksen kuburan (kode desimal ASCII 96), disebut "tanda konteks" di Mathematica.
Biasanya memiliki semua simbol yang menghubungkan topik tertentu dalam konteks tertentu. Jadi,
misalnya, simbol yang mewakili unit fisik mungkin memiliki konteks PhysicalUnits`. Simbol seperti itu
mungkin memiliki nama lengkap seperti PhysicalUnits`Joule atau PhysicalUnits`Mole.
Meskipun Anda selalu dapat merujuk ke simbol dengan nama lengkapnya, sering kali lebih mudah
menggunakan nama yang lebih pendek.
Pada titik tertentu dalam sesi Mathematica, selalu ada konteks saat ini $Context. Anda dapat merujuk
ke simbol yang dalam konteks ini hanya dengan memberikan nama pendek mereka.
Konteks di Mathematica bekerja seperti direktori file di banyak sistem operasi. Anda selalu dapat
menentukan file tertentu dengan memberikan nama lengkapnya, termasuk direktorinya. Tetapi pada titik
tertentu, biasanya ada arus direktori kerja, analog dengan konteks Mathematica saat ini. File yang ada di
direktori ini kemudian dapat ditentukan hanya dengan memberikan nama pendek mereka. Seperti direktori
di banyak sistem operasi, konteks di Mathematica bisa hierarkis. Jadi, misalnya, penuhnama simbol dapat
melibatkan urutan nama konteks, seperti pada nama c1 `c2`c3`
Saat Anda memulai sesi Mathematica, konteks default saat ini adalah Global`. Simbol yang Anda
perkenalkan akan biasanya dalam konteks ini. Namun, simbol bawaan seperti Pi berada dalam konteks
System`.
Agar Anda dapat dengan mudah mengakses tidak hanya simbol dalam konteks Global`, tetapi juga
dalam konteks seperti Sistem`, Mathematica mendukung gagasan jalur pencarian konteks. Pada setiap titik
dalam sesi Mathematica, ada keduanya konteks saat ini $Context, dan juga jalur pencarian konteks saat ini
$ContextPath. Ide dari jalur pencarian adalah untuk memungkinkan Anda mengetikkan nama pendek simbol,
lalu minta Mathematica mencari dalam urutan konteks untuk menemukan simbol dengan nama pendek itu.
Jalur pencarian konteks untuk simbol di Mathematica analog dengan "jalur pencarian" untuk file
program yang disediakan di sistem operasi seperti Unix dan MS-DOS.
Saat Anda menggunakan konteks dalam Mathematica, tidak ada alasan bahwa dua simbol yang berada
dalam konteks yang berbeda tidak dapat memiliki nama pendek yang sama. Jadi, misalnya, Anda dapat
memiliki simbol dengan nama pendek Mole keduanya dalam konteks Satuan Fisik` dan dalam konteks
Organisme Biologis`.
Namun, ada pertanyaan tentang simbol mana yang sebenarnya Anda dapatkan ketika Anda
mengetikkan hanya nama pendek Mole. Jawaban atas pertanyaan ini ditentukan oleh konteks mana yang
muncul lebih dulu dalam urutan konteks yang tercantum dalam jalur pencarian konteks.
Secara umum, saat Anda mengetikkan nama pendek untuk sebuah simbol, Mathematica
mengasumsikan bahwa Anda menginginkan simbol tersebut dengan itu nama yang konteksnya muncul
paling awal di jalur pencarian konteks. Akibatnya, simbol dengan nama pendek yang sama yang konteks
muncul kemudian dalam jalur pencarian konteks secara efektif "dibayangi". Untuk merujuk ke simbolsimbol
ini, Anda perlu menggunakan nama lengkap mereka.
Mathematica selalu memperingatkan Anda ketika Anda memperkenalkan simbol baru yang
"membayangi" simbol yang ada dengan Anda saat ini pilihan untuk $ContextPath. Jika Anda menggunakan
ujung depan notebook, Mathematica biasanya akan membiarkan Anda memilih dalam kasus seperti itu
simbol mana yang ingin Anda simpan.
Jika Anda pernah memperkenalkan simbol yang membayangi simbol yang ada, itu akan terus berlanjut
sampai Anda mengatur ulang $ContextPath, atau hapus simbol secara eksplisit. Anda harus menyadari
bahwa tidak cukup untuk menghapus nilai dari simbol; anda harus benar-benar menghapus simbol
sepenuhnya dari Mathematica. Anda dapat melakukan ini menggunakan fungsi Hapus [s].
Ketika Mathematica mencetak nama simbol, ia harus memilih apakah akan memberikan nama lengkap,
atau hanya nama pendek nama. Apa yang dilakukannya adalah memberikan versi nama apa pun yang harus
Anda ketik untuk mendapatkan simbol tertentu, mengingat pengaturan Anda saat ini untuk $Context dan
$ContextPath.
Jika Anda mengetikkan nama pendek yang tidak memiliki simbol baik dalam konteks saat ini, atau
dalam konteks apa pun pada konteks jalur pencarian, maka Mathematica harus membuat simbol baru dengan
nama ini. Itu selalu menempatkan simbol baru semacam ini di konteks saat ini, seperti yang ditentukan oleh
$Context.
Konflik dapat terjadi tidak hanya antara simbol dalam paket yang berbeda, tetapi juga antara simbol
dalam paket dan simbol yang Anda perkenalkan langsung di sesi Mathematica Anda. Jika Anda
mendefinisikan simbol dalam konteks Anda saat ini, maka inisimbol akan membayangi simbol lain dengan
nama pendek yang sama dalam paket yang Anda baca. Alasannya adalah karena Mathematica selalu mencari
simbol dalam konteks saat ini sebelum mencari dalam konteks di jalur pencarian konteks.
Mendefinisikan pesan penggunaan di awal paket adalah cara standar untuk memastikan bahwa simbol
yang Anda inginkan ekspor dibuat dalam konteks yang sesuai. Cara kerjanya adalah dalam mendefinisikan
pesan-pesan ini, satu-satunya simbol yang Anda sebutkan adalah yang ingin Anda ekspor. Simbol-simbol ini
kemudian dibuat dalam konteks Package`, yaitu lalu saat ini.
Dalam definisi sebenarnya dari fungsi dalam sebuah paket, biasanya ada banyak simbol baru, yang
diperkenalkan sebagai parameter, variabel sementara, dan sebagainya. Konvensinya adalah meletakkan
semua simbol ini dalam konteks Package`Private`, yang tidak diletakkan di jalur pencarian konteks saat paket
dibaca.
Dalam paket Collatz, fungsi yang ditentukan hanya bergantung pada fungsi Mathematica bawaan.
Akan tetapi, seringkali fungsi yang didefinisikan dalam satu paket mungkin bergantung pada fungsi yang
didefinisikan dalam paket lain.
Dua hal yang diperlukan untuk membuat ini bekerja. Pertama, paket lain harus dibaca, sehingga fungsi
yang dibutuhkan adalah didefinisikan. Dan kedua, jalur pencarian konteks harus menyertakan konteks tempat
fungsi-fungsi ini berada.
Anda dapat secara eksplisit memberi tahu Mathematica untuk membaca dalam sebuah paket kapan saja
menggunakan perintah <<konteks`. (Bagian 2.12.5 membahas masalah rumit terjemahan dari nama konteks
yang tidak tergantung sistem ke nama file yang bergantung pada sistem.)
Namun, seringkali Anda ingin mengaturnya sehingga paket tertentu hanya dapat dibaca jika
diperlukan. Perintah Needs["context`"] memberitahu Mathematica untuk membaca dalam sebuah paket jika
konteks yang terkait dengan paket tersebut belumdalam daftar $Packages.
Menjalankan fungsi seperti Begin yang memanipulasi konteks mengubah cara Mathematica
menginterpretasikan nama Anda ketik. Namun, Anda harus menyadari bahwa perubahan hanya efektif dalam
ekspresi berikutnya yang Anda ketik intinya adalah bahwa Mathematica selalu membaca dalam ekspresi
input yang lengkap, dan menafsirkan nama-nama di dalamnya, sebelum dieksekusi setiap bagian dari
ekspresi. Akibatnya, pada saat Begin dieksekusi dalam ekspresi tertentu, nama-nama dalam ekspresi telah
ditafsirkan, dan sudah terlambat untuk Mulai memiliki efek.
Fakta bahwa fungsi manipulasi konteks tidak berpengaruh sampai ekspresi lengkap berikutnya dibaca
dalam arti bahwa Anda harus yakin untuk memberikan fungsi-fungsi itu sebagai ekspresi terpisah, biasanya
pada baris terpisah, saat Anda menulis paket matematika.
Saat Anda menyiapkan koleksi besar paket Mathematica, sering kali merupakan ide yang baik untuk
membuat "nama" tambahan file” yang berisi urutan perintah DeclarePackage, menentukan paket yang akan
dimuat saat tertentu nama digunakan. Dalam sesi Mathematica tertentu, Anda kemudian perlu memuat secara
eksplisit hanya file nama. Kapan Anda telah melakukan ini, semua paket lain akan secara otomatis dimuat
jika dan ketika dibutuhkan.
DeclarePackage bekerja dengan segera membuat simbol dengan nama yang Anda tentukan, tetapi
memberikan masing-masing ini simbol atribut khusus Stub. Kapanpun Mathematica menemukan simbol
dengan atribut Stub, secara otomatis memuat paket yang sesuai dengan konteks simbol, dalam upaya
menemukan definisi simbol.
bagian dari ekspresi diganti ke dalam tubuh fungsi murni. Untuk keseragaman, bagaimanapun, Mathematica
masih mengganti nama parameter formal bahkan dalam kasus seperti itu.
In this case, the formal parameter x in the inner function shields the body of the function, so no renaming is needed.
Out[6]= Function@8x<, x + yD
Here are three nested functions.
In[8]:= %[a]
Seperti disebutkan dalam Bagian 2.2.5, fungsi murni dalam Mathematica seperti ekspresi l dalam
logika formal. Penggantian nama parameter formal memungkinkan fungsi murni Mathematica untuk
mereproduksi semua semantik ekspresi standar l dengan setia.
Function@ 8 x, … <, body D local parameters lhs −> rhs and lhs :> rhs local pattern names lhs = rhs and
lhs := rhs local pattern names
With@ 8 x = x0 , … <, body D local constants
Module@ 8 x, … <, body D local variables
Scoping constructs in Mathematica.
Mathematica renames the formal parameter of the pure function to avoid a conflict.
Out[9]= Function@8a$<, a$ + aD
Here the local constant in the inner With is renamed to avoid a conflict.
If you execute the module, however, the local variable is renamed again to make its name unique.
In[13]:= ReleaseHold[%]
Out[13]= y + y$1
In[2]:= p[s + 1]
0
Here is a definition with the integration variable specified as local to a module.
Since you have used a module, Mathematica automatically renames the integration variable to avoid a conflict.
In[4]:= pm[s + 1]
Dalam banyak kasus, masalah yang paling penting adalah bahwa variabel dummy harus tetap lokal,
dan tidak boleh mengganggu variabel lain dalam ekspresi matematika Anda. Namun, dalam beberapa kasus,
yang lebih penting adalah penggunaan yang berbeda dari variabel dummy yang sama tidak boleh
bertentangan.
Variabel dummy berulang sering muncul dalam produk vektor dan tensor. Dengan "konvensi
penjumlahan", setiap vektor atau indeks tensor yang muncul tepat dua kali dijumlahkan dengan semua nilai
yang mungkin. Nama sebenarnya dari indeks berulang tidak pernah menjadi masalah, tetapi jika ada dua
indeks berulang yang terpisah, adalah penting bahwa nama mereka tidak bertentangan. 2.7.6 Blok dan Nilai
Lokal
Modul di Mathematica memungkinkan Anda untuk memperlakukan nama variabel sebagai lokal.
Namun, terkadang Anda ingin nama menjadi global, tetapi nilainya lokal. Anda dapat melakukan ini di
Mathematica menggunakan Block.
In[1]:= x^2 + 3
Out[1]= 3 + x2
Out[2]= 3 + H1 + aL2
In[3]:= x
Out[3]= x
Seperti yang dijelaskan pada bagian di atas, variabel x dalam modul seperti Modul[8 x<, body] selalu
diatur untuk merujuk ke simbol unik, berbeda setiap kali modul digunakan, dan berbeda dari simbol global
x. Namun, x dalam blok seperti Blok[8 x<, body] dianggap sebagai simbol global x. Apa yang dilakukan
blok adalah membuat nilai x lokal. Nilai x saat Anda memasuki blok selalu dikembalikan saat Anda keluar
dari blok. Dan selama eksekusi blok, x dapat mengambil nilai apa pun.
In[4]:= t = 17
Out[4]= 17
t$1
In blocks, variables retain their global names, but can have local values.
Out[7]= 1297
When the execution of the block is over, the previous value of t is restored.
In[8]:= t
Out[8]= 17
Blok di Mathematica secara efektif memungkinkan Anda untuk mengatur "lingkungan" di mana Anda
dapat mengubah nilai variabel untuk sementara. Ekspresi yang Anda evaluasi pada titik mana pun selama
eksekusi blok akan menggunakan nilai yang saat ini ditentukan untuk variabel di blok. Ini benar apakah
ekspresi muncul secara langsung sebagai bagian dari tubuh blok, atau diproduksi pada titik mana pun dalam
evaluasinya.
In[10]:= u
Out[10]= 289 + x2
You can specify a temporary value for t to use inside the block.
In[1]:= m = i^2
Out[1]= i2
The local value for i in the block is used throughout the evaluation of i + m.
Out[2]= a + a2
Out[3]= a + i2
2.7.8 Konteks
Itu selalu merupakan ide yang baik untuk memberikan nama variabel dan fungsi yang sejelas mungkin.
Namun, kadang-kadang, nama-nama seperti itu bisa menjadi sangat panjang.
Di Mathematica, Anda dapat menggunakan gagasan "konteks" untuk mengatur nama-nama simbol.
Konteks sangat penting dalam paket Mathematica yang memperkenalkan simbol yang namanya tidak boleh
bertentangan dengan nama lainnya
simbol. Jika Anda menulis paket Mathematica, atau menggunakan paket canggih yang telah ditulis
orang lain, maka Anda perlu mengetahui tentang konteksnya.
Ide dasarnya adalah bahwa nama lengkap dari setiap simbol dipecah menjadi dua bagian: konteks dan
nama pendek. Nama lengkap ditulis sebagai context`short, di mana ` adalah karakter backquote atau aksen
kuburan (kode desimal ASCII 96), yang disebut "tanda konteks" dalam Mathematica.
In[1]:= aaaa`x
Out[1]= aaaa`x
You can use this symbol just like any other symbol.
In[2]:= %^2 - %
In[3]:= aaaa`x = 78
Out[3]= 78
In[7]:= a`b`x
Out[7]= a`b`x
In[1]:= <<Calculus`Pade`
In[2]:= $ContextPath
In[3]:= Context[Pade]
Out[3]= Calculus`Pade`
1 + –x–– + –x–– –
Out––––––––––––––––––––––1 − –2–––x–– + –x––3––––––2– −– –––3x––––03–––––––––––– + ––x–4–––– – –
[4]=
Jika Anda masuk ke situasi di mana simbol yang tidak diinginkan membayangi simbol yang Anda
inginkan, hal terbaik yang harus dilakukan biasanya adalah menyingkirkan simbol yang tidak diinginkan
menggunakan Hapus[s]. Alternatif yang terkadang tepat adalah dengan mengatur ulang entri di $ContextPath
dan mengatur ulang nilai $Context sehingga membuat konteks yang berisi simbol yang Anda inginkan
menjadi konteks yang dicari terlebih dahulu.
$Packages
a list of the contexts corresponding to all packages
loaded into your Mathematica session
2`
Contexts conventionally used in Mathematica packages.
Mendefinisikan pesan penggunaan di awal paket adalah cara standar untuk memastikan bahwa simbol
yang ingin Anda ekspor dibuat dalam konteks yang sesuai. Cara kerjanya adalah dalam mendefinisikan
pesan-pesan ini, satu-satunya simbol yang Anda sebutkan adalah simbol yang ingin Anda ekspor.
Simbolsimbol ini kemudian dibuat dalam konteks Package`, yang kemudian menjadi aktual.
Dalam definisi sebenarnya dari fungsi dalam sebuah paket, biasanya ada banyak simbol baru, yang
diperkenalkan sebagai parameter, variabel sementara, dan sebagainya. Konvensinya adalah meletakkan
semua simbol ini dalam konteks Package`Private`, yang tidak diletakkan di jalur pencarian konteks saat paket
dibaca.
In[1]:= <<Collatz.m
The EndPackage command in the package adds the context associated with the package to the context search path.
In[2]:= $ContextPath
In[3]:= Context[Collatz]
Out[3]= Collatz`
The parameter n is put in the private context Collatz`Private`.
In[4]:= ?Collatz`Private`*
Collatz`Private`n
This specifies that the symbols Div, Grad and Curl are defined in Calculus`VectorAnalysis`.
Out[1]= Calculus`VectorAnalysis`
When you first use Grad, Mathematica automatically loads the package that defines it.
Out[2]= 82 x, 2 y, 0<
In[1]:= x // InputForm
Out[1]//InputForm=
x
Out[2]//InputForm=
"x"
Out[3]//InputForm=
X
Setelah Anda membuat tugas seperti x = 2, maka setiap kali x dievaluasi, itu diganti dengan 2. Namun,
kadang-kadang, Anda mungkin ingin terus merujuk ke x itu sendiri, tanpa langsung mendapatkan nilai x.
Anda dapat melakukan ini dengan merujuk ke x dengan nama. Nama simbol x adalah string "x", dan
meskipun x itu sendiri dapat diganti dengan nilai, string "x" akan selalu tetap sama.
2.7.13 Topik Lanjutan: Mencegat Penciptaan Simbol Baru
Mathematica membuat simbol baru saat Anda pertama kali memasukkan nama tertentu. Terkadang
berguna untuk "mencegat" proses pembuatan simbol baru. Mathematica menyediakan beberapa cara untuk
melakukan ini
Mathematica now prints a message about each new symbol that it creates.
In[2]:= sin[k]
Out[2]= sin@kD
In[3]:= Off[General::newsym]
In[5]:= v + w
Out[5]= v + w
When Mathematica outputs a string, it usually does not explicitly show the quotes.
You can see the quotes, however, by asking for the input form of the string.
In[2]:= InputForm[%]
Out[2]//InputForm=
"This is a string."
The fact that Mathematica does not usually show explicit quotes around strings makes it possible for you to use strings to
specify quite directly the textual output you want.
Out[1]= aaaaaaabbbcccccccccc
In[2]:= StringLength[%]
Out[2]= 20
Out[3]= .gnirts A
Out[1]= True
In[2]:= RotateLeft[%, 3]
In[3]:= StringJoin[%]
Out[3]= tring.A s
Selain karakter biasa yang muncul pada papan ketik standar, Anda dapat menyertakan dalam string Mathematica karakter
You can manipulate this string just as you would any other.
In[2]:= StringReplace[%, " " -> " üü "]
Out[2]= α üü β üü …
In[3]:= Characters[%]
Dalam buku catatan Mathematica, karakter khusus seperti a selalu dapat ditampilkan secara langsung. Tetapi jika Anda
menggunakan antarmuka berbasis teks, maka biasanya satu-satunya karakter yang dapat dengan mudah ditampilkan adalah
karakter yang muncul di keyboard Anda.
Akibatnya, apa yang dilakukan Mathematica dalam situasi seperti itu adalah mencoba memperkirakan karakter khusus
dengan urutan karakter biasa yang tampak serupa. Dan ketika ini tidak praktis, Mathematica hanya memberikan nama lengkap
dari karakter khusus.
2.8.6 Topik Lanjutan: Baris Baru dan Tab dalam String
Second line.
In[2]:= InputForm[%]
Out[2]//InputForm=
beberapa baris. Mathematica secara default akan mengabaikan jeda tersebut, sehingga jika Anda kemudian mengeluarkan string,
string tersebut dapat dipatahkan dengan cara apa pun yang sesuai.
Mathematica ignores the line break and any tabs that follow it.
In[4]:= InputForm[%]
Out[4]//InputForm=
ToCharacterCode@" string "D give a list of the character codes for the characters in a string
FromCharacterCode@ n D construct a character from its character code
FromCharacterCode@ construct a string of characters from a list of character codes
8 n1 , n2 , … < D
This gives the character codes for the characters in the string.
In[1]:= ToCharacterCode["ABCD abcd"]
Out[1]= 865, 66, 67, 68, 32, 97, 98, 99, 100<
In[2]:= FromCharacterCode[%]
In[3]:= ToCharacterCode["α⊕Γû∅"]
Karakter khusus secara default ditulis menggunakan nama lengkap atau kode heksadesimal eksplisit.
"" a b c é <""
Ini memberitahu Mathematica untuk menggunakan pengkodean karakter mentah yang sesuai untuk
Keluar[3]= MacintoshRoman
Dalam[5]:= !!tmp
"" a b c é <""
Ini memberitahu Mathematica untuk tidak menggunakan penyandian mentah secara default.
Anda masih dapat secara eksplisit meminta penyandian mentah untuk digunakan dalam
Keluar[7]= a b c é <
Namun, beberapa pengkodean karakter mentah tidak menyertakan ASCII dasar sebagai
subset. Contohnya adalah "Simbol" encoding, di mana kode karakter yang biasanya
Ini memberikan kode karakter ASCII biasa untuk beberapa huruf bahasa
.
Inggris
Di[8]:= ToCharacterCode["abcdefgh"]
Dalam pengkodean "Simbol", kode karakter ini digunakan untuk huruf Yunani.
Di[9]:= FromCharacterCode[%, "Simbol"]
Keluar[9]=
Pengkodean matematika
ditentukan
Ini memberikan kode yang diberikan ke berbagai karakter oleh Mathematica. Masuk[10]:=
Berikut adalah kode yang ditetapkan untuk karakter yang sama dalam pengkodean roman
Keluar[1]= x2 + !y!!
Keluar[2]= x2 + !y!!
Dengan ujung depan notebook, Anda juga dapat memasukkan ekspresi secara langsung
Dalam[3]:= x2 + !!!
Keluar[3]= x2 + !y!!
Keluar[4]= x2 + !y!!
Sqrt[y] ]
Keluar[5]//OutputForm=
x^2 + Kotak[y]
Keluar[5]//OutputForm=
" 2 x +
kuadrat[y]"
] Keluar[6]//InputForm= x^2 +
Kotak[y]
FullForm menunjukkan bentuk internal dari sebuah ekspresi dalam notasi fungsional
eksplisit.
] Keluar[9]//TeXForm= x^2 +
{\sqrt{y}}
CForm menghasilkan output yang dapat dimasukkan dalam program C. Makro untuk
Keluar[10]//CForm=
Daya(x,2) + Kuadrat(y)
x**2 + kuadrat(y)
Bagian 2.9.17 akan membahas bagaimana Anda dapat membuat formulir keluaran Anda
sendiri. Namun Anda harus menyadari bahwa dalam berkomunikasi dengan program eksternal
seringkali lebih baik menggunakan MathLink untuk mengirim ekspresi secara langsung
Seperti segala sesuatu yang lain di Mathematica, bentuk tekstual dari ekspresi itu
sendiri dapat direpresentasikan sebagai ekspresi. Bentuk tekstual yang terdiri dari
urutan karakter satu dimensi dapat direpresentasikan secara langsung sebagai string
matematika biasa. Bentuk tekstual yang melibatkan subskrip, superskrip dan konstruksi
dua dimensi lainnya, bagaimanapun, dapat diwakili oleh kumpulan kotak dua dimensi
bersarang.
Ini menghasilkan string yang sesuai dengan representasi tekstual dari ekspresi di
InputForm.
"x^2 + y^3"
Dalam[3]:= Karakter[%]
Berikut adalah InputForm dari struktur kotak. Dalam bentuk ini struktur secara efektif
Keluar[5]//InputForm=
\(x\^2 + y\^3\)
Jika Anda menggunakan ujung depan buku catatan untuk Mathematica, maka Anda dapat
melihat ekspresi yang sesuai dengan bentuk tekstual setiap sel dengan menggunakan item
Berikut adalah representasi yang mendasari ekspresi itu dalam bentuk kotak, yang
Saat Anda menggunakan StandardForm di buku catatan Mathematica, Anda bisa memasukkan
langsung bentuk dua dimensi seperti x2 . Tetapi InputForm hanya mengizinkan bentuk
satu dimensi. Namun demikian, meskipun teks aktual yang Anda berikan di InputForm
harus satu dimensi, masih memungkinkan untuk membuatnya mewakili bentuk dua dimensi.
Jadi, misalnya, !î(xî^2î) mewakili bentuk dua dimensi x2 , dan ditafsirkan oleh
Keluar[7]= x2 + –1–––
kamu
Meskipun input yang diberikan berbeda, ekspresi yang diperoleh pada dua baris terakhir
sama persis.
Dalam[9]:= % == %%
Keluar[9]= Benar
Jika Anda menyalin bentuk dua dimensi dari Mathematica, biasanya diberikan dalam
bentuk !î( … ). Saat Anda menempelkan kembali formulir satu dimensi ini ke dalam buku
catatan Mathematica, formulir itu akan secara otomatis "terjepret" ke dalam bentuk dua
dimensi. Jika Anda cukup mengetik formulir !î( … ) ke dalam buku catatan, Anda bisa
membuatnya menjadi bentuk dua dimensi menggunakan item menu Make 2D.
Dalam StandardForm string yang sama akan berarti produk dari istilah.
Keluar[11]= 6f
2.9.5 Output Pendek dan Dangkal
Saat Anda menghasilkan ekspresi keluaran yang sangat besar di Mathematica, Anda sering
tidak ingin melihat seluruh ekspresi sekaligus. Sebaliknya, pertama-tama Anda ingin
mendapatkan gambaran tentang struktur umum ekspresi, dan kemudian, mungkin, masuk dan
Dalam[9]:= Dangkal[tr]
Keluar[9]//Dangkal=
Singkat memberi Anda garis besar yang kurang seragam, yang bisa lebih sulit untuk dipahami.
Dalam[10]:= Pendek[tr, 4]
Keluar[10]//Pendek=
Kutipan tidak termasuk dalam bentuk keluaran Mathematica standar. Dalam[1]:= "Ini adalah string."
Keluar[2]//InputForm=
Menggunakan string teks dan fungsi seperti StringForm, Anda dapat menghasilkan potongan output
yang tidak selalu sesuai dengan ekspresi Mathematica yang valid. Namun, terkadang Anda ingin
menghasilkan keluaran yang sesuai dengan ekspresi Mathematica yang valid, tetapi hanya selama ekspresi
tersebut tidak dievaluasi. Fungsi HoldForm mempertahankan argumennya tidak dievaluasi, tetapi
Dalam[12]:= HoldForm[x = 3]
Keluar[12]= x = 3
Di[13]:= HoldForm[34^78]
Keluar[13]= 3478
These numbers are given in the default output format. Large numbers are given in scientific notation.
Out[2]//ScientificForm=
84.9625 × 10−4, 9.04584 × 104, 4.06068 × 106<
This gives the numbers in engineering notation, with exponents arranged to be multiples of three.
In[3]:=
EngineeringForm[%]
Out[3]//EngineeringForm
=
8496.25 × 10−6, 90.4584 × 103, 4.06068 × 106<
In accounting form, negative numbers are given in parentheses, and scientific notation is never used.
Out[4]//AccountingForm
=
85.6, H6.7L, 10000000.<
Keluar[5]= 29809.099333446211666594024012
Ini hanya mencetak 10 digit p9 .
Keluar[6]//Bentuk Angka=
29809.09933
Keluar[7]//Formulir Teknik=
29.8090993334 × 103
Out[8]//NumberForm=
265,252,859,812,191,058,636,308,480,000,000
You can specify any string to use as a separator between blocks of digits.
Out[9]//NumberForm=
This gives an explicit plus sign for positive numbers, and uses |i n place of a decimal point.
Out[10]//NumberForm=
8+4»5, −6»8<
The default is to use scientific notation for all numbers with exponents outside the range -5 to 5.
This uses scientific notation only for numbers with exponents of 10 or more.
In[12]:= NumberForm[%, ExponentFunction -> (If[-10 < # < 10, Null, #]&)]
Out[12]//NumberForm=
832768., 19487171., 1.06045 × 1010<
Out[13]//NumberForm=
832.768 × 103, 19.4872 × 106, 10.6045 × 109<
This gives the exponents in Fortran-like “e” format.
Out[14]//NumberForm=
83.03305e7, 6.94852e17<
In[15]:= FortranForm[7.8^20]
Out[15]//FortranForm=
6.948515870862152e17
Anda dapat mengubah posisi angka dalam bentuk cetakan angka dengan "mengisi" dengan berbagai cara.
Anda dapat mengisi di sebelah kanan, biasanya menambahkan nol di suatu tempat setelah desimal.
Atau Anda dapat mengisi di sebelah kiri, biasanya menyisipkan spasi di tempat nol di depan.
This pads with spaces to make room for up to 7 digits in each integer.
Out[16]//PaddedForm=
8 456, 12345, 12<
Out[17]//PaddedForm=
456
12345
12
This prints each number with room for a total of 7 digits, and with 4 digits to the right of the decimal
point.
Out[18]//PaddedForm=
8 −6.7000, 6.8880, 7.0000<
In NumberForm, the 7 specifies the maximum precision, but does not make Mathematica pad with
spaces.
In[19]:= NumberForm[{-6.7, 6.888, 6.99999}, {7, 4}]
Out[19]//NumberForm=
8−6.7, 6.888, 7.<
If you set the option SignPadding-> True, Mathematica will insert leading spaces after the sign.
Out[20]//PaddedForm=
8− 6.7000, 6.8880, 7.0000<
Out[21]//PaddedForm=
6.70 × 108
48.70
−2.30 × 10−16
Out[22]//PaddedForm=
8 −6.7 , 6.888 , 7. <
In[23]:= BaseForm[2342424, 2]
Out[23]//BaseForm=
10001110111110000110002
In bases higher than 10, letters are used for the extra digits.
Out[24]//BaseForm= e71e57d16
In[25]:= BaseForm[2.3, 2]
Out[25]//BaseForm=
10.0100110011001100112
You can even use BaseForm for numbers printed in scientific notation.
Out[26]//BaseForm=
1.10110110101100001012 × 227
Keluar[1]= 8846, 2116, 97336<, 847, 2209, 103823<, 848, 2304, 110592<<
Keluar[2]//TableForm=
46 2116 97336
47 2209 103823
48 2304 110592
Dalam[3]:= Bentuk
Matriks[%] Keluar[3]//Bentuk
47 2209 103823 z
jz
j 48 2304 110592 z
k{
Keluar[4]//Bentuk
Matriks= ij x y x y2 x y3 yz
j22223zjxyxyxyzj
33233zkxyxyxy{
In[6]:= TableForm[fac]
Out[6]//TableForm=
3628800
1307674368000
2432902008176640000
Berikut adalah output ekspresi dalam gaya yang biasanya digunakan untuk judul bagian.
Out[7]//PaddedForm=
3628800
1307674368000
2432902008176640000
In this particular case, you could also align the numbers using the TableAlignments option.
Out[8]//TableForm=
3628800
1307674368000
2432902008176640000
This lines up the numbers, padding each one to have room for 8 digits, with 5 digits to the right of the
decimal point.
Out[9]//PaddedForm=
6.70000
6.88800
6.99999
You can use TableForm and MatrixFormt o format lists that are nested to any depth, corresponding to
arrays with any number of dimensions.
Out[10]//TableForm=
a@1, 1D a@1,
2D a@2, 1D a@2,
2D
Here is a 2 ä 2 ä 2 array.
Out[11]//TableForm=
a a@1, 2D
@1, 1D b@1, 1D b@1, 2D
a section headings.
Di[2]:= DisplayForm[%]
2.9.9 Styles and Keluar[2]//DisplayForm= a
Fonts in Output +b
In[1]:=
{x^2,
StyleForm[x^
2,
FontWeight-
>"Bold"]}
Out[1]=
8x2, x2<
Here is
an expression
output in the
style
normally
used for
In[12]:= TableForm[ { {Array[a, {2, 2}], Array[b, {2, 2}]}, {Array[c, {2, 2}], Array[d,
{2, 2}]} } ]
Out[12]//TableForm= a@1,
a@1, 2D b@1, 1D b@1, 2D
1D
a@2, a@2, 2D b@2, 1D b@2, 2D
1D
c@1, c@1, 2D d@1, 1D d@1, 2D
1D
c@2, c@2, 2D d@2, 1D d@2, 2D
1D
Ini menampilkan tiga string berturut-turut.
TampilanForm Keluar[3]//DisplayForm= a + b
Keluar[4]//Formulir Tampilan=
ai
Operator pada akhirnya menentukan struktur ekspresi yang dibentuk dari bagian input
tertentu. Bahasa Mathematica melibatkan beberapa kelas umum operator, dibedakan oleh
posisi yang berbeda di mana mereka muncul sehubungan dengan operan mereka.
Operator biasanya bekerja dengan mengambil operan dari posisi tertentu di sekitar mereka.
Tetapi ketika sebuah string berisi lebih banyak dari satu operator, hasilnya secara
umum dapat bergantung pada operator mana yang mengambil operandnya terlebih
dahulu. Jadi, misalnya, a*b+c berpotensi ditafsirkan sebagai (a*b)+c atau sebagai
a*(b+c) tergantung pada apakah * atau + mengambil operannya terlebih dahulu.
Dalam menangani output, Anda dapat membuat definisi untuk Format[expr] untuk
mengubah cara ekspresi tertentu akan diformat. Namun, Anda harus menyadari bahwa
segera setelah Anda melakukan ini, tidak ada jaminan bahwa formulir keluaran ekspresi
Anda akan ditafsirkan dengan benar jika diberikan sebagai input Mathematica. Jika Anda
mau, Mathematica memungkinkan Anda untuk mendefinisikan kembali aturan dasar yang
digunakannya untuk input dan output semua ekspresi. Anda bisa melakukan ini oleh
membuat definisi untuk MakeBox dan MakeExpression. Anda Sebaiknya menyadari,
Namun, bahwa kecuali Anda membuat definisi seperti itu dengan sangat hati-hati,
kemungkinan besar Anda akan mendapatkan hasil yang tidak konsisten.
Saat Anda memberikan definisi untuk MakeBox, Anda dapat menganggap ini sebagai versi
pemberian definisi tingkat rendah untuk Format. Perbedaan penting adalah bahwa
MakeBoxes tidak mengevaluasi argumennya, sehingga Anda dapat menentukan aturan
untuk memformat ekspresi tanpa khawatir tentang bagaimana ekspresi ini akan dievaluasi.
Selain itu, saat Format dipanggil kembali secara otomatis pada hasil apa pun yang diperoleh
dengan menerapkannya, hal yang sama tidak berlaku untuk MakeBox. Artinya, dalam
memberikan definisi untuk MakeBox Anda secara eksplisit harus memanggil MakeBox
lagi di subekspresi apa pun yang masih perlu diformat.
Fungsi yang dijelaskan sejauh ini di bagian ini menentukan bagaimana ekspresi harus
diformat saat dicetak, tetapi mereka tidak benar-benar menyebabkan apa pun untuk dicetak.
Dalam cara paling umum menggunakan Mathematica, Anda sebenarnya tidak pernah
secara eksplisit harus mengeluarkan perintah untuk menghasilkan keluaran. Biasanya,
Mathematica secara otomatis mencetak hasil akhir yang didapat dari pemrosesan input
yang Anda berikan. Namun, terkadang, Anda mungkin ingin Mathematica mencetak
ekspresi pada tahap menengah dalam operasinya. Anda dapat melakukan ini dengan
menggunakan fungsi Print.
Print hanya mengambil argumen yang Anda berikan, dan mencetaknya satu demi satu,
tanpa spasi di antaranya. Di dalam banyak kasus, Anda perlu mencetak output dalam format
yang lebih rumit. Anda dapat melakukan ini dengan memberikan formulir keluaran sebagai
argumen untuk Print
Mathematica biasanya bekerja dengan mengambil input apa pun yang Anda berikan, dan
kemudian memprosesnya. Namun, terkadang Anda mungkin ingin memiliki program
yang Anda tulis secara eksplisit meminta lebih banyak masukan.
Anda dapat melakukan ini menggunakan Input dan InputString.
Messages
Mathematica memiliki mekanisme umum untuk menangani pesan yang dihasilkan selama
perhitungan. Banyak built-in Mathematica Fungsi gunakan mekanisme ini untuk
menghasilkan pesan kesalahan dan peringatan. Anda juga dapat menggunakan mekanisme
untuk pesan Terkait dengan fungsi yang Anda tulis. Ide dasarnya adalah bahwa setiap pesan
memiliki nama yang pasti, dalam bentuk simbol::tag. Anda dapat menggunakan nama ini
untuk merujuk ke pesan. (The Object Symbol::tag memiliki kepala MessageName.)
Anda dapat menggunakan On dan Off untuk mengontrol pencetakan pesan tertentu. Pesan
terbanyak terkait dengan fungsi bawaan diaktifkan secara default. Anda dapat
menggunakan Off untuk mematikannya jika Anda tidak mau meihat mereka.
Meskipun sebagian besar pesan yang terkait dengan fungsi bawaan diaktifkan secara
default, ada beberapa yang dimatikan secara default, dan yang hanya akan Anda lihat jika
Anda mengaktifkannya secara eksplisit. Contohnya adalah pesan General::newssym
Pesan selalu disimpan sebagai string yang cocok untuk digunakan dengan StringForm.
Ketika pesan dicetak, yang sesuai ekspresi adalah "disambung" ke dalamnya. Ekspresi
dibungkus dengan HoldForm untuk mencegah evaluasi.
Tambahan, fungsi apa pun yang ditetapkan sebagai nilai variabel global
$MessagePrePrint diterapkan ke hasil ekspresi sebelum diberikan ke StringForm.
Default untuk $MessagePrePrint adalah Short
Jika Anda memberikan jumlah argumen yang salah ke fungsi F, Mathematica akan
memperingatkan Anda dengan mencetak pesan seperti: F::argx. Jika Mathematica tidak
dapat menemukan pesan bernama F::argx, itu akan menggunakan teks dari pesan "umum"
General::argx sebagai gantinya. Anda dapat menggunakan Off[F::argx] untuk
menonaktifkan pesan jumlah argumen khusus untuk fungsi F. Anda juga dapat
menggunakan Off[General::argx] untuk menonaktifkan semua pesan yang
menggunakan teks general pesan.
Jika ada yang salah dengan perhitungan yang Anda lakukan, biasanya pesan peringatan
yang sama adalah dihasilkan berulang-ulang. Ini biasanya lebih membingungkan daripada
berguna. Akibatnya, Mathematica melacak semua pesan yang dihasilkan selama
perhitungan tertentu, dan berhenti mencetak pesan tertentu jika muncul lebih banyak dari
tiga kali. Kapan pun ini terjadi, Mathematica mencetak pesan General::stop untuk
memberi tahu Anda. Jika kamu benar-benar ingin melihat semua pesan yang Mathematica
coba cetak, Anda dapat melakukannya dengan mematikan General::stop.
Check[expr, failexpr] tes untuk semua pesan yang benar-benar dicetak. Itu tidak menguji
pesan yang outputnya telah ditekan menggunakan Off.
Dengan menggunakan fungsi Pesan, Anda dapat meniru semua aspek fungsi Mathematica
bawaan menghasilkan pesan. Misalnya, Anda dapat mengaktifkan dan menonaktifkan
pesan menggunakan On dan Off, dan Pesan akan otomatis mencari General::tag
jika tidak menemukan pesan spesifik s::tag
International Messages
The standard set of messages for built-in Mathematica functions are written in American
English. In some versions of Mathematica, messages are also available in other languages.
In addition, if you set up messages yourself, you can give ones in other languages. Languages
in Mathematica are conventionally specified by strings. The languages are given in
English, in order to avoid the possibility of needing special characters. Thus, for example,
the French language is specified in Mathematica as "French".
Ketika fungsi Mathematica built-in menghasilkan pesan, mereka pertama-tama mencari
pesan dalam bentuk s::t::Language, di bahasa yang ditentukan oleh $Language. Jika
mereka gagal menemukan pesan seperti itu, maka mereka menggunakan formulir s::t tanpa
spesifikasi bahasa yang eksplisit
Prosedur yang digunakan oleh fungsi bawaan juga akan diikuti oleh fungsi yang Anda
tentukan jika Anda memanggil Message dengan nama pesan dalam bentuk s::t. Namun,
jika Anda memberikan bahasa eksplisit dalam nama pesan, hanya bahasa tersebut yang
akan digunakan.
Konstruksi Dokumentasi
Saat Anda menulis program di Mathematica, ada berbagai cara untuk mendokumentasikan
kode Anda. Seperti biasa, sejauh ini yang terbaik masalahnya adalah menulis kode yang
jelas, dan memberi nama objek yang Anda definisikan sejelas mungkin.
Namun, terkadang Anda mungkin ingin menambahkan beberapa "teks komentar" ke kode
Anda, untuk membuatnya lebih mudah dipahami. Anda dapat menambahkan teks seperti itu
kapan saja dalam kode Anda hanya dengan melampirkannya pada pencocokan (* dan *).
Perhatikan bahwa dalam Mathematica, "komentar" yang diapit (* dan *) dapat disarangkan
dengan cara apa pun
Saat Anda mendefinisikan fungsi f, Anda biasanya dapat menampilkan nilainya menggunakan ?f.
Namun, jika Anda memberikan pesan penggunaan untuk f, lalu ?f hanya memberikan pesan penggunaan.
Hanya ketika Anda mengetik ??f Anda mendapatkan semua detail tentang f, termasuk yang sebenarnya
definisi.
Fungsi seperti Plot dan ListPlot semuanya bekerja dengan membangun grafik
Mathematica objek, dan kemudian menampilkannya
Anda dapat membuat jenis gambar grafis lain di Mathematica dengan membangun objek
grafik Anda sendiri. Sejak objek grafik di Mathematica hanyalah ekspresi simbolis, Anda
dapat menggunakan semua fungsi Mathematica standar untuk memanipulasi mereka.
Setelah Anda membuat objek grafis, Anda harus menampilkannya. Fungsi Show
memungkinkan Anda untuk menampilkan apapun objek grafik Mathematica.
Diberikan daftar tertentu dari grafik primitif, Mathematica menyediakan dua mekanisme
dasar untuk memodifikasi final bentuk grafik yang Anda dapatkan. Pertama, Anda dapat
memasukkan ke dalam daftar grafik primitif graphic directives tertentu, seperti
RGBColor, yang memodifikasi elemen grafis berikutnya dalam daftar. Dengan cara ini,
Anda dapat menentukan bagaimana set elemen grafis harus diberikan.
Anda dapat menentukan opsi grafik di Show. Akibatnya, mudah untuk mengambil satu
objek grafik, dan menunjukkannya dengan banyak pilihan pilihan grafis yang berbeda.
Namun perhatikan bahwa Show selalu mengembalikan objek grafis yang telah
ditampilkannya. Jika Anda menentukan opsi grafik di Show, lalu opsi ini secara otomatis
dimasukkan ke dalam objek grafik yang ditampilkan kembali. Akibatnya, jika Anda
menelepon Show lagi pada objek yang sama, opsi grafik yang sama akan digunakan,
kecuali jika Anda secara eksplisit menentukan yang lain. Catatan bahwa dalam semua
kasus, opsi baru yang Anda tentukan akan menimpa yang sudah ada.
Beberapa opsi grafik bekerja dengan mengharuskan Anda menentukan nilai tertentu untuk
parameter yang terkait dengan bagian grafik. Opsi lain memungkinkan Anda untuk
memberikan pengaturan Automatic, yang membuat Mathematica menggunakan
algoritme internal untuk memilih nilai yang sesuai untuk parameter. Dalam kasus seperti
itu, Anda dapat mengetahui nilai yang sebenarnya digunakan Mathematica oleh
menerapkan fungsi AbsoluteOptions.
Saat Anda menggunakan opsi grafik seperti Axes, Mathematica secara efektif harus
membuat daftar elemen grafik untuk mewakili objek seperti sumbu yang Anda minta.
Biasanya Mathematica tidak secara eksplisit mengembalikan daftar itu konstruksi dengan
cara ini. Namun, terkadang Anda mungkin merasa berguna untuk mendapatkan daftar ini.
Fungsi FullGraphics memberikan daftar lengkap grafik primitif yang diperlukan untuk
menghasilkan plot tertentu, tanpa opsi apa pun yang digunakan.
Dengan pengaturan opsi default, fungsi seperti Plot dan Show sebenarnya menyebabkan
Mathematica menghasilkan grafik keluaran. Secara umum, generasi sebenarnya dari output
grafis dikendalikan oleh opsi grafis DisplayFunction. Pengaturan default untuk opsi
ini adalah nilai variabel global $DisplayFunction. Dalam kebanyakan kasus,
$DisplayFunction dan opsi DisplayFunction disetel untuk menggunakan rendering
tingkat rendah function Tampilan untuk menghasilkan output, mungkin setelah beberapa
pra pemrosesan. Namun, terkadang Anda mungkin ingin mendapatkan berfungsi seperti
Plot untuk menghasilkan objek grafik, tetapi Anda mungkin tidak segera menginginkan
objek grafik itu sebenarnya dirender sebagai keluaran. Anda dapat memberi tahu
Mathematica untuk menghasilkan objek, tetapi tidak merendernya, dengan menyetel opsi
Display Function -> Identity.
Mathematica menyediakan berbagai macam arahan grafis. Satu set penting adalah untuk
menentukan warna elemen grafis. Bahkan jika Anda memiliki perangkat layar hitam-putih,
Anda masih dapat memberikan arahan grafis berwarna. Itu warna yang Anda tentukan akan
dikonversi ke tingkat abu-abu pada langkah terakhir dalam proses rendering grafis.
Perhatikan bahwa Anda bisa dapatkan tampilan tingkat abu-abu bahkan pada perangkat
berwarna dengan menyetel opsi ColorOutput -> GrayLevel.
Fungsi Hue[h] menyediakan cara mudah untuk menentukan rentang warna hanya
dengan menggunakan satu parameter. Karena h bervariasi dari 0 hingga 1, Hue[h] melewati
warna merah, kuning, hijau, cyan, biru, magenta, dan kembali ke merah lagi. Warna[h, s, b]
memungkinkan Anda untuk menentukan tidak hanya "rona", tetapi juga "saturasi" dan
"kecerahan" warna. Mengambil satu-tion menjadi sama dengan satu memberikan warna
terdalam; penurunan saturasi menuju nol mengarah ke semakin banyak warna-warna yang
“terhapus”. Untuk sebagian besar tujuan, Anda akan dapat menentukan warna yang Anda
butuhkan hanya dengan memberikan RGBColor atau Hue yang sesuai arahan. Namun, jika
Anda membutuhkan warna yang sangat presisi atau berulang, terutama untuk pencetakan
berwarna, ada beberapa: kehalusan yang muncul. Saat Anda memberikan arahan grafis
seperti RGBColor, itu memengaruhi semua elemen grafis berikutnya yang muncul di a
daftar tertentu. Mathematica juga mendukung berbagai arahan grafik yang hanya
memengaruhi jenis grafik tertentu elemen. Arahan grafis PointSize[d] menetapkan
bahwa semua elemen Titik yang muncul dalam objek grafis harus digambarkan sebagai
lingkaran dengan diameter d. Di PointSize, diameter d diukur sebagai sebagian kecil dari
lebar keseluruhan Anda merencanakan. Mathematica juga menyediakan direktif grafis
AbsolutePointSize[d], yang memungkinkan Anda untuk menentukan diameter titik
"mutlak", diukur dalam satuan tetap. Satuannya adalah 1 ÅÅÅÅÅÅÅ 72 inci, kira-kira poin
printer.
Arahan grafis Dashing memungkinkan Anda untuk membuat garis dengan berbagai
jenis dashing. Ide dasarnya adalah untuk menghancurkan garis menjadi segmen-segmen yang
ditarik dan dihilangkan secara bergantian. Dengan mengubah panjang segmen, Anda bisa
mendapatkan gaya garis yang berbeda. Dashing memungkinkan Anda untuk menentukan
urutan panjang segmen. Urutan ini diulang sebanyak kali seperlunya dalam menggambar
seluruh garis.
Salah satu cara untuk menggunakan direktif grafik Mathematica adalah dengan
memasukkannya langsung ke dalam daftar grafik primitif yang digunakan oleh objek grafis.
Namun, terkadang Anda ingin arahan grafis diterapkan lebih global, dan
misalnya untuk menentukan "gaya" keseluruhan yang dengannya jenis elemen grafis tertentu
harus dirender. Ada biasanya opsi grafik yang dapat diatur untuk menentukan gaya seperti
itu dalam hal daftar arahan grafik.
Operator pada akhirnya menentukan struktur ekspresi yang dibentuk dari bagian input
tertentu. Bahasa Mathematica melibatkan beberapa kelas umum operator, dibedakan oleh
posisi yang berbeda di mana mereka muncul sehubungan dengan operan mereka.
Operator biasanya bekerja dengan mengambil operan dari posisi tertentu di sekitar mereka.
Tetapi ketika sebuah string berisi lebih banyak dari satu operator, hasilnya secara
umum dapat bergantung pada operator mana yang mengambil operandnya terlebih
dahulu. Jadi, misalnya, a*b+c berpotensi ditafsirkan sebagai (a*b)+c atau sebagai
a*(b+c) tergantung pada apakah * atau + mengambil operannya terlebih dahulu.
Dalam menangani output, Anda dapat membuat definisi untuk Format[expr] untuk
mengubah cara ekspresi tertentu akan diformat. Namun, Anda harus menyadari bahwa
segera setelah Anda melakukan ini, tidak ada jaminan bahwa formulir keluaran ekspresi
Anda akan ditafsirkan dengan benar jika diberikan sebagai input Mathematica. Jika Anda
mau, Mathematica memungkinkan Anda untuk mendefinisikan kembali aturan dasar yang
digunakannya untuk input dan output semua ekspresi. Anda bisa melakukan ini oleh
membuat definisi untuk MakeBox dan MakeExpression. Anda Sebaiknya menyadari,
Namun, bahwa kecuali Anda membuat definisi seperti itu dengan sangat hati-hati,
kemungkinan besar Anda akan mendapatkan hasil yang tidak konsisten.
Saat Anda memberikan definisi untuk MakeBox, Anda dapat menganggap ini sebagai versi
pemberian definisi tingkat rendah untuk Format. Perbedaan penting adalah bahwa
MakeBoxes tidak mengevaluasi argumennya, sehingga Anda dapat menentukan aturan
untuk memformat ekspresi tanpa khawatir tentang bagaimana ekspresi ini akan dievaluasi.
Selain itu, saat Format dipanggil kembali secara otomatis pada hasil apa pun yang diperoleh
dengan menerapkannya, hal yang sama tidak berlaku untuk MakeBox. Artinya, dalam
memberikan definisi untuk MakeBox Anda secara eksplisit harus memanggil MakeBox
lagi di subekspresi apa pun yang masih perlu diformat.
Fungsi yang dijelaskan sejauh ini di bagian ini menentukan bagaimana ekspresi harus
diformat saat dicetak, tetapi mereka tidak benar-benar menyebabkan apa pun untuk dicetak.
Dalam cara paling umum menggunakan Mathematica, Anda sebenarnya tidak pernah
secara eksplisit harus mengeluarkan perintah untuk menghasilkan keluaran. Biasanya,
Mathematica secara otomatis mencetak hasil akhir yang didapat dari pemrosesan input
yang Anda berikan. Namun, terkadang, Anda mungkin ingin Mathematica mencetak
ekspresi pada tahap menengah dalam operasinya. Anda dapat melakukan ini dengan
menggunakan fungsi Print.
Print hanya mengambil argumen yang Anda berikan, dan mencetaknya satu demi satu,
tanpa spasi di antaranya. Di dalam banyak kasus, Anda perlu mencetak output dalam format
yang lebih rumit. Anda dapat melakukan ini dengan memberikan formulir keluaran sebagai
argumen untuk Print
Mathematica biasanya bekerja dengan mengambil input apa pun yang Anda berikan, dan
kemudian memprosesnya. Namun, terkadang Anda mungkin ingin memiliki program
yang Anda tulis secara eksplisit meminta lebih banyak masukan.
Anda dapat melakukan ini menggunakan Input dan InputString.
Messages
Mathematica memiliki mekanisme umum untuk menangani pesan yang dihasilkan selama
perhitungan. Banyak built-in Mathematica Fungsi gunakan mekanisme ini untuk
menghasilkan pesan kesalahan dan peringatan. Anda juga dapat menggunakan mekanisme
untuk pesan Terkait dengan fungsi yang Anda tulis. Ide dasarnya adalah bahwa setiap pesan
memiliki nama yang pasti, dalam bentuk simbol::tag. Anda dapat menggunakan nama ini
untuk merujuk ke pesan. (The Object Symbol::tag memiliki kepala MessageName.)
Anda dapat menggunakan On dan Off untuk mengontrol pencetakan pesan tertentu. Pesan
terbanyak terkait dengan fungsi bawaan diaktifkan secara default. Anda dapat
menggunakan Off untuk mematikannya jika Anda tidak mau meihat mereka.
Meskipun sebagian besar pesan yang terkait dengan fungsi bawaan diaktifkan secara
default, ada beberapa yang dimatikan secara default, dan yang hanya akan Anda lihat jika
Anda mengaktifkannya secara eksplisit. Contohnya adalah pesan General::newssym
Pesan selalu disimpan sebagai string yang cocok untuk digunakan dengan StringForm.
Ketika pesan dicetak, yang sesuai ekspresi adalah "disambung" ke dalamnya. Ekspresi
dibungkus dengan HoldForm untuk mencegah evaluasi.
Tambahan, fungsi apa pun yang ditetapkan sebagai nilai variabel global
$MessagePrePrint diterapkan ke hasil ekspresi sebelum diberikan ke StringForm.
Default untuk $MessagePrePrint adalah Short
Jika Anda memberikan jumlah argumen yang salah ke fungsi F, Mathematica akan
memperingatkan Anda dengan mencetak pesan seperti: F::argx. Jika Mathematica tidak
dapat menemukan pesan bernama F::argx, itu akan menggunakan teks dari pesan "umum"
General::argx sebagai gantinya. Anda dapat menggunakan Off[F::argx] untuk
menonaktifkan pesan jumlah argumen khusus untuk fungsi F. Anda juga dapat
menggunakan Off[General::argx] untuk menonaktifkan semua pesan yang
menggunakan teks general pesan.
Jika ada yang salah dengan perhitungan yang Anda lakukan, biasanya pesan peringatan
yang sama adalah dihasilkan berulang-ulang. Ini biasanya lebih membingungkan daripada
berguna. Akibatnya, Mathematica melacak semua pesan yang dihasilkan selama
perhitungan tertentu, dan berhenti mencetak pesan tertentu jika muncul lebih banyak dari
tiga kali. Kapan pun ini terjadi, Mathematica mencetak pesan General::stop untuk
memberi tahu Anda. Jika kamu benar-benar ingin melihat semua pesan yang Mathematica
coba cetak, Anda dapat melakukannya dengan mematikan General::stop.
Check[expr, failexpr] tes untuk semua pesan yang benar-benar dicetak. Itu tidak menguji
pesan yang outputnya telah ditekan menggunakan Off.
Dengan menggunakan fungsi Pesan, Anda dapat meniru semua aspek fungsi Mathematica
bawaan menghasilkan pesan. Misalnya, Anda dapat mengaktifkan dan menonaktifkan
pesan menggunakan On dan Off, dan Pesan akan otomatis mencari General::tag
jika tidak menemukan pesan spesifik s::tag
International Messages
The standard set of messages for built-in Mathematica functions are written in American
English. In some versions of Mathematica, messages are also available in other languages.
In addition, if you set up messages yourself, you can give ones in other languages. Languages
in Mathematica are conventionally specified by strings. The languages are given in
English, in order to avoid the possibility of needing special characters. Thus, for example,
the French language is specified in Mathematica as "French".
Ketika fungsi Mathematica built-in menghasilkan pesan, mereka pertama-tama mencari
pesan dalam bentuk s::t::Language, di bahasa yang ditentukan oleh $Language. Jika
mereka gagal menemukan pesan seperti itu, maka mereka menggunakan formulir s::t tanpa
spesifikasi bahasa yang eksplisit
Prosedur yang digunakan oleh fungsi bawaan juga akan diikuti oleh fungsi yang Anda
tentukan jika Anda memanggil Message dengan nama pesan dalam bentuk s::t. Namun,
jika Anda memberikan bahasa eksplisit dalam nama pesan, hanya bahasa tersebut yang
akan digunakan.
Konstruksi Dokumentasi
Saat Anda menulis program di Mathematica, ada berbagai cara untuk mendokumentasikan
kode Anda. Seperti biasa, sejauh ini yang terbaik masalahnya adalah menulis kode yang
jelas, dan memberi nama objek yang Anda definisikan sejelas mungkin.
Namun, terkadang Anda mungkin ingin menambahkan beberapa "teks komentar" ke kode
Anda, untuk membuatnya lebih mudah dipahami. Anda dapat menambahkan teks seperti itu
kapan saja dalam kode Anda hanya dengan melampirkannya pada pencocokan (* dan *).
Perhatikan bahwa dalam Mathematica, "komentar" yang diapit (* dan *) dapat disarangkan
dengan cara apa pun
Saat Anda mendefinisikan fungsi f, Anda biasanya dapat menampilkan nilainya menggunakan ?f.
Namun, jika Anda memberikan pesan penggunaan untuk f, lalu ?f hanya memberikan pesan penggunaan.
Hanya ketika Anda mengetik ??f Anda mendapatkan semua detail tentang f, termasuk yang sebenarnya
definisi.
Fungsi seperti Plot dan ListPlot semuanya bekerja dengan membangun grafik
Mathematica objek, dan kemudian menampilkannya
Anda dapat membuat jenis gambar grafis lain di Mathematica dengan membangun objek
grafik Anda sendiri. Sejak objek grafik di Mathematica hanyalah ekspresi simbolis, Anda
dapat menggunakan semua fungsi Mathematica standar untuk memanipulasi mereka.
Setelah Anda membuat objek grafis, Anda harus menampilkannya. Fungsi Show
memungkinkan Anda untuk menampilkan apapun objek grafik Mathematica.
Diberikan daftar tertentu dari grafik primitif, Mathematica menyediakan dua mekanisme
dasar untuk memodifikasi final bentuk grafik yang Anda dapatkan. Pertama, Anda dapat
memasukkan ke dalam daftar grafik primitif graphic directives tertentu, seperti
RGBColor, yang memodifikasi elemen grafis berikutnya dalam daftar. Dengan cara ini,
Anda dapat menentukan bagaimana set elemen grafis harus diberikan.
Anda dapat menentukan opsi grafik di Show. Akibatnya, mudah untuk mengambil satu
objek grafik, dan menunjukkannya dengan banyak pilihan pilihan grafis yang berbeda.
Namun perhatikan bahwa Show selalu mengembalikan objek grafis yang telah
ditampilkannya. Jika Anda menentukan opsi grafik di Show, lalu opsi ini secara otomatis
dimasukkan ke dalam objek grafik yang ditampilkan kembali. Akibatnya, jika Anda
menelepon Show lagi pada objek yang sama, opsi grafik yang sama akan digunakan,
kecuali jika Anda secara eksplisit menentukan yang lain. Catatan bahwa dalam semua
kasus, opsi baru yang Anda tentukan akan menimpa yang sudah ada.
Beberapa opsi grafik bekerja dengan mengharuskan Anda menentukan nilai tertentu untuk
parameter yang terkait dengan bagian grafik. Opsi lain memungkinkan Anda untuk
memberikan pengaturan Automatic, yang membuat Mathematica menggunakan
algoritme internal untuk memilih nilai yang sesuai untuk parameter. Dalam kasus seperti
itu, Anda dapat mengetahui nilai yang sebenarnya digunakan Mathematica oleh
menerapkan fungsi AbsoluteOptions.
Saat Anda menggunakan opsi grafik seperti Axes, Mathematica secara efektif harus
membuat daftar elemen grafik untuk mewakili objek seperti sumbu yang Anda minta.
Biasanya Mathematica tidak secara eksplisit mengembalikan daftar itu konstruksi dengan
cara ini. Namun, terkadang Anda mungkin merasa berguna untuk mendapatkan daftar ini.
Fungsi FullGraphics memberikan daftar lengkap grafik primitif yang diperlukan untuk
menghasilkan plot tertentu, tanpa opsi apa pun yang digunakan.
Dengan pengaturan opsi default, fungsi seperti Plot dan Show sebenarnya menyebabkan
Mathematica menghasilkan grafik keluaran. Secara umum, generasi sebenarnya dari output
grafis dikendalikan oleh opsi grafis DisplayFunction. Pengaturan default untuk opsi
ini adalah nilai variabel global $DisplayFunction. Dalam kebanyakan kasus,
$DisplayFunction dan opsi DisplayFunction disetel untuk menggunakan rendering
tingkat rendah function Tampilan untuk menghasilkan output, mungkin setelah beberapa
pra pemrosesan. Namun, terkadang Anda mungkin ingin mendapatkan berfungsi seperti
Plot untuk menghasilkan objek grafik, tetapi Anda mungkin tidak segera menginginkan
objek grafik itu sebenarnya dirender sebagai keluaran. Anda dapat memberi tahu
Mathematica untuk menghasilkan objek, tetapi tidak merendernya, dengan menyetel opsi
Display Function -> Identity.
Mathematica menyediakan berbagai macam arahan grafis. Satu set penting adalah untuk
menentukan warna elemen grafis. Bahkan jika Anda memiliki perangkat layar hitam-putih,
Anda masih dapat memberikan arahan grafis berwarna. Itu warna yang Anda tentukan akan
dikonversi ke tingkat abu-abu pada langkah terakhir dalam proses rendering grafis.
Perhatikan bahwa Anda bisa dapatkan tampilan tingkat abu-abu bahkan pada perangkat
berwarna dengan menyetel opsi ColorOutput -> GrayLevel.
Fungsi Hue[h] menyediakan cara mudah untuk menentukan rentang warna hanya
dengan menggunakan satu parameter. Karena h bervariasi dari 0 hingga 1, Hue[h] melewati
warna merah, kuning, hijau, cyan, biru, magenta, dan kembali ke merah lagi. Warna[h, s, b]
memungkinkan Anda untuk menentukan tidak hanya "rona", tetapi juga "saturasi" dan
"kecerahan" warna. Mengambil satu-tion menjadi sama dengan satu memberikan warna
terdalam; penurunan saturasi menuju nol mengarah ke semakin banyak warna-warna yang
“terhapus”. Untuk sebagian besar tujuan, Anda akan dapat menentukan warna yang Anda
butuhkan hanya dengan memberikan RGBColor atau Hue yang sesuai arahan. Namun, jika
Anda membutuhkan warna yang sangat presisi atau berulang, terutama untuk pencetakan
berwarna, ada beberapa: kehalusan yang muncul. Saat Anda memberikan arahan grafis
seperti RGBColor, itu memengaruhi semua elemen grafis berikutnya yang muncul di a
daftar tertentu. Mathematica juga mendukung berbagai arahan grafik yang hanya
memengaruhi jenis grafik tertentu elemen. Arahan grafis PointSize[d] menetapkan
bahwa semua elemen Titik yang muncul dalam objek grafis harus digambarkan sebagai
lingkaran dengan diameter d. Di PointSize, diameter d diukur sebagai sebagian kecil dari
lebar keseluruhan Anda merencanakan. Mathematica juga menyediakan direktif grafis
AbsolutePointSize[d], yang memungkinkan Anda untuk menentukan diameter titik
"mutlak", diukur dalam satuan tetap. Satuannya adalah 1 ÅÅÅÅÅÅÅ 72 inci, kira-kira poin
printer.
Arahan grafis Dashing memungkinkan Anda untuk membuat garis dengan berbagai
jenis dashing. Ide dasarnya adalah untuk menghancurkan garis menjadi segmen-segmen yang
ditarik dan dihilangkan secara bergantian. Dengan mengubah panjang segmen, Anda bisa
mendapatkan gaya garis yang berbeda. Dashing memungkinkan Anda untuk menentukan
urutan panjang segmen. Urutan ini diulang sebanyak kali seperlunya dalam menggambar
seluruh garis.
Salah satu cara untuk menggunakan direktif grafik Mathematica adalah dengan
memasukkannya langsung ke dalam daftar grafik primitif yang digunakan oleh objek grafis.
Namun, terkadang Anda ingin arahan grafis diterapkan lebih global, dan misalnya untuk
menentukan "gaya" keseluruhan yang dengannya jenis elemen grafis tertentu harus dirender.
Ada biasanya opsi grafik yang dapat diatur untuk menentukan gaya seperti itu dalam hal
daftar arahan grafik.
Operator pada akhirnya menentukan struktur ekspresi yang dibentuk dari bagian input
tertentu. Bahasa Mathematica melibatkan beberapa kelas umum operator, dibedakan oleh
posisi yang berbeda di mana mereka muncul sehubungan dengan operan mereka.
Operator biasanya bekerja dengan mengambil operan dari posisi tertentu di sekitar mereka.
Tetapi ketika sebuah string berisi lebih banyak dari satu operator, hasilnya secara
umum dapat bergantung pada operator mana yang mengambil operandnya terlebih
dahulu. Jadi, misalnya, a*b+c berpotensi ditafsirkan sebagai (a*b)+c atau sebagai
a*(b+c) tergantung pada apakah * atau + mengambil operannya terlebih dahulu.
Dalam menangani output, Anda dapat membuat definisi untuk Format[expr] untuk
mengubah cara ekspresi tertentu akan diformat. Namun, Anda harus menyadari bahwa
segera setelah Anda melakukan ini, tidak ada jaminan bahwa formulir keluaran ekspresi
Anda akan ditafsirkan dengan benar jika diberikan sebagai input Mathematica. Jika Anda
mau, Mathematica memungkinkan Anda untuk mendefinisikan kembali aturan dasar yang
digunakannya untuk input dan output semua ekspresi. Anda bisa melakukan ini oleh
membuat definisi untuk MakeBox dan MakeExpression. Anda Sebaiknya menyadari,
Namun, bahwa kecuali Anda membuat definisi seperti itu dengan sangat hati-hati,
kemungkinan besar Anda akan mendapatkan hasil yang tidak konsisten.
Saat Anda memberikan definisi untuk MakeBox, Anda dapat menganggap ini sebagai versi
pemberian definisi tingkat rendah untuk Format. Perbedaan penting adalah bahwa
MakeBoxes tidak mengevaluasi argumennya, sehingga Anda dapat menentukan aturan
untuk memformat ekspresi tanpa khawatir tentang bagaimana ekspresi ini akan dievaluasi.
Selain itu, saat Format dipanggil kembali secara otomatis pada hasil apa pun yang diperoleh
dengan menerapkannya, hal yang sama tidak berlaku untuk MakeBox. Artinya, dalam
memberikan definisi untuk MakeBox Anda secara eksplisit harus memanggil MakeBox
lagi di subekspresi apa pun yang masih perlu diformat.
Fungsi yang dijelaskan sejauh ini di bagian ini menentukan bagaimana ekspresi harus
diformat saat dicetak, tetapi mereka tidak benar-benar menyebabkan apa pun untuk dicetak.
Dalam cara paling umum menggunakan Mathematica, Anda sebenarnya tidak pernah
secara eksplisit harus mengeluarkan perintah untuk menghasilkan keluaran. Biasanya,
Mathematica secara otomatis mencetak hasil akhir yang didapat dari pemrosesan input
yang Anda berikan. Namun, terkadang, Anda mungkin ingin Mathematica mencetak
ekspresi pada tahap menengah dalam operasinya. Anda dapat melakukan ini dengan
menggunakan fungsi Print.
Print hanya mengambil argumen yang Anda berikan, dan mencetaknya satu demi satu,
tanpa spasi di antaranya. Di dalam banyak kasus, Anda perlu mencetak output dalam format
yang lebih rumit. Anda dapat melakukan ini dengan memberikan formulir keluaran sebagai
argumen untuk Print
Mathematica biasanya bekerja dengan mengambil input apa pun yang Anda berikan, dan
kemudian memprosesnya. Namun, terkadang Anda mungkin ingin memiliki program
yang Anda tulis secara eksplisit meminta lebih banyak masukan. Anda dapat melakukan
ini menggunakan Input dan InputString.
Messages
Mathematica memiliki mekanisme umum untuk menangani pesan yang dihasilkan selama
perhitungan. Banyak built-in Mathematica Fungsi gunakan mekanisme ini untuk
menghasilkan pesan kesalahan dan peringatan. Anda juga dapat menggunakan mekanisme
untuk pesan Terkait dengan fungsi yang Anda tulis. Ide dasarnya adalah bahwa setiap pesan
memiliki nama yang pasti, dalam bentuk simbol::tag. Anda dapat menggunakan nama ini
untuk merujuk ke pesan. (The Object Symbol::tag memiliki kepala MessageName.)
Anda dapat menggunakan On dan Off untuk mengontrol pencetakan pesan tertentu. Pesan
terbanyak terkait dengan fungsi bawaan diaktifkan secara default. Anda dapat
menggunakan Off untuk mematikannya jika Anda tidak mau meihat mereka.
Meskipun sebagian besar pesan yang terkait dengan fungsi bawaan diaktifkan secara
default, ada beberapa yang dimatikan secara default, dan yang hanya akan Anda lihat jika
Anda mengaktifkannya secara eksplisit. Contohnya adalah pesan General::newssym
Pesan selalu disimpan sebagai string yang cocok untuk digunakan dengan StringForm.
Ketika pesan dicetak, yang sesuai ekspresi adalah "disambung" ke dalamnya. Ekspresi
dibungkus dengan HoldForm untuk mencegah evaluasi.
Tambahan, fungsi apa pun yang ditetapkan sebagai nilai variabel global
$MessagePrePrint diterapkan ke hasil ekspresi sebelum diberikan ke StringForm.
Default untuk $MessagePrePrint adalah Short
Jika Anda memberikan jumlah argumen yang salah ke fungsi F, Mathematica akan
memperingatkan Anda dengan mencetak pesan seperti: F::argx. Jika Mathematica tidak
dapat menemukan pesan bernama F::argx, itu akan menggunakan teks dari pesan "umum"
General::argx sebagai gantinya. Anda dapat menggunakan Off[F::argx] untuk
menonaktifkan pesan jumlah argumen khusus untuk fungsi F. Anda juga dapat
menggunakan Off[General::argx] untuk menonaktifkan semua pesan yang
menggunakan teks general pesan.
Jika ada yang salah dengan perhitungan yang Anda lakukan, biasanya pesan peringatan
yang sama adalah dihasilkan berulang-ulang. Ini biasanya lebih membingungkan daripada
berguna. Akibatnya, Mathematica melacak semua pesan yang dihasilkan selama
perhitungan tertentu, dan berhenti mencetak pesan tertentu jika muncul lebih banyak dari
tiga kali. Kapan pun ini terjadi, Mathematica mencetak pesan General::stop untuk
memberi tahu Anda. Jika kamu benar-benar ingin melihat semua pesan yang Mathematica
coba cetak, Anda dapat melakukannya dengan mematikan General::stop.
Check[expr, failexpr] tes untuk semua pesan yang benar-benar dicetak. Itu tidak menguji
pesan yang outputnya telah ditekan menggunakan Off.
Dengan menggunakan fungsi Pesan, Anda dapat meniru semua aspek fungsi Mathematica
bawaan menghasilkan pesan. Misalnya, Anda dapat mengaktifkan dan menonaktifkan
pesan menggunakan On dan Off, dan Pesan akan otomatis mencari General::tag
jika tidak menemukan pesan spesifik s::tag
International Messages
The standard set of messages for built-in Mathematica functions are written in American
English. In some versions of Mathematica, messages are also available in other languages.
In addition, if you set up messages yourself, you can give ones in other languages. Languages
in Mathematica are conventionally specified by strings. The languages are given in
English, in order to avoid the possibility of needing special characters. Thus, for example,
the French language is specified in Mathematica as "French".
Ketika fungsi Mathematica built-in menghasilkan pesan, mereka pertama-tama mencari
pesan dalam bentuk s::t::Language, di bahasa yang ditentukan oleh $Language. Jika
mereka gagal menemukan pesan seperti itu, maka mereka menggunakan formulir s::t tanpa
spesifikasi bahasa yang eksplisit
Prosedur yang digunakan oleh fungsi bawaan juga akan diikuti oleh fungsi yang Anda
tentukan jika Anda memanggil Message dengan nama pesan dalam bentuk s::t. Namun,
jika Anda memberikan bahasa eksplisit dalam nama pesan, hanya bahasa tersebut yang
akan digunakan.
Konstruksi Dokumentasi
Saat Anda menulis program di Mathematica, ada berbagai cara untuk mendokumentasikan
kode Anda. Seperti biasa, sejauh ini yang terbaik masalahnya adalah menulis kode yang
jelas, dan memberi nama objek yang Anda definisikan sejelas mungkin.
Namun, terkadang Anda mungkin ingin menambahkan beberapa "teks komentar" ke kode
Anda, untuk membuatnya lebih mudah dipahami. Anda dapat menambahkan teks seperti itu
kapan saja dalam kode Anda hanya dengan melampirkannya pada pencocokan (* dan *).
Perhatikan bahwa dalam Mathematica, "komentar" yang diapit (* dan *) dapat disarangkan
dengan cara apa pun
Saat Anda mendefinisikan fungsi f, Anda biasanya dapat menampilkan nilainya menggunakan ?f.
Namun, jika Anda memberikan pesan penggunaan untuk f, lalu ?f hanya memberikan pesan penggunaan.
Hanya ketika Anda mengetik ??f Anda mendapatkan semua detail tentang f, termasuk yang sebenarnya
definisi.
Fungsi seperti Plot dan ListPlot semuanya bekerja dengan membangun grafik
Mathematica objek, dan kemudian menampilkannya
Anda dapat membuat jenis gambar grafis lain di Mathematica dengan membangun objek
grafik Anda sendiri. Sejak objek grafik di Mathematica hanyalah ekspresi simbolis, Anda
dapat menggunakan semua fungsi Mathematica standar untuk memanipulasi mereka.
Setelah Anda membuat objek grafis, Anda harus menampilkannya. Fungsi Show
memungkinkan Anda untuk menampilkan apapun objek grafik Mathematica.
Diberikan daftar tertentu dari grafik primitif, Mathematica menyediakan dua mekanisme
dasar untuk memodifikasi final bentuk grafik yang Anda dapatkan. Pertama, Anda dapat
memasukkan ke dalam daftar grafik primitif graphic directives tertentu, seperti
RGBColor, yang memodifikasi elemen grafis berikutnya dalam daftar. Dengan cara ini,
Anda dapat menentukan bagaimana set elemen grafis harus diberikan.
Anda dapat menentukan opsi grafik di Show. Akibatnya, mudah untuk mengambil satu
objek grafik, dan menunjukkannya dengan banyak pilihan pilihan grafis yang berbeda.
Namun perhatikan bahwa Show selalu mengembalikan objek grafis yang telah
ditampilkannya. Jika Anda menentukan opsi grafik di Show, lalu opsi ini secara otomatis
dimasukkan ke dalam objek grafik yang ditampilkan kembali. Akibatnya, jika Anda
menelepon Show lagi pada objek yang sama, opsi grafik yang sama akan digunakan,
kecuali jika Anda secara eksplisit menentukan yang lain. Catatan bahwa dalam semua
kasus, opsi baru yang Anda tentukan akan menimpa yang sudah ada.
Beberapa opsi grafik bekerja dengan mengharuskan Anda menentukan nilai tertentu untuk
parameter yang terkait dengan bagian grafik. Opsi lain memungkinkan Anda untuk
memberikan pengaturan Automatic, yang membuat Mathematica menggunakan
algoritme internal untuk memilih nilai yang sesuai untuk parameter. Dalam kasus seperti
itu, Anda dapat mengetahui nilai yang sebenarnya digunakan Mathematica oleh
menerapkan fungsi AbsoluteOptions.
Saat Anda menggunakan opsi grafik seperti Axes, Mathematica secara efektif harus
membuat daftar elemen grafik untuk mewakili objek seperti sumbu yang Anda minta.
Biasanya Mathematica tidak secara eksplisit mengembalikan daftar itu konstruksi dengan
cara ini. Namun, terkadang Anda mungkin merasa berguna untuk mendapatkan daftar ini.
Fungsi FullGraphics memberikan daftar lengkap grafik primitif yang diperlukan untuk
menghasilkan plot tertentu, tanpa opsi apa pun yang digunakan.
Dengan pengaturan opsi default, fungsi seperti Plot dan Show sebenarnya menyebabkan
Mathematica menghasilkan grafik keluaran. Secara umum, generasi sebenarnya dari output
grafis dikendalikan oleh opsi grafis DisplayFunction. Pengaturan default untuk opsi
ini adalah nilai variabel global $DisplayFunction. Dalam kebanyakan kasus,
$DisplayFunction dan opsi DisplayFunction disetel untuk menggunakan rendering
tingkat rendah function Tampilan untuk menghasilkan output, mungkin setelah beberapa
pra pemrosesan. Namun, terkadang Anda mungkin ingin mendapatkan berfungsi seperti
Plot untuk menghasilkan objek grafik, tetapi Anda mungkin tidak segera menginginkan
objek grafik itu sebenarnya dirender sebagai keluaran. Anda dapat memberi tahu
Mathematica untuk menghasilkan objek, tetapi tidak merendernya, dengan menyetel opsi
Display Function -> Identity.
Mathematica menyediakan berbagai macam arahan grafis. Satu set penting adalah untuk
menentukan warna elemen grafis. Bahkan jika Anda memiliki perangkat layar hitam-putih,
Anda masih dapat memberikan arahan grafis berwarna. Itu warna yang Anda tentukan akan
dikonversi ke tingkat abu-abu pada langkah terakhir dalam proses rendering grafis.
Perhatikan bahwa Anda bisa dapatkan tampilan tingkat abu-abu bahkan pada perangkat
berwarna dengan menyetel opsi ColorOutput -> GrayLevel.
Fungsi Hue[h] menyediakan cara mudah untuk menentukan rentang warna hanya
dengan menggunakan satu parameter. Karena h bervariasi dari 0 hingga 1, Hue[h] melewati
warna merah, kuning, hijau, cyan, biru, magenta, dan kembali ke merah lagi. Warna[h, s, b]
memungkinkan Anda untuk menentukan tidak hanya "rona", tetapi juga "saturasi" dan
"kecerahan" warna. Mengambil satu-tion menjadi sama dengan satu memberikan warna
terdalam; penurunan saturasi menuju nol mengarah ke semakin banyak warna-warna yang
“terhapus”. Untuk sebagian besar tujuan, Anda akan dapat menentukan warna yang Anda
butuhkan hanya dengan memberikan RGBColor atau Hue yang sesuai arahan. Namun, jika
Anda membutuhkan warna yang sangat presisi atau berulang, terutama untuk pencetakan
berwarna, ada beberapa: kehalusan yang muncul. Saat Anda memberikan arahan grafis
seperti RGBColor, itu memengaruhi semua elemen grafis berikutnya yang muncul di a
daftar tertentu. Mathematica juga mendukung berbagai arahan grafik yang hanya
memengaruhi jenis grafik tertentu elemen. Arahan grafis PointSize[d] menetapkan
bahwa semua elemen Titik yang muncul dalam objek grafis harus digambarkan sebagai
lingkaran dengan diameter d. Di PointSize, diameter d diukur sebagai sebagian kecil dari
lebar keseluruhan Anda merencanakan. Mathematica juga menyediakan direktif grafis
AbsolutePointSize[d], yang memungkinkan Anda untuk menentukan diameter titik
"mutlak", diukur dalam satuan tetap. Satuannya adalah 1 ÅÅÅÅÅÅÅ 72 inci, kira-kira poin
printer.
Arahan grafis Dashing memungkinkan Anda untuk membuat garis dengan berbagai
jenis dashing. Ide dasarnya adalah untuk menghancurkan garis menjadi segmen-segmen yang
ditarik dan dihilangkan secara bergantian. Dengan mengubah panjang segmen, Anda bisa
mendapatkan gaya garis yang berbeda. Dashing memungkinkan Anda untuk menentukan
urutan panjang segmen. Urutan ini diulang sebanyak kali seperlunya dalam menggambar
seluruh garis.
Salah satu cara untuk menggunakan direktif grafik Mathematica adalah dengan
memasukkannya langsung ke dalam daftar grafik primitif yang digunakan oleh objek grafis.
Namun, terkadang Anda ingin arahan grafis diterapkan lebih global, dan misalnya untuk
menentukan "gaya" keseluruhan yang dengannya jenis elemen grafis tertentu harus dirender.
Ada biasanya opsi grafik yang dapat diatur untuk menentukan gaya seperti itu dalam hal
daftar arahan grafik.
Dengan PlotRange default -> Otomatis, titik terluar tidak disertakan, tetapi memengaruhi rentang
koordinat yang dipilih.
Show[ Graphics[{obj, Point[{20, 20}]}] ]
Dengan PlotRange -> Semua, titik terluar disertakan, dan sistem koordinat dimodifikasi secara bersamaan.
Show[%, PlotRange -> All]
Opsi PlotRange memungkinkan Anda untuk menentukan wilayah persegi panjang dalam sistem
koordinat asli, dan untuk menjatuhkan elemen grafis yang terletak di luar wilayah ini. Namun, untuk
merender elemen yang tersisa, Matematika kemudian harus menentukan bagaimana memposisikan wilayah
persegi panjang ini sehubungan dengan area tampilan akhir. Opsi PlotRegion memungkinkan Anda untuk
menentukan di mana sudut-sudut wilayah persegi panjang berada dalam tampilan akhir daerah. Posisi sudut
ditentukan dalam koordinat skala, yang didefinisikan berjalan dari 0 hingga 1 melintasi area tampilan.
Standarnya adalah PlotRegion -> {{0, 1}, {0, 1}}, yang menetapkan bahwa wilayah persegi panjang harus
isi seluruh area tampilan.,
Dengan menentukan PlotRegion, Anda dapat secara efektif menambahkan "margin" di sekitar plot Anda.
Plot[ArcTan[x], {x, 0, 10}, PlotRegion -> {{0.2, 0.8}, {0.3, 0.7}}]
AspectRatio −> r = membuat rasio tinggi terhadap lebar untuk area tampilan sama
dengan r
AspectRatio −> Automatic = menentukan bentuk area tampilan dari sistem koordinat asli
Apa yang telah kita diskusikan sejauh ini adalah bagaimana Matematika menerjemahkan koordinat asli
yang Anda tentukan ke dalam posisi di area tampilan akhir. Namun, apa yang masih perlu didiskusikan
adalah seperti apa area tampilan akhir. Pada sebagian besar sistem komputer, ada area layar atau kertas
tertentu yang menjadi area tampilan Matematika harus sesuai. Kesesuaian dengan wilayah ini ditentukan
oleh "bentuk" atau rasio aspeknya. Secara umum, opsi AspectRatio menentukan rasio tinggi terhadap lebar
untuk area tampilan akhir. Penting untuk dicatat bahwa pengaturan AspectRatio tidak mempengaruhi arti
dari skala atau koordinat tampilan. Koordinat ini selalu berjalan dari 0 hingga 1 di seluruh area tampilan.
Apa yang dilakukan AspectRatio adalah mengubah hex = Graphics[Polygon[
Table[{Sin[n Pi/3], Cos[n Pi/3]}, {n, 6}] ]] ;
Untuk grafik dua dimensi, AspectRatio diatur secara default ke nilai tetap 1/GoldenRatio. Namun,
terkadang, Anda mungkin ingin menentukan rasio aspek untuk plot dari sistem koordinat asli yang digunakan
dalam plot. Biasanya yang Anda inginkan adalah agar satu unit dalam arah x dalam sistem koordinat asli
sesuai dengan yang sama jarak di tampilan akhir sebagai satu unit dalam arah y. Dengan cara ini, objek yang
Anda tentukan dalam koordinat asli sistem ditampilkan dengan "bentuk alami" mereka. Anda dapat
mewujudkannya dengan menyetel opsi AspectRatio -> Otomatis.
Dengan AspectRatio -> Otomatis, rasio aspek area tampilan akhir ditentukan dari sistem koordinat asli,
dan segi enam ditampilkan dengan "bentuk alaminya".
Show[hex, AspectRatio -> Automatic]
Menggunakan koordinat skala, Anda dapat menentukan ukuran elemen grafis sebagai pecahan dari
ukuran area tampilan. Namun, Anda tidak dapat memberi tahu Mathematica ukuran fisik sebenarnya di mana
elemen grafis tertentu harus dirender. Tentu saja, ukuran ini pada akhirnya tergantung pada detail perangkat
output grafis Anda, dan tidak dapat ditentukan secara pasti dalam Mathematica. Namun demikian, arahan
grafis seperti AbsoluteThickness yang dibahas dalam Bagian 2.10.3 memungkinkan Anda untuk
menunjukkan "ukuran absolut" yang akan digunakan untuk elemen grafis tertentu. Ukuran yang Anda minta
dengan cara ini akan dipatuhi oleh sebagian besar, tetapi tidak semua, perangkat keluaran. (Misalnya, jika
Anda memproyeksikan gambar secara optik, tidak mungkin atau tidak diinginkan untuk mempertahankan
ukuran absolut yang sama untuk elemen grafis di dalamnya.)
PlotLabel −> " text " = berikan label keseluruhan untuk plotnya
Berikut adalah plotnya, menggunakan Axes default -> True.
Frame -> True menghasilkan bingkai dengan sumbu, dan menghilangkan tanda centang dari sumbu biasa.
Ini termasuk garis kisi, yang ditampilkan dalam warna biru muda pada layar berwarna.
Axes −> { False, True } = menggambar sumbu y tetapi tidak ada sumbu
x
AxesOrigin −> Automatic = pilih titik persimpangan untuk sumbu secara otomatis
Ini membuat sumbu bersilangan di titik {5, 0}, dan memberi label pada setiap sumbu.
Ticks −> {xticks, yticks} = spesifikasi tanda centang untuk setiap sumbu
Dengan pengaturan default Ticks -> Automatic, Mathematica membuat sejumlah tanda centang mayor
dan minor, dan menempatkannya pada sumbu pada posisi yang menghasilkan jumlah minimum digit desimal
pada label centang. Namun, dalam beberapa kasus, Anda mungkin ingin menentukan posisi dan properti
tanda centang secara eksplisit. Anda perlu melakukan ini, misalnya, jika Anda ingin memiliki tanda centang
pada kelipatan p, atau jika Anda ingin meletakkan skala nonlinier pada sumbu.
{ { x1, label1 <, 8 x2, label2 }, ... } = menggambar tanda centang dengan label yang ditentukan
{ { x1 , label1, len1 }, ... } = menggambar tanda centang dengan panjang skala
yang ditentukan
{ { x1, label1, { plen1, mlen1 } }, ... } =menggambar tanda centang dengan panjang yang ditentukan
dalam arah positif dan negatif
{ { x1, label1, len1, style1 }, ... } =menggambar tanda centang dengan gaya yang ditentukan berfungsi
sebagai fungsi untuk diterapkan ke xmin, xmax untuk mendapatkan opsi tanda centang
Ini memberikan tanda centang pada posisi tertentu pada sumbu x, dan memilih tanda centang secara
otomatis pada sumbu y.
Khususnya ketika Anda ingin membuat spesifikasi tanda centang yang rumit, seringkali lebih mudah
untuk mendefinisikan "fungsi tanda centang" yang menciptakan spesifikasi tanda centang yang sesuai
dengan nilai minimum dan maksimum pada sumbu tertentu.
Ini mendefinisikan fungsi yang memberikan daftar posisi tanda centang dengan spasi 1.
units[xmin_, xmax_] := Range[Floor[xmin], Floor[xmax], 1]
Ini menggunakan fungsi unit untuk menentukan tanda centang untuk sumbu x.
Terkadang Anda mungkin ingin membuat tanda centang yang hanya sedikit berbeda dari yang
dihasilkan secara otomatis dengan pengaturan Ticks -> Automatic. Anda bisa mendapatkan spesifikasi
lengkap untuk tanda centang yang dihasilkan secara otomatis di plot tertentu dengan menggunakan
AbsoluteOptions[g, Ticks], seperti yang dibahas di Bagian 2.10.1.
FrameStyle −> { { xmstyle }, { ymstyle <}, ... } = tentukan gaya untuk setiap tepi
bingkai
FrameTicks −> { { xmticks, ymticks, ... } } = tentukan tanda centang untuk tepi
bingkai
Opsi Sumbu memungkinkan Anda menggambar sepasang sumbu dalam sebuah plot. Namun,
terkadang, Anda mungkin ingin menunjukkan skala plot pada bingkai, biasanya digambar di sekitar
keseluruhan plot. Opsi Bingkai memungkinkan Anda menggambar empat sumbu secara efektif, sesuai
dengan empat tepi bingkai di sekitar plot. Keempat sumbu ini diurutkan searah jarum jam, dimulai dari yang
paling bawah.
Ini menggambar sumbu bingkai, dan memberi label masing-masing
GridLines −> { xgrid, ygrid } = tentukan garis kisi dalam analogi dengan tanda centang
Garis kisi di Mathematica bekerja sangat mirip dengan tanda centang. Seperti halnya tanda centang,
Anda dapat menentukan posisi eksplisit untuk garis kisi. Tidak ada label atau panjang yang ditentukan untuk
garis kisi. Namun, Anda dapat menentukan gaya.
Ini menghasilkan garis kisi x tetapi tidak y.
Ini menciptakan objek grafik dua dimensi yang berisi dua salinan plot tiga dimensi.
Mathematica dapat merender objek grafik apa pun dalam Rectangle. Dalam semua kasus, apa yang
dimasukkan ke dalam persegi panjang adalah versi yang diperkecil dari apa yang akan diperoleh jika Anda
menampilkan objek grafisnya sendiri. Perhatikan bahwa secara umum area tampilan untuk objek grafis akan
berukuran sehingga menyentuh setidaknya satu pasang tepi persegi panjang.
Fungsi DensityPlot dan ContourPlot yang dibahas di Bagian 1.9.5 bekerja dengan membuat objek
ContourGraphics dan DensityGraphics yang berisi array nilai.
Sebagian besar opsi untuk plot kepadatan dan kontur sama dengan plot dua dimensi biasa. Namun, ada
beberapa opsi tambahan.
Dalam plot kepadatan, warna setiap sel mewakili nilainya. Secara default, setiap sel diberi tingkat
abuabu, berjalan dari hitam ke putih saat nilai sel meningkat. Namun, secara umum, Anda dapat menentukan
"peta warna" lain untuk hubungan antara nilai sel dan warnanya. Opsi ColorFunction memungkinkan Anda
menentukan fungsi yang diterapkan ke setiap nilai sel untuk menemukan warna sel. Dengan
ColorFunctionScaling->True nilai sel diskalakan sehingga berjalan antara 0 dan 1 dalam plot kepadatan
tertentu; dengan ColorFunctionScaling->Salah tidak seperti itu
As in two dimensions, you can use AbsolutePointSize, AbsoluteThickness and AbsoluteDashing if you
want to measure length in absolute units.
kasus ini, bagaimanapun, warna eksplisit digunakan untuk titik dan garis.
Ini menggambar icosahedron, menggunakan tingkat abu-abu yang sama untuk semua
wajah.
Saat Anda merender objek grafik tiga dimensi di Mathematica, ada dua jenis garis yang
bisa muncul. Itu jenis pertama adalah garis dari garis primitif eksplisit yang Anda sertakan
dalam objek grafik. Jenis kedua adalah garis yang dihasilkan sebagai tepi poligon.
Anda dapat memberi tahu Mathematica cara membuat semua baris jenis kedua dengan
memberikan daftar arahan grafis di dalamnya bentuk Tepi.
Aspek penting dari poligon dalam tiga dimensi adalah bahwa mereka memiliki wajah
depan dan belakang. Mathematica menggunakan konvensi berikut untuk menentukan "muka
depan" poligon: jika Anda melihat poligon dari depan, maka sudutnya poligon akan muncul
berlawanan arah jarum jam, ketika diambil dalam urutan yang Anda tentukan.
Ini membuat muka depan (luar) setiap poligon abu-abu muda, dan muka belakang
(dalam) abu-abu gelap.
terpotong.
Sama seperti dalam dua dimensi, Anda dapat menggunakan koordinat "asli" atau "skala" untuk menentukan posisi
elemen
dalam objek tiga dimensi. Koordinat berskala, ditetapkan sebagai Scaled[8sx, sy, sz<] diambil untuk dijalankan dari
0 hingga
1 di setiap dimensi. Koordinat diatur untuk mendefinisikan sistem koordinat tangan kanan pada kotak.
memberi tahu
Mathematica cara menggambar kotak. Langkah pertama adalah menentukan bentuk kotak yang seharusnya. Ini
analog dengan
menentukan rasio aspek plot dua dimensi. Dalam tiga dimensi, Anda dapat menggunakan opsi BoxRatios untuk
tentukan perbandingan panjang sisi kotak tersebut! Untuk objek Graphics3D, defaultnya adalah BoxRatios ->
Otomatis,
menentukan bahwa bentuk kotak harus ditentukan dari rentang koordinat aktual untuk isinya.
Beberapa pengaturan umum untuk opsi ini diberikan di Bagian 1.9.6. Namun, secara umum, Anda dapat memberi
Titik pandang ditentukan dalam bentuk ViewPoint -> 8sx, sy, sz<. Nilai si diberikan dalam koordinat khusus
sistem, di mana pusat kotak adalah {0, 0, 0}. Koordinat khusus diskalakan sehingga sisi terpanjang dari
kotak sesuai dengan satu unit. Panjang sisi lain kotak dalam sistem koordinat ini ditentukan oleh:
pengaturan untuk opsi BoxRatios. Oleh karena itu, untuk kotak kubus, masing-masing koordinat khusus berjalan
dari -1 2 hingga
1 2 di seberang kotak. Perhatikan bahwa titik pandang harus selalu berada di luar kotak.
Ini menghasilkan gambar menggunakan titik pandang default {1.3, -2.4, 2}.
In[7]:= surf = Plot3D[(2 + Sin[x]) Cos[2 y], {x, -2, 2}, {y, -3, 3}, AxesLabel -> {"x",
"y", "z"}]
Inilah yang Anda dapatkan dengan titik pandang yang dekat dengan salah satu sudut kotak.
Dalam membuat gambar objek tiga dimensi Anda harus menentukan lebih dari sekadar di mana Anda ingin melihat
objek dari. Anda juga harus menentukan bagaimana Anda ingin "membingkai" objek di gambar akhir Anda. Anda
ViewCenter memungkinkan Anda memberi tahu Mathematica titik mana dalam objek yang akan muncul di tengah
Titik ditentukan dengan memberikan koordinat skalanya, berjalan dari 0 hingga 1 di setiap arah melintasi kotak.
Dengan
pengaturan ViewCenter -> {1/2, 1/2, 1/2}, pusat kotak karena itu akan muncul di tengah akhir Anda
gambar. Namun, dengan banyak pilihan sudut pandang, kotak tidak akan terlihat simetris, jadi ini pengaturan
untuk ViewCeng
ter tidak akan memusatkan seluruh kotak di area gambar akhir. Anda dapat melakukan ini dengan mengatur
ViewVertical menentukan ke arah mana objek akan muncul di gambar akhir Anda. Pengaturan untuk ViewVertig
cal memberikan arah dalam skala koordinat yang berakhir vertikal pada gambar akhir. Dengan pengaturan default
Viewg
Vertikal -> {0, 0, 1}, arah z dalam sistem koordinat asli Anda selalu berakhir vertikal di final
gambar.
Dengan pengaturan ViewCenter ini, sudut kotak muncul di tengah gambar Anda.
Pengaturan untuk ViewVertical ini membuat sumbu x kotak tampak vertikal di gambar Anda.
menentukan bagaimana Anda akan melihat objek fisik. ViewPoint menentukan di mana kepala Anda relatif
terhadap objek. LihatCeng ter menentukan di mana Anda melihat (pusat pandangan Anda). Dan ViewVertical
kepala adalah.
Dalam hal sistem koordinat, pengaturan untuk ViewPoint, ViewCenter dan ViewVertical menentukan
bagaimana koordinat nates di kotak tiga dimensi harus diubah menjadi koordinat untuk gambar Anda di area
tampilan akhir.
Untuk beberapa tujuan, akan berguna untuk menganggap koordinat di area tampilan akhir sebagai tiga dimensi. x
dan y sumbu berjalan secara horizontal dan vertikal, masing-masing, sedangkan sumbu z menunjuk keluar dari
halaman.
"sistem koordinat tampilan" tetap tetap saat Anda mengubah ViewPoint dan seterusnya. Posisi sumber cahaya
dibahas pada bagian selanjutnya didefinisikan dalam sistem koordinat tampilan ini.
Setelah Anda mendapatkan gambar dua dimensi dari objek tiga dimensi, masih ada beberapa masalah tentang
bagaimana gambar ini harus dirender. Namun masalahnya identik dengan yang terjadi pada grafik dua
dimensi.
Jadi, misalnya, Anda dapat memodifikasi bentuk akhir gambar Anda dengan mengubah opsi AspectRatio. Dan kamu
tentukan wilayah mana dari seluruh area tampilan yang harus diambil oleh gambar Anda dengan menyetel opsi
PlotRegion.
Mathematica biasanya membuat skala gambar objek tiga dimensi menjadi sebesar mungkin, mengingat area
tampilan
Anda tentukan. Meskipun dalam banyak kasus penskalaan ini adalah apa yang Anda inginkan, itu memiliki
objek tiga dimensi tertentu yang digambar dapat berbeda dengan orientasi objek. Anda dapat mengatur opsi
Spherg
icalRegion -> Benar untuk menghindari variasi seperti itu. Dengan pengaturan opsi ini, Mathematica secara efektif
menempatkan bola
mengelilingi kotak pembatas tiga dimensi, dan menskalakan gambar akhir sehingga seluruh bola ini pas di dalam
area tampilan yang Anda tentukan. Bola memiliki pusatnya di tengah kotak pembatas, dan digambar sedemikian
area tampilan.
Dengan menyetel SphericalRegion -> True, Anda dapat membuat penskalaan objek konsisten untuk semua
orientasi
obyek. Ini berguna jika Anda membuat urutan animasi yang menunjukkan objek tertentu dalam beberapa orientasi
berbeda.
pun di
Mathematica dengan Graphics3D. Anda dapat merepresentasikan permukaan tiga dimensi dengan Graphics3D
Jika Anda perlu mewakili permukaan sewenang-wenang yang dapat melipat dan mungkin berpotongan sendiri,
Namun, ada banyak kasus di mana Anda mendapatkan permukaan yang lebih sederhana. Misalnya, hasil Plot3D
dan ListPlot3D
permukaan yang tidak pernah melipat, dan memiliki ketinggian tertentu di setiap titik x,y. Anda dapat mewakili
ini di Mathematica tanpa memberikan daftar poligon secara eksplisit. Sebagai gantinya, yang perlu Anda lakukan
menentukan tinggi z di setiap titik dalam kisi x, y. Objek grafis SurfaceGraphics[array] mewakili a
In[2]:= Show[SurfaceGraphics[moda]]
Jika Anda perlu mewakili permukaan sewenang-wenang yang dapat melipat dan mungkin memotong
diri mereka sendiri, tidak ada pilihan selain menggunakan daftar eksplisit poligon dengan Graphics3D,
seperti yang dilakuk.
Namun, ada banyak kasus di mana Anda mendapatkan permukaan yang lebih sederhana. Misalnya,
plot3D dan ListPlot3D menghasilkan permukaan yang tidak pernah dilipat, dan memiliki ketinggian
yang pasti pada setiap titik x, y. Anda dapat mewakili permukaan sederhana seperti ini di Mathematica tanpa
memberikan daftar eksplisit poligon. Sebaliknya, yang perlu Anda lakukan adalah memberikan array yang
menentukan tinggi z di setiap titik dalam grid x, y. Objek grafis SurfaceGraphics mewakili permukaan
yang dibangun dengan cara ini.
permukaan terlipat
In[2]:= Show[SurfaceGraphics[moda]]
Out[2]= - SurfaceGraphics -
In[3]:= Plot3D[(1 - Sin[x]) (2 - Cos[2 y]), {x, -2, 2}, {y, -2, 2}]
0
-1
0 -1
1
6
4 2
2
0
-2
2 -2
Out[3]= - SurfaceGraphics -
0
-1
0 -1
1
6
4 2
2
0
-2
2 -2
Out[4]= - SurfaceGraphics -
2
0 1
-2
-1 0
0
-1
1
6
4
2
-2
2
Out[5]= - Graphics3D -
Objek SurfaceGraphics berisi array nilai yang menentukan ketinggian permukaan pada titik-titik dalam grid x, y.
Dengan mengatur opsi MeshRange, Anda dapat memberikan kisaran koordinat x dan y asli yang sesuai dengan titik-titik
dalam grid ini. Ketika Anda menggunakan Plot3D [f, [ x, xmin, xmax], [ y, ymin, ymax} ] untuk menghasilkan objek
SurfaceGraph ; ics, pengaturan MeshRange -> {{ xmin, xmax}, 8 ymin, ymax}} secara otomatis dihasilkan.
Pengaturan untuk MeshRange digunakan dalam pelabelan sumbu x dan y dalam plot permukaan, dan dalam mengerjakan
koordinat poligon jika Anda mengubah objek SurfaceGraphics ke daftar eksplisit poligon dalam objek
Graphics3D.
None leave out clipped parts of the surface, so that you can see through
Automatic show the clipped part of the surface with the same shading as an
actual surface in the same position would have Hdefault settingL
GrayLevel@ i D , show the clipped part of the
RGBColor@ r, g, b D , etc. surface with a particular gray level, color, etc. 8
bottom, top < give different specifications
Berikut adalah plot tiga dimensi di mana bagian atas dan bawah permukaan dipotong. Dengan pengaturan default untuk
ClipFill, bagian-bagian yang terpotong ditampilkan seperti jika mereka adalah bagian dari permukaan yang sebenarnya.
In[6]:= Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3}, PlotRange -> {-.5, .5}]
2
0
1 1
2
0.4
0.2
0
-0.2
-0.4
3 0
Out[6]= - SurfaceGraphics -
Dengan ClipFill->None, bagian permukaan yang terpotong ditinggalkan, sehingga Anda dapat "melihat
melalui" permukaan di sana. Mathematica selalu meninggalkan bagian permukaan yang sesuai dengan tempat-tempat di mana
nilai fungsi yang Anda rencanakan bukanlah bilangan real.
2
0
1 1
2
0.4
0.2
0
-0.2
-0.4
3 0
Out[7]= - SurfaceGraphics -
Hal ini membuat bagian bawah dipotong wajah putih (tingkat abu-abu 1), dan yang
atas
0.4
0.2
0
-
2
0
1 1
2
0.2
-0.4
3 0
Out[8]= - SurfaceGraphics -
Setiap kali Mathematica menggambar permukaan, ia harus tahu tidak hanya ketinggian, tetapi juga warna
permukaan di setiap titik. Dengan pengaturan default Pencahayaan -> True, Mathematica mewarnai
permukaan menggunakan model yang diterangi simulasi. Namun, dengan Pencahayaan -> False,
Mathematica menggunakan "fungsi warna" untuk menentukan cara mewarnai permukaan.
Fungsi warna default mengambil ketinggian permukaan, dinormalisasi untuk berjalan dari 0 hingga 1, dan warna
setiap bagian permukaan dengan tingkat abu-abu yang sesuai dengan ketinggian ini. Ada dua cara untuk mengubah
default.
Pertama, jika Anda mengatur opsi ColorFunction -> c, maka Mathematica akan menerapkan fungsi c ke
setiap nilai tinggi untuk menentukan warna yang akan digunakan pada saat itu. Dengan ColorFunction ->
Hue, Mathematica misalnya akan mewarnai permukaan dengan berbagai warna..
ColorFunction –> c D
Dengan Pencahayaan -> False, default adalah untuk mewarnai permukaan dengan sisik abu-abu ditentukan oleh
tinggi.
In[9]:= exp = Plot3D[Exp[-Sqrt[x^2 + y^2]], {x, -2, 2}, {y, -2, 2}, Lighting -> False]
0
-1
0 -1
1
0.6
0.4 2
0.2
0
-2
2 -2
Out[9]= - SurfaceGraphics -
Ini mendefinisikan fungsi yang memetakan rentang nilai bergantian menjadi hitam dan putih.
Ini menunjukkan permukaan yang diwarnai dengan garis-garis hitam dan putih.
0
-1
0 -1
1
0.6
0.4 2
0.2
0
-2
2 -2
Out[11]= - SurfaceGraphics -
Cara kedua untuk mengubah pewarnaan permukaan default adalah dengan menyediakan array kedua yang eksplisit
bersama dengan susunan ketinggian. ColorFunction kemudian diterapkan pada elemen array kedua ini, bukan
array ketinggian, untuk menemukan arahan warna untuk digunakan. Dalam array kedua, Anda dapat secara efektif
menentukan nilai koordinat lain untuk setiap titik di permukaan. Koordinat ini akan diplot menggunakan warna,
bukan posisi.
Anda dapat menghasilkan array nilai warna secara otomatis menggunakan Plot3D[{ f, s},...]. Jika Anda
memberikan array secara eksplisit di ListPlot3D atau SurfaceGraphics, Anda harus menyadari
bahwa dengan n ä n array ketinggian, Anda memerlukan array (n – 1) x (n – 1) untuk menentukan warna.
Alasannya adalah bahwa ketinggian ditentukan untuk titik-titik pada grid, sedangkan warna yang ditentukan
untuk kotak pada grid.
Saat Anda menyediakan fungsi atau array kedua ke Plot3D, ListPlot3D, dan seterusnya, pengaturan default
untuk opsi Fungsi Warna $ otomatis. Ini berarti bahwa fungsi atau array harus berisi arahan warna Mathematica
eksplisit, seperti GrayLevel atau RGBColor. Namun, jika Anda memberikan pengaturan lain, seperti
ColorFunction -> Hue, maka fungsi atau array dapat menghasilkan angka murni atau data lain yang
dikonversi ke arahan warna ketika fungsi yang ditentukan oleh ColorFunction diterapkan.
ListPlot3D@ height, color D generate a colored surface plot from an array of heights and colors
SurfaceGraphics@ height, color D a graphics object representing a surface with a specified array of
heights and colors
0 2
0
1 1
2
1
0.75
0.5
0.25
3 0
Out[12]= - SurfaceGraphics -
Ini menempatkan tingkat abu-abu acak di setiap kotak kotak. Perhatikan bahwa array kotak grid adalah 9 ä 9, sedangkan array titik grid
adalah
10 x 10.
In[13]:= ListPlot3D[ Table[i/j, {i, 10}, {j, 10}], Table[GrayLevel[Random[ ]], {i, 9},
{j, 9}] ]
4 10
8
0 6
2
4 4
6
8 2
2
10
Out[13]= - SurfaceGraphics -
Dengan pengaturan opsi default Pencahayaan -> True, Mathematica menggunakan model pencahayaan
simulasi untuk menentukan cara mewarnai poligon dalam grafik tiga dimensi.
Mathematica memungkinkan Anda untuk menentukan dua komponen untuk penerangan suatu objek. Yang pertama
adalah "pencahayaan ambient", yang menghasilkan bayangan seragam di seluruh objek. Yang kedua adalah cahaya
dari kumpulan sumber titik, masing-masing dengan posisi dan warna tertentu. Mathematica menambahkan
bersamasama cahaya dari semua sumber ini dalam menentukan pencahayaan total poligon tertentu.
Berikut adalah permukaan, dinaungi menggunakan pencahayaan simulasi menggunakan set lampu default.
In[1]:= Plot3D[Sin[x + Sin[y]], {x, -3, 3}, {y, -3, 3}, Lighting -> True]
1
0.5
0 2
-0.5
-1
0
-2
0
-2
2
Out[1]= - SurfaceGraphics -
Ini menunjukkan hasil dari menambahkan cahaya ambient, dan menghapus semua sumber cahaya titik.
1
0.5
0 2
-0.5
-1
0
-2
0
-2
2
Out[2]= - SurfaceGraphics -
Ini menambahkan sumber cahaya titik tunggal di sisi kiri gambar.
1
0.5
0 2
-0.5
-1
0
-2
0
-2
2
Out[3]= - SurfaceGraphics -
Posisi sumber cahaya dalam Mathematica ditentukan dalam sistem koordinat tampilan. Koordinat x dan y berada
di bidang tampilan akhir, dan koordinat z keluar dari pesawat. Menggunakan sistem koordinat ini memastikan
bahwa sumber cahaya tetap tetap sehubungan dengan penampil, bahkan ketika posisi relatif pemirsa dan objek
berubah.
Meskipun titik pandang berubah, sumber cahaya tetap di sisi kiri gambar.
-2 -2
0 0
2 2
0.150
-0.-51
Out[4]= - SurfaceGraphics -
Warna poligon yang dirasakan tidak hanya tergantung pada cahaya yang jatuh pada poligon, tetapi juga pada
bagaimana poli-gon mencerminkan cahaya itu. Anda dapat menggunakan arahan grafis SurfaceColor untuk
menentukan cara poligon memantulkan cahaya.
Jika Anda tidak secara eksplisit menggunakan arahan SurfaceColor, Mathematica secara efektif
mengasumsikan bahwa semua poligon memiliki permukaan putih matte. Dengan demikian poligon
memantulkan cahaya dari setiap insiden warna pada mereka, dan melakukannya sama ke segala arah. Ini
adalah model yang tepat untuk bahan-bahan seperti kertas putih uncoated.
Namun, dengan menggunakan SurfaceColor, Anda dapat menentukan model yang lebih rumit. Ide dasarnya
adalah untuk membedakan dua jenis refleksi: menyebar dan specular.
Dalam refleksi difus, insiden cahaya di permukaan tersebar sama ke segala arah. Ketika refleksi semacam ini terjadi,
permukaan memiliki penampilan "kusam" atau "matte". Reflektor difus mematuhi Hukum Refleksi Cahaya Lambert,
yang menyatakan bahwa intensitas cahaya yang dipantulkan adalah cosHaL kali intensitas cahaya insiden, di mana a
adalah sudut antara arah cahaya insiden dan vektor normal permukaan. Perhatikan bahwa ketika a> 90é, tidak ada
cahaya yang dipantulkan.
Dalam refleksi specular, permukaan memantulkan cahaya dengan cara seperti cermin. Akibatnya, permukaan
memiliki penampilan "mengkilap" atau "gloss". Dengan cermin yang sempurna, insiden cahaya pada sudut tertentu
tercermin pada sudut yang persis sama. Sebagian besar bahan, bagaimanapun, menyebarkan cahaya sampai batas
tertentu, dan menyebabkan cahaya yang dipantulkan yang didistribusikan melalui berbagai sudut. Mathematica
memungkinkan Anda untuk menentukan seberapa luas distribusinya dengan memberikan eksponen specular,
didefinisikan sesuai dengan model pencahayaan Phong. Dengan eksponen specular n, intensitas cahaya pada sudut q
jauh dari arah refleksi cermin diasumsikan bervariasi seperti cos HqLn. Sebagai n Ø ¶, oleh karena itu, permukaan
berperilaku seperti cermin yang sempurna. Sebagai n menurun, bagaimanapun, permukaan menjadi kurang
"mengkilap", dan untuk n = 0, permukaan adalah reflektor benar-benar menyebar. Nilai khas n untuk bahan aktual
berkisar dari sekitar 1 hingga beberapa ratus.
Sebagian besar bahan yang sebenarnya menunjukkan campuran refleksi difus dan specular. Selain itu, mereka
biasanya berperilaku seolah-olah mereka memiliki warna intrinsik tertentu. Ketika cahaya insiden berwarna putih,
cahaya yang dipantulkan memiliki warna material. Ketika cahaya insiden tidak putih, setiap komponen warna dalam
cahaya yang dipantulkan adalah produk dari komponen yang sesuai dalam cahaya insiden dan dalam warna intrinsik
dari bahan.
Dalam Mathematica, Anda dapat menentukan sifat refleksi dengan memberikan warna intrinsik yang
terkait dengan refleksi difus, dan satu lagi yang terkait dengan refleksi specular. Untuk tidak mendapatkan
refleksi dari jenis tertentu, Anda harus memberikan warna intrinsik corre-sponding sebagai hitam, atau
GrayLevel. Untuk bahan yang secara efektif "putih", Anda dapat menentukan warna intrinsik dari
bentuk GrayLevel, di mana a adalah reflektansi atau albedo permukaan.
In[5]:= <<Graphics`Shapes`
In[6]:= s = Sphere[ ] ;
In[7]:= Show[Graphics3D[s]]
Out[7]= - Graphics3D -
Hal ini membuat bola memiliki reflektansi difus rendah, tetapi reflektansi specular tinggi. Akibatnya, bola memiliki "cahaya tinggi
specular" di dekat sumber cahaya, dan cukup gelap di tempat lain.
Out[8]= - Graphics3D -
Ketika Anda mengatur sumber cahaya dan warna permukaan, penting untuk memastikan bahwa intensitas total
cahaya yang dipantulkan dari poligon tertentu tidak pernah lebih besar dari 1. Anda akan mendapatkan efek aneh
jika intensitasnya lebih besar dari 1.
Boxed –> True draw a cuboidal bounding box around the graphics HdefaultL
Axes –> True draw x , y and z
axes on the edges of the box Hdefault for SurfaceGraphicsL
Axes –> {False, False, True} draw the z axis only
FaceGrids –> All draw grid lines on the faces of the box
PlotLabel –> text give an overall label for the plot
Default untuk Graphics3D adalah untuk menyertakan kotak, tetapi tidak ada bentuk pelabelan lainnya.
In[2]:= Show[Graphics3D[Dodecahedron[ ]]]
Out[2]= - Graphics3D -
0 Graphics3D -
0.5
Out[3]=
- 1
1
0.5
0
-0.5
0.5 -1
-0.5
0
-0.5 0
0.5
Out[4]= - 1 -
1
Graphics3D -
Hal ini membuat kotak itu melesat, dan menarik sumbu yang lebih tebal dari biasanya.
In[5]:= Show[Graphics3D[Dodecahedron[ ]], BoxStyle -> Dashing[{0.02, 0.02}], Axes -
> True, AxesStyle -> Thickness[0.01]]
1
0.5
0
-0.5
-1
O ics3D -
ut[5]=
0.5
-0.5
-
Graph
-1
-0.5
0
0.5
1
Dengan mengatur opsi Axes -> True, Anda memberi tahu Mathematica untuk menggambar sumbu
di tepi kotak tiga dimensi. Namun, untuk setiap sumbu, pada prinsipnya ada empat tepi yang mungkin di
mana ia dapat ditarik. Opsi AxesEdge memungkinkan Anda untuk menentukan di tepi mana untuk
menggambar masing-masing sumbu.
AxesEdge –> Automatic use an internal algorithm to choose where to draw all axes
AxesEdge –> 8 xspec, yspec, zspec < give separate specifications for each of the x , y and z axes
None do not draw this axis
Automatic decide automatically where to draw this axis
8 diri , dir j < specify on which of the four possible edges to draw this axis
Ini menarik x di tepi dengan koordinat y dan z yang lebih besar, tidak menarik sumbu y, dan memilih secara
otomatis di mana untuk menggambar z.sumbu.
In[6]:= Show[Graphics3D[Dodecahedron[ ]], Axes -> True, AxesEdge -> {{1, 1}, None,
Automatic}]
-1 -0.5
0
0.5
1
0.5
-0.5
Out[6]= - Graphics3D -
Ketika Anda menggambar sumbu x pada kotak tiga dimensi, ada empat tepi yang mungkin di mana sumbu dapat
ditarik. Tepi ini dibedakan dengan memiliki koordinat y dan z yang lebih besar atau lebih kecil. Ketika Anda
menggunakan spesifikasi 8 diry, dirz < tempat menggambar sumbu x, Anda dapat mengatur diri menjadi +1 atau -1
untuk mewakili nilai yang lebih besar atau lebih kecil untuk koordinat y dan z.
Anda dapat menggunakan AxesLabel untuk memberi label tepi kotak, tanpa harus menggambar sisik pada mereka.
In[7]:= Show[Graphics3D[Dodecahedron[ ]], Axes -> True, AxesLabel -> {"x", "y", "z"}, Ticks
-> None]
Out[7]= - Graphics3D -
Anda dapat memberikan spesifikasi tanda centang yang sama dalam tiga dimensi seperti yang dijelaskan untuk
grafik dua dimensi di Bagian 2.10.5.
Ini menarik garis grid hanya di wajah atas dan bawah kotak.
Out[8]= - Graphics3D -
DisplayFunctio default
n
generate no display
–> $DisplayFunction
apply f to graphics objects to produce
DisplayFunction –> Identity
Dalam kernel Mathematica, grafis selalu diwakili oleh objek grafis yang melibatkan grafis primitif. Namun, ketika
Anda benar-benar membuat grafik, mereka harus dikonversi ke bentuk tingkat yang lebih rendah yang dapat diproses
oleh ujung depan Mathematica, seperti antarmuka notebook, atau oleh program eksternal lainnya.
Bentuk tingkat rendah standar yang digunakan Mathematica untuk grafik adalah PostScript. Fungsi Mathematica
Display mengambil objek grafis Mathematica, dan mengubahnya menjadi blok kode PostScript. Kemudian
dapat mengirim kode ini ke file, program eksternal, atau secara umum setiap aliran output..
Display@" file ", graphics D store the PostScript for a piece of Mathematica graphics in a file
Display@"! program ", graphics D send the PostScript to an external program
Display@ stream, graphics D send the PostScript to an arbitrary stream
DisplayString@ graphics D generate a string of PostScript
Dengan primitif grafis dua dimensi standar dalam Mathematica Anda dapat menghasilkan sebagian besar efek yang
dapat diperoleh dengan PostScript. Kadang-kadang, bagaimanapun, Anda mungkin merasa perlu untuk memberikan
kode PostScript secara langsung. Anda dapat melakukan ini dengan menggunakan grafik dua dimensi khusus
PostScript primitif.
String yang Anda tentukan dalam primitif PostScript akan dimasukkan kata demi kata ke dalam gener kode
PostScript akhir yang diintip oleh Display. Anda harus menggunakan PostScript primitif dengan hati-
hati. Misalnya, sangat penting bahwa kode yang Anda berikan mengembalikan tumpukan PostScript ke keadaan
aslinya ketika selesai. Selain itu, untuk menentukan posisi objek, Anda harus memahami penskalaan koordinat
yang dilakukan Mathematica dalam output PostScript-nya.Akhirnya, setiap primitif PostScript yang Anda
sisipkan hanya dapat berfungsi jika didukung dalam penerjemah PostScript akhir yang Anda gunakan untuk
menampilkan grafik Anda.
PostScript primitif memberikan kode PostScript mentah yang menarik kurva Bézier.
In[1]:= Show[Graphics[ { PostScript[".008 setlinewidth"], PostScript[".1 .1 moveto"],
PostScript["1.1 .6 -.1 .6 .9 .1 curveto stroke"] }, Frame -> True]]
1
0.8
0.6
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
Out[1]= - Graphics -
Dalam kebanyakan kasus, objek grafis Mathematica tertentu selalu menghasilkan PostScript dari bentuk tertentu.
Bagi Objek Graphics3D, opsi RenderAll memungkinkan Anda untuk memilih di antara dua bentuk yang
berbeda.
Masalah utamanya adalah bagaimana poligon yang membentuk objek tiga dimensi harus diberikan. Dengan
pengaturan default RenderAll -> True, semua poligon yang Anda tentukan digambar secara penuh, tetapi
yang di belakang digambar terlebih dahulu. Ketika semua poligon ditarik, hanya yang di depan yang terlihat.
Namun, sementara sebuah objek sedang digambar pada layar, Anda biasanya dapat melihat poligon di dalamnya.
Masalah dengan pendekatan ini adalah bahwa untuk objek dengan banyak lapisan, Anda dapat
menghasilkan sejumlah besar kode PostScript palsu yang terkait dengan poligon yang tidak terlihat pada
gambar akhir. Anda berpotensi menghindari hal ini dengan mengatur RenderAll -> False. Dalam hal
ini, Mathematica bekerja persis poligon atau bagian dari poligon akan
Benar-benar terlihat dalam gambar akhir Anda, dan hanya membuat ini. Selama ada cukup sedikit
persimpangan antara poligon, pendekatan ini biasanya akan menghasilkan lebih sedikit kode PostScript,
meskipun mungkin jauh lebih lambat.
RenderAll –> True draw all polygons, starting from the back HdefaultL
RenderAll –> False draw only those polygons or parts
of polygons that are visible in the final image
Ketika Anda menghasilkan representasi PostScript dari objek tiga dimensi, Anda kehilangan semua informasi
tentang kedalaman bagian-bagian objek. Terkadang, Anda mungkin ingin mengirim ke program eksternal
representasi yang mencakup informasi mendalam. Seringkali, objek Graphics3D asli dalam bentuk
Mathematica kemudian merupakan representasi yang sesuai. Tetapi beberapa program eksternal tidak dapat
menangani poligon yang berpotongan.Untuk mengatasi hal ini, Graphics3D menyertakan opsi
PolygonIntersections. Jika Anda mengatur PolygonIntersections -> False, maka Tampilkan bukan
objek Graphics3D asli Anda, melainkan yang di mana poligon berpotongan telah dipecah menjadi
potonganpotongan terputus-putus, setidaknya dengan pengaturan untuk ViewPoint dan seterusnya yang telah
Anda berikan.
2.1.5 Format untuk Teks dalam Grafik
$TextStyle = value set the default text style for all graphics
$FormatType = value set the default text format type for all graphics
TextStyle –> value an option for the text style in a particular graphic
FormatType –> value an option for the text format type in a particular graphic
.8
.6
1 2 3 4 5 6
Out[1]= - Graphics -
Berikut adalah plot yang sama, tetapi sekarang menggunakan font miring 7
poin.
0.8
0.6
0.4
0.2
1 2 3 4 5 6
Out[2]= -
Graphics -
sin2(x)
1
0
.8
0
.6
1 2 3 4 5 6
Out[3]= - Graphics -
Ini memberi tahu Mathematica gaya teks default apa yang digunakan untuk semua
plot berikutnya.
0.8
0.6
0.4
0.2
12 3 4 5 6
Out[5]= -
Graphics -
Jika Anda menggunakan ujung depan buku catatan standar untuk Mathematica, maka Anda dapat mengatur
$TextStyle atau TextStyle menjadi nama gaya sel di buku catatan Anda saat ini. Ini memberitahu
Mathematica untuk menggunakan gaya sel itu sebagai default untuk memformat teks apa pun yang muncul dalam
grafik.
Anda juga dapat secara eksplisit menentukan bagaimana teks harus diformat dengan menggunakan opsi seperti
FontSize dan FontFamily. Perhatikan bahwa FontSize memberikan ukuran absolut font untuk digunakan,
diukur dalam satuan poin printer, dengan satu titik menjadi Åå1åå å inches. Jika Anda mengubah ukuran plot, teks di
dalamnya tidak akan secara default mengubah ukuran: untuk mendapatkan teks dengan ukuran yang berbeda harus
secara eksplisit menentukan nilai baru untuk opsi FontSize.
StyleForm@ expr, " style "D output expr in the specified cell style
StyleForm@ expr, options D output expr using the specified font and style options
Ini menghasilkan label plot menggunakan gaya judul bagian di buku catatan Anda saat ini.
Sin[x]2
1
0.8
0.6
0.4
0.2
12 3 4 5 6
Out[6]= -
Graphics -
Sin[x ]2
1
0.8
0.6
0.4
0.2
12 3 4 5 6
Out[7]= -
Graphics -
Ini menghasilkan output TraditionalForm, dengan font 12 poin.
sin2(x)
1
0.8
0.6
0.4
0.2
12 3 4 5 6
Out[8]= -
Graphics -
Anda harus menyadari bahwa kemampuan untuk merujuk ke gaya sel seperti "Bagian" tergantung pada penggunaan
ujung depan notebook Mathemat-ica standar. Bahkan jika Anda hanya menggunakan antarmuka berbasis teks ke
Mathematica, Anda masih dapat menentukan pemformatan teks dalam grafik menggunakan opsi seperti FontSize.
Koleksi lengkap opsi yang dapat Anda gunakan diberikan di Bagian 2.11.10.
Dengan grafis Teks primitif, Anda dapat menyisipkan teks pada posisi apa pun dalam grafik
Mathematica dua atau tiga dimensi. Kecuali Anda secara eksplisit menentukan gaya atau font menggunakan
StyleForm, teks akan diberikan dalam gaya default Anda saat ini.
Text@ expr, 8 x, y < D text centered at the point 8 x, y <
Text@ expr, 8 x, y <, 8 –1, 0 < D text with its left-hand end at 8 x, y < , 0
Text@ expr, 8 x, y <, 8 1, 0 < D right-hand end at 8 x, y < Text@ <D
expr, 8 x, y <, 8 0, –1 < D centered above 8 x, y <
Text@ expr, 8 x, y <, 8 0, 1 < D centered below 8 x, y <
Text@ expr, 8 x, y <, 8 dx, dy < D text positioned so that 8 x, y < is at relative coordinates
8 dx , dy < within the box that bounds the text
Text@ expr, 8 x, Text@ expr, 8 x, y
Two-dimensional text.
Ini menghasilkan lima potongan teks, dan menampilkannya dalam plot.
In[1]:= Show[Graphics[ Table[ Text[Expand[(1 + x)^n], {n, n}], {n, 5} ] ], PlotRange ->
All]
1 + 5x + 10 x2 + 10 x3 + 5 x4 + x5
1 + 4x + 6 x2 + 4 x3 + x4
1 + 3x + 3 x2 + x3
1 + 2x + x2
1+x
Out[1]= - Graphics
Berikut adalah beberapa teks berorientasi vertikal dengan sisi kirinya pada titik 8 2, 2<.
0 1 2 3 4
Out[2]= - Graphics -
Ketika Anda menentukan offset untuk teks, koordinat relatif yang digunakan diambil untuk berjalan
dari -1 ke 1 di setiap direc-tion di seluruh kotak yang membatasi teks. Titik 8 0, 0< dalam sistem koordinat
ini didefinisikan sebagai pusat teks. Perhatikan bahwa offset yang Anda tentukan tidak perlu terletak pada
rentang -1 hingga 1.
Perhatikan bahwa Anda dapat menentukan warna sepotong teks dengan sebelum grafik Teks primitif dengan
RGBColor atau arahan grafis lainnya.
In[3]:= <<Graphics`Polyhedra`
Ini menempatkan teks pada posisi yang ditentukan dalam tiga dimensi.
point
Out[4]= - Graphics3D -
Perhatikan bahwa ketika Anda menggunakan teks dalam grafik tiga dimensi, Mathematica mengasumsikan bahwa
teks tidak pernah disembunyikan oleh poligon atau objek lainnya.
Secara default teks hanya diletakkan langsung di atas grafis apa pun yang telah digambar.
{0.5, 0.5}]}]]
Some text
Out[5]= - Graphics -
Sekarang ada persegi panjang dengan warna latar belakang seluruh plot yang melampirkan teks.
In[6]:= Show[Graphics[{{GrayLevel[0.5], Rectangle[{0, 0}, {1, 1}]}, Text["Some text",
Some text
Out[6]= - Graphics -
Setiap arahan warna dalam Mathematica menghasilkan arahan warna yang pasti dalam kode PostScript
yang dikirim Mathematica ke perangkat output Anda. Jadi, misalnya, arahan RGBColor dalam Mathematica
menghasilkan setrgbcolor di PostScript. Perlakuan akhir dari arahan warna PostScript ditentukan oleh
perangkat output Anda, dan interpreter PostScript yang digunakan.
Namun demikian, dalam banyak kasus, parameter yang ditentukan dalam arahan warna Mathematica
akan digunakan cukup langsung untuk mengatur intensitas atau kepadatan komponen output warna.
Ketika ini dilakukan, penting untuk menyadari bahwa satu set parameter tertentu dalam arahan warna
Mathematica dapat menghasilkan warna yang dirasakan berbeda pada perangkat output yang berbeda.
Misalnya, intensitas sebenarnya dari kompo-nent merah, hijau dan biru akan sering berbeda antara tampilan
warna yang berbeda bahkan ketika pengaturan untuk komponen ini sama. Perbedaan tersebut juga terjadi
ketika kecerahan atau kontras dari tampilan warna tertentu berubah.
Selain itu, Anda harus menyadari bahwa "keseluruhan" lengkap warna yang dapat Anda hasilkan
dengan berbagai parameter pada perangkat output tertentu lebih kecil, seringkali secara substansial begitu,
daripada keseluruhan warna yang dapat dirasakan oleh sistem visual manusia. Meskipun ruang warna yang
dapat kita rasakan dapat dijelaskan dengan tiga parameter, tidak mungkin untuk mencapai semua bagian
ruang ini dengan campuran sejumlah tetap "warna primer".
Pilihan warna primer yang berbeda biasanya dibuat untuk berbagai jenis perangkat output. Tampilan warna, yang
bekerja dengan cahaya yang dipancarkan atau ditransmisikan, biasanya menggunakan warna primer merah, hijau dan
biru. Namun, pencetakan warna, yang bekerja dengan cahaya yang dipantulkan, biasanya menggunakan cyan,
magenta, kuning dan hitam sebagai warna primer. Ketika gambar warna dicetak, empat pass terpisah biasanya
dibuat, setiap kali meletakkan salah satu warna utama ini.
Jadi, sementara RGBColor dan Hue adalah spesifikasi warna alami untuk tampilan warna, CMYKColor adalah
specifi-cation alami untuk pencetakan warna.
Secara default, Mathematica mengambil spesifikasi warna apa pun yang Anda berikan, dan menggunakannya
secara langsung. Pilihan ColorOut put, bagaimanapun, memungkinkan Anda untuk membuat Mathematica selalu
mengkonversi spesifikasi warna yang Anda berikan kepada yang sesuai untuk jenis perangkat output tertentu.
Salah satu masalah yang paling rumit dalam output warna adalah melakukan "pemisahan warna" yang
diperlukan untuk mengambil warna yang ditentukan menggunakan primer merah, hijau dan biru, dan
membuat warna menggunakan tinta pencetakan cyan, magenta, kuning dan hitam. Mathematica memiliki
algoritma built-in untuk melakukan konversi ini. Algoritma ini didasarkanpadapendekatan untuk
tipikalmemantau warna dan set standar tinta pencetakan proses empat warna. Perhatikan bahwa warna tinta
cetak ini bahkan tidak dekat dengan pelengkap warna monitor yang khas, dan transformasi sebenarnya cukup
nonlinier.
Sementara Mathematica memiliki kemampuan built-in untuk berbagai konversi warna, Anda juga dapat menentukan
warna Anda sendiri conver-sions menggunakan ColorOutput -> f. Dengan pengaturan opsi ini, fungsi f secara
otomatis diterapkan pada setiap warna direc-tive yang dihasilkan oleh Mathematica.
Perhatikan bahwa sementara salah satu arahan warna yang diberikan di atas dapat digunakan dalam menyiapkan
objek grafis, perhitungan pencahayaan simulasi di Mathematica selalu dilakukan menggunakan RGBColor, sehingga
semua arahan warna secara otomatis dikonversi ke bentuk ini ketika simulasi pencahayaan digunakan.
Ini mendefinisikan transformasi pada objek RGBColor, yang mengekstrak komponen merah, dan men kuadratnya.
In[1]:= red[RGBColor[r_, g_, b_]] = GrayLevel[r^2]
Out[1]= GrayLevel@r2D
Ini menentukan bahwa merah hanya harus kuadrat setiap spesifikasi GrayLevel.
In[2]:= red[GrayLevel[g_]] = GrayLevel[g^2]
Out[2]= GrayLevel@g2D
Ini plot komponen merah kuadrat, daripada menggunakan transformasi biasa dari warna ke hitam dan putih.
In[3]:= Plot3D[Sin[x + y], {x, -3, 3}, {y, -3, 3}, ColorOutput -> red]
1
0
5
-0
Out[3]= - SurfaceGraphics -
Perhatikan bahwa jika Anda memberikan transformasi ColorOutput Anda sendiri, Anda harus menentukan
bagaimana transformasi bertindak pada setiap arahan warna yang muncul dalam gambar yang Anda hasilkan. Untuk
plot tiga dimensi yang dinaungi dengan pencahayaan simulasi, Anda biasanya harus menentukan transformasi
setidaknya untuk RGBColor dan GrayLevel.
Bagian 1.9.12 menjelaskan bagaimana Anda dapat mengambil fungsi dan daftar data dan
menghasilkan suara dari mereka. Subbagian ini membahas bagaimana suara diwakili dalam Mathematica.
Mathematica memperlakukan terdengar seperti grafis. Bahkan, Mathematica memungkinkan Anda untuk
menggabungkan grafis dengan suara untuk membuat gambar dengan "trek suara".
Dalam analogi dengan grafis, suara dalam Mathematica diwakili oleh objek suara simbolis. Objek suara memiliki
suara kepala, dan berisi daftar primitif suara, yang mewakili suara yang akan dimainkan secara berurutan .
Fungsi Play dan ListPlay dibahas di Bagian 1.9.12 mengembalikan objek Suara.
Putar mengembalikan objek Suara. Pada sistem komputer yang sesuai, itu juga menghasilkan
suara.
Out[1]= -Sound-
Objek Suara berisi SampledSoundFunction primitif yang menggunakan fungsi dikompilasi untuk menghasilkan sampel amplitudo untuk suara.
In[2]:= Short[ InputForm[%] ]
Out[2]//Short=
Sound[SampledSoundFunction[<<3>>]]
Pada tingkat terendah, semua suara dalam Mathematica direpresentasikan sebagai urutan sampel amplitudo. Dalam
SampledSound List, sampel amplitudo ini diberikan secara eksplisit dalam daftar. Namun, dalam
SampledSoundFunction, mereka dihasilkan ketika suara adalah output, dengan menerapkan fungsi yang ditentukan
ke urutan argumen integer. Dalam kedua kasus, semua nilai amplitudo yang diperoleh harus antara -1 dan 1.
Setelah Anda menghasilkan objek suara yang berisi berbagai suara primitif, Anda kemudian harus output sebagai
suara. Sama seperti grafis, skema dasarnya adalah mengambil representasi Mathematica dari suara, dan
mengubahnya menjadi bentuk tingkat yang lebih rendah yang dapat ditangani oleh program eksternal, seperti ujung
depan Mathematica.
Representasi suara tingkat rendah yang digunakan oleh Mathematica terdiri dari urutan angka heksadesimal yang
menentukan tingkat amplitudo. Dalam Mathematica, tingkat amplitudo diberikan sebagai perkiraan bilangan real
antara -1 dan 1. Dalam menghasilkan bentuk tingkat rendah, tingkat amplitudo "terkuantisasi". Anda dapat
menggunakan opsi SampleDepth untuk menentukan berapa banyak bit yang harus digunakan untuk setiap
sampel. Default adalah SampleDepth -> 8, yang menghasilkan 256 tingkat amplitudo yang mungkin, cukup untuk
sebagian besar tujuan.
Anda dapat menggunakan opsi SampleDepth di salah satu fungsi Play, ListPlay, dan PlaySound.
Dalam primi-tives suara, Anda dapat menentukan kedalaman sampel dengan mengganti argumen laju sampel
dengan tingkat daftar 8, kedalaman< .
Karena grafik dan suara dapat dikombinasikan dalam Mathematica, representasi tingkat rendah mereka tidak
boleh bertentangan. Seperti yang dibahas dalam Bagian 2.10.14, semua grafik dalam Mathematica dihasilkan
dalam bahasa PostScript. Suara juga dihasilkan sebagai fungsi PostScript khusus, yang dapat diabaikan oleh
interpreter PostScript pada perangkat yang tidak mendukung output suara.
Mathematica menggunakan fungsi yang sama Display untuk output suara, grafis, dan kombinasi dari keduanya.
Di Play, ListPlay dan Sound, opsi DisplayFunction menentukan bagaimana suara pada akhirnya harus dihasilkan.
Default untuk opsi ini adalah variabel global $SoundDisplayFunction. Biasanya, ini diatur ke panggilan yang
sesuai ke Display.
Ketika Anda mengekspor grafik di luar Mathematica, Anda biasanya harus menentukan ukuran absolut di mana
grafik harus diberikan. Anda dapat melakukan ini menggunakan opsi ImageSize untuk Ekspor.
ImageSize->x membuat lebar grafik menjadi titik printer x; ImageSize->72 xi sehingga membuat lebar xi inci.
Defaultnya adalah menghasilkan gambar yang lebarnya empat inci. ImageSize->8 x, y< menskalakan grafik
sehingga cocok di wilayah x ä y.
Banyak program dan perangkat menerima grafis dalam format resolusi-independen seperti Encapsulated
PostScript (EPS). Tetapi beberapa mengharuskan grafik dikonversi menjadi raster atau bitmap dengan resolusi
tertentu. Opsi ImageResolu $ tion untuk Ekspor memungkinkan Anda menentukan resolusi apa dalam titik per
inci (dpi) yang harus digunakan.Semakin rendah Anda mengatur resolusi ini, semakin rendah kualitas gambar
yang akan Anda dapatkan, tetapi juga semakin sedikit memori yang akan diambil gambar untuk disimpan. Untuk
tampilan layar, resolusi khas adalah 72 dpi ke atas; untuk printer, 300 dpi ke atas.
- Graphics -
In[4]:= Show[g]
Out[4]= - Graphics -
This shows an array of four copies of the image.
Out[5]= - GraphicsArray -
Impor menghasilkan ekspresi dengan struktur yang berbeda tergantung pada jenis data yang
dibacanya.
Biasanya Anda perlu mengetahui struktur jika Anda ingin memanipulasi data yang dikembalikan.
Graphics@ primitives, opts D resolution-independent graphics
Sound@SampledSoundList@ sounds
data, r DD
Out[6]//Shallow=
250
200
150
100
50
Show Expression menu item toggle between displayed form and underlying
Mathematica expression
‚ Î ∗ Ï or ‚ Î 8Ï Hbetween existing cellsL put up a dialog box to allow input of a cell in
Mathematica expression form
Berikut adalah sel yang ditampilkan dengan cara yang biasa di ujung depan.
Berikut adalah ekspresi Mathematica yang mendasari yang sesuai dengan sel.
Cell@ contents, " style ", options D a cell with additional options specified
Dalam buku catatan tertentu, selalu ada koleksi gaya yang dapat digunakan untuk menentukan penampilan dan
perilaku sel. Biasanya gaya diberi nama untuk mencerminkan sel peran apa yang akan dimainkannya di buku
catatan.
Gaya tertentu seperti "Bagian" atau "Teks" mendefinisikan berbagai pengaturan untuk opsi yang terkait dengan
sel. Anda dapat mengganti pengaturan ini dengan secara eksplisit mengatur opsi dalam sel tertentu.
Berikut adalah ekspresi untuk sel di mana opsi diatur untuk menggunakan latar belakang abu-abu dan untuk menempatkan bingkai di
sekitar sel.
Begitulah tampilan sel di buku catatan.
Ujung depan notebook standar untuk Mathematica menyediakan beberapa cara untuk mengubah opsi sel. Dalam
kasus sederhana, seperti mengubah ukuran atau warna teks, akan sering ada item menu tertentu untuk tujuan
tersebut. Tetapi secara umum Anda dapat menggunakan inspektur opsi yang dibangun di ujung depan. Ini
biasanya diakses menggunakan item menu Pemeriksa Opsi di menu Format.
Terkadang Anda hanya ingin mengubah opsi yang terkait dengan sel tertentu. Tetapi seringkali Anda mungkin
ingin mengubah opsi yang terkait dengan semua sel di buku catatan Anda yang memiliki gaya tertentu. Anda
dapat melakukan ini dengan menggunakan perintah Edit Lembar Gaya di ujung depan untuk membuka lembar
gaya yang terkait dengan buku catatan Anda, lalu memodifikasi opsi untuk sel dalam style sheet ini yang
mewakili gaya yang ingin Anda ubah .
CellPrint memungkinkan Anda untuk mengambil ekspresi Sel mentah dan memasukkannya ke dalam buku
catatan Anda saat ini. Kadang-kadang, bagaimanapun, Anda mungkin merasa lebih nyaman untuk memberikan
ekspresi Mathematica biasa, dan kemudian memiliki Mathematica mengubahnya menjadi Sel dengan gaya
tertentu, dan memasukkan sel ini ke dalam buku catatan. Anda dapat melakukan ini dengan menggunakan
fungsi StylePrint.
StylePrint@ expr, " style "D create a new cell of the specified style, and write expr into it
StylePrint@ contents, use the specified options for the new cell
" style ", options D
Ini menyisipkan gaya sel dalam bagian ke dalam buku catatan Anda saat ini.
CellPrint dan StylePrint menyediakan cara sederhana untuk memodifikasi notebook terbuka di ujung depan
dari dalam kernel. Nantinya pada bagian ini kita akan membahas cara-cara yang lebih canggih dan fleksibel
untuk melakukan hal ini.
2.2.2 Buku catatan sebagai Ekspresi Matematika
Notebook[8
Cell["Section heading",
"Section"], Cell["Some text.",
"Text"],
Cell["More text.", "Text"]<]
Sama seperti sel individu, notebook di Mathematica juga dapat memiliki pilihan. Anda dapat melihat
dan memodifikasi opsi ini menggunakan inspektur opsi di ujung depan buku catatan standar.
Selain opsi notebook, Anda juga dapat mengatur opsi sel apa pun di tingkat notebook. Melakukan hal ini
memberitahu Mathematica untuk menggunakan pengaturan opsi itu sebagai default untuk semua sel di buku catatan.
Anda dapat mengganti default dengan secara eksplisit mengatur opsi dalam sel tertentu.
Berikut adalah ekspresi yang sesuai dengan buku catatan dengan penggaris ditampilkan di toolbar di bagian atas jendela.
Notebook[8
Cell["Section heading",
"Section"], Cell["Some text.",
"Text"]<,
WindowToolbars->8 "RulerBar"<]
Ini mengatur warna latar belakang default untuk semua sel di buku catatan.
Notebook[8
Cell["Section heading",
"Section"], Cell["Some text.",
"Text"]<,
Background->GrayLevel[.7]]
Jika Anda pergi ke luar Mathematica dan melihat teks mentah dari file yang sesuai dengan buku catatan
Mathematica, Anda akan menemukan bahwa apa yang ada dalam file hanyalah bentuk tekstual dari ekspresi yang
mewakili notebook. Salah satu cara untuk membuat buku catatan Mathematica adalah dengan membangun ekspresi
yang tepat dan memasukkannya ke dalam file.
Dalam file notebook yang ditulis oleh Mathematica, beberapa informasi tambahan biasanya disertakan untuk
membuatnya lebih cepat bagi Mathematica untuk membaca file lagi. Informasi tersebut dilampirkan dalam
komentar Mathematica yang ditunjukkan oleh (*...*) sehingga tidak mempengaruhi ekspresi aktual yang
tersimpan dalam file.
In[2]:= <<sample.nb
In[3]:= NotebookOpen["sample.nb"]
Setelah Anda menyiapkan buku catatan di ujung depan menggunakan NotebookOpen, Anda kemudian dapat
memanipulasi buku catatan secara interaktif seperti halnya notebook lainnya. Tetapi untuk menggunakan
NotebookOpen, Anda harus secara eksplisit memiliki ekspresi buku catatan dalam file. Namun, dengan
NotebookPut, Anda dapat mengambil ekspresi buku catatan yang telah Anda buat di kernel, dan segera
menampilkannya sebagai buku catatan di ujung depan.
In[6]:= NotebookPut[%]
Out[5]= -NotebookObject-
Anda dapat menggunakan NotebookGet untuk mendapatkan notebook yang sesuai dengan NotebookObject tertentu kembali ke
kernel.
In[7]:= NotebookGet[%]
Di dalam kernel Mathematica, buku catatan yang telah Anda buka di ujung depan dirujuk
oleh objek buku catatan dalam bentuk NotebookObject[fe, id]. Argumen pertama NotebookObject
menentukan FrontEndObject untuk ujung depan tempat notebook berada, sedangkan argumen
kedua memberikan nomor seri unik untuk notebook.
Jika Anda ingin melakukan manipulasi ekstensif pada notebook tertentu, Anda biasanya akan
merasa nyaman menggunakan Note bookGet untuk memasukkan seluruh notebook ke dalam kernel
sebagai ekspresi tunggal. Tetapi jika sebaliknya Anda ingin melakukan urutan operasi kecil pada
notebook, maka seringkali lebih baik meninggalkan notebook di front end, dan kemudian mengirim
perintah spesifik dari kernel ke front end untuk memberi tahu operasi apa yang harus dilakukan. .
Mathematica diatur sehingga apa pun yang dapat Anda lakukan secara interaktif ke notebook
di front end juga dapat Anda lakukan dengan mengirimkan perintah yang sesuai ke front end dari
kernel.
Dalam notebook terbuka mana pun, ujung depan selalu mempertahankan pilihan saat ini.
Pemilihan dapat terdiri misalnya dari wilayah teks dalam sel atau sel lengkap. Biasanya pemilihan
ditunjukkan pada layar dengan beberapa bentuk penyorotan. Pemilihan juga dapat antara dua
karakter teks, atau antara dua sel, dalam hal ini biasanya ditunjukkan di layar dengan bilah
penyisipan vertikal atau horizontal.
Anda dapat mengubah pilihan saat ini di buku catatan yang terbuka dengan mengeluarkan perintah
dari kernel.
Dalam menyiapkan buku catatan besar, seringkali lebih mudah untuk menyisipkan tag yang
biasanya tidak ditampilkan, tetapi menandai sel tertentu sedemikian rupa sehingga dapat ditemukan
menggunakan NotebookFind. Anda dapat mengatur tag untuk sel baik secara interaktif di ujung
depan, atau dengan secara eksplisit mengatur opsi CellTags untuk sel.
NotebookLocate adalah fungsi dasar yang dipanggil Mathematica saat Anda mengikuti
hyperlink di buku catatan. Item menu Buat Hyperlink mengatur NotebookLocate yang sesuai
sebagai bagian dari skrip untuk tombol hyperlink tertentu.
NotebookWrite[obj, data] mirip dengan operasi Tempel di ujung depan: ini menggantikan
pilihan saat ini di buku catatan Anda dengan data. Jika pilihan saat ini adalah sel
NotebookWrite[obj, data] akan mengganti sel dengan data. Namun, jika pilihan saat ini terletak di
antara dua sel, maka NotebookWrite[obj, data] akan membuat sel atau sel baru yang sesuai.
Ini membuat sel baru, dan menyalin pilihan saat ini ke dalamnya.
Ini membungkus Factor di sekitar konten sel saat ini.
Ini mengevaluasi isi sel saat ini, dan membuat sel baru untuk memberikan hasilnya
Anda.
Dengan menjalankan perintah seperti SetSelectedNotebook dan NotebookOpen, Anda
memberi tahu ujung depan Mathematica untuk mengubah jendela yang Anda lihat. Terkadang Anda
mungkin ingin memanipulasi buku catatan tanpa pernah menampilkannya di layar. Anda dapat
melakukan ini dengan menggunakan pengaturan opsi Terlihat->Salah di NotebookOpen atau
NotebookCre makan
Dengan menggunakan NotebookWrite, Anda dapat secara efektif memasukkan teks biasa
yang dapat Anda masukkan ke keyboard ke ujung depan. FrontEndTokenExecute memungkinkan
Anda untuk mengirim dari kernel perintah apa pun yang dapat dijalankan oleh front end. Perintah
ini mencakup item menu dan urutan control
Dengan menyetel ButtonStyle Anda dapat menentukan default baik untuk bagaimana tombol akan
ditampilkan, dan apa tindakannya. Ujung depan notebook menyediakan sejumlah pengaturan
ButtonStyle standar, yang dapat Anda akses dari item menu Create Button dan Edit Button
Pengaturan ButtonStyle tertentu akan menentukan default untuk semua opsi tombol lainnya.
Beberapa opsi ini akan mempengaruhi tampilan tombol, seperti yang dibahas dalam Bagian 2.9.11.
Lainnya memengaruhi tindakan yang dilakukannya.
Yang pada akhirnya menentukan aksi sebuah tombol adalah pengaturan untuk opsi
ButtonFunction. Pengaturan ini memberikan fungsi Mathematica yang akan dijalankan setiap kali
tombol diklik. Biasanya fungsi ini akan menjadi kombinasi dari berbagai perintah manipulasi notebook.
Jadi, misalnya, dalam bentuk paling dasar, tombol Tempel akan memiliki Fungsi Tombol
yang diberikan secara efektif oleh NotebookApply[SelectedNotebook[ ], #]&, sedangkan tombol
Hyperlink akan memiliki Fungsi Tombol yang diberikan secara efektif oleh NotebookLocate[#2]&.
Ketika sebuah tombol diklik, dua argumen diberikan ke ButtonFunction-nya. Yang pertama
ditentukan oleh Button Source, dan yang kedua oleh ButtonData
Biasanya ButtonData diatur menjadi ekspresi tetap, yang ditentukan saat tombol pertama kali
dibuat. ButtonSource, di sisi lain, biasanya berubah dengan isi tombol, atau lingkungan di mana
tombol muncul.
Seperti yang telah dibahas di bagian sebelumnya, ujung depan notebook standar hanya dapat
menangani serangkaian perintah terbatas, semuanya diidentifikasi dalam konteks FrontEnd`. Tetapi
perintah ini cukup untuk dapat mengimplementasikan semua tindakan yang terkait dengan gaya
tombol standar seperti Tempel, EvaluateCell, dan Hyperlink.
Perhatikan bahwa bahkan jika ekspresi dikirim ke ujung depan, itu akan dieksekusi hanya jika
dibungkus dengan lucu FrontEndExe.
Ini adalah ekspresi yang sesuai dengan sel. Input Mathematica ada di dalam sel yang disematkan di
dalam teks.
2.11.8 Gaya dan Warisan Pengaturan Opsi
Di ujung depan notebook standar, Anda dapat memeriksa dan mengatur opsi di tingkat mana
pun dengan menggunakan item menu Pemeriksa Opsi. Jika Anda tidak menetapkan opsi pada level
tertentu, maka nilainya akan selalu diwarisi dari level di atasnya. Jadi, misalnya, jika sel tertentu
tidak mengatur opsi CellFrame, maka nilai yang digunakan akan diwarisi dari pengaturannya untuk
gaya sel atau untuk seluruh buku catatan yang berisi sel.
Akibatnya, jika Anda mengatur CellFrame->True pada tingkat seluruh buku catatan, maka
semua sel di buku catatan akan memiliki bingkai yang digambar di sekitarnya—kecuali gaya sel
tertentu, atau sel itu sendiri, secara eksplisit menimpa pengaturan ini .
Tergantung pada tujuan Anda menggunakan buku catatan Mathematica, Anda mungkin ingin
memilih gaya default dasar yang berbeda untuk buku catatan tersebut. Di ujung depan notebook
standar, Anda dapat melakukan ini menggunakan item menu Edit Style Sheet.
Dengan setiap pilihan gaya default dasar, gaya yang disediakan akan berubah. Jadi, misalnya,
hanya dalam gaya default Buku terdapat gaya Kotak yang mengatur kotak abu-abu yang digunakan
dalam buku ini.
Ini adalah notebook yang sama dengan lingkungan gaya Layar kental.
Cara Mathematica benar-benar menyiapkan definisi untuk gaya adalah dengan menggunakan
sel definisi gaya. Sel-sel ini dapat diberikan dalam buku catatan definisi gaya terpisah, atau dapat
disertakan dalam opsi buku catatan tertentu. Dalam kedua kasus tersebut, Anda dapat mengakses
definisi gaya dengan menggunakan item menu Edit Style Sheet di ujung depan notebook standar.
Opsi CellMargins memungkinkan Anda menentukan margin horizontal dan vertikal untuk
diletakkan di sekitar sel. Anda dapat mengatur margin horizontal secara interaktif dengan
menggunakan penghentian margin di penggaris yang ditampilkan saat Anda memilih item menu
Perlihatkan Penggaris di ujung depan.
Kapan pun sebuah opsi dapat merujuk ke keempat tepi sel, Mathematica mengikuti konvensi
bahwa pengaturan untuk opsi mengambil bentuk (left), (right), (bottom), (top). Dengan memberikan
nilai bukan nol untuk elemen atas dan bawah, CellMargins dapat menentukan celah untuk
ditinggalkan di atas dan di bawah sel tertentu. Nilai selalu dianggap dalam poin printer.
Hampir setiap aspek notebook Mathematica dapat dikontrol oleh beberapa opsi atau lainnya.
Aspek yang lebih rinci biasanya ditangani oleh "opsi agregat" seperti CellElementSpacings.
Pengaturan untuk opsi ini adalah daftar aturan Mathematica, yang secara efektif memberikan nilai
untuk urutan subopsi. Nama-nama subopsi ini biasanya berupa string, bukan simbol.
Ini menunjukkan pengaturan untuk semua subopsi yang terkait dengan CellElementSpacings.
Mathematica memungkinkan Anda untuk menyematkan sel di dalam potongan teks. Opsi
CellBaseline menentukan bagaimana "sel sebaris" tersebut akan disejajarkan secara vertikal
sehubungan dengan teks di sekitarnya. Dalam analogi langsung dengan opsi Grid Baseline untuk
GridBox, opsi CellBaseline menentukan aspek sel apa yang harus dianggap sebagai dasarnya.
Selain isi sel yang sebenarnya, seringkali berguna untuk mengaitkan berbagai jenis data tambahan
dengan sel.
Dalam sesi Mathematica standar, sel yang berisi baris input dan output kernel yang berurutan
diberi label dalam bentuk In[n]:= dan Out[n]=. Opsi ShowCellLabel menentukan apakah label
tersebut harus ditampilkan. CellLabelAutoDelete menentukan apakah label pada sel harus dihapus
jika konten sel diubah. Melakukan hal ini memastikan bahwa label In[n]:= dan Out[n]= hanya
terkait dengan bagian input dan output kernel yang tidak dimodifikasi.
Tag sel biasanya digunakan untuk mengaitkan kata kunci atau atribut lain dengan sel, yang
dapat dicari menggunakan fungsi seperti NotebookFind. Tujuan untuk hyperlink di notebook
Mathematica biasanya diimplementasikan menggunakan tag sel.
Opsi ConversionRules memungkinkan Anda memberikan daftar yang berisi entri seperti
"TeX" -> data yang menentukan bagaimana konten sel harus dikonversi ke format eksternal. Ini
sangat relevan jika Anda ingin menyimpan salinan bentuk asli sel yang telah dikonversi dalam
format notebook Mathematica dari beberapa format eksternal.
Opsi Dihapus, Dapat Disalin, Dapat Dipilih, dan Dapat Diedit memungkinkan Anda
mengontrol operasi interaktif apa yang harus diizinkan pada sel. Dengan menyetel opsi ini ke False
di tingkat buku catatan, Anda dapat melindungi semua sel dalam buku catatan.
Bahkan jika Anda mengizinkan sel tertentu untuk diedit, Anda dapat mengatur
CellEditDuplicate->True agar Mathematica membuat salinan konten sel sebelum benar-benar
diubah. Gaya untuk sel yang berisi keluaran dari evaluasi kernel Mathematica biasanya
menggunakan opsi ini.
Mathematica memungkinkan untuk menentukan evaluator yang berbeda untuk setiap sel
dalam buku catatan. Tetapi paling sering, opsi Evaluasi diatur hanya pada tingkat notebook,
biasanya menggunakan item menu Kernel di ujung depan.
Opsi CellAutoOverwrite biasanya diatur ke True untuk gaya yang mewakili keluaran
Mathematica. Melakukan ini berarti bahwa ketika Anda mengevaluasi kembali bagian tertentu dari
input, Mathematica secara otomatis akan menghapus output yang sebelumnya dihasilkan dari input
tersebut, dan akan menimpanya dengan output baru.
Opsi GeneratedCell diatur setiap kali sel dihasilkan oleh permintaan eksternal ke ujung depan
daripada oleh operasi interaktif di ujung depan. Jadi, misalnya, setiap sel yang diperoleh sebagai
keluaran dari evaluasi kernel, atau dibuat menggunakan fungsi seperti CellPrint atau
NotebookWrite, akan memiliki GeneratedCell->True.
Saat Anda menampilkan buku catatan di layar, Anda dapat menggulirnya terus menerus.
Tetapi jika Anda mencetak buku catatan, Anda harus memutuskan di mana jeda halaman akan
terjadi. Pengaturan opsi Automatic for a page break memberitahu Mathematica untuk membuat
page break jika perlu; True menentukan bahwa page break harus selalu dibuat, sedangkan False
menentukan bahwa itu tidak boleh
Jika Anda memiliki blok teks besar yang tidak mengandung karakter Return eksplisit, maka
Mathematica akan secara otomatis memecah teks Anda menjadi urutan baris. Opsi PageWidth
menentukan berapa lama setiap baris harus diizinkan
Opsi TextAlignment memungkinkan Anda untuk menentukan bagaimana Anda ingin baris
teks yang berurutan disejajarkan. Karena Mathematica biasanya memecah teks hanya pada spasi
atau karakter tanda baca, biasanya berakhir dengan garis dengan panjang yang berbeda. Biasanya
variasi panjang akan memberi teks Anda batas yang tidak rata. Tetapi Mathematica memungkinkan
Anda untuk menyesuaikan spasi dalam baris teks yang berurutan sehingga membuat garis lebih
hampir sama panjangnya. Pengaturan untuk Pembenaran Teks memberikan fraksi ruang ekstra yang
diizinkan untuk ditambahkan oleh Mathematica. TextJustifica tion->1 mengarah ke "pembenaran
penuh" di mana semua baris teks yang lengkap disesuaikan agar sama panjangnya.
Saat Anda memasukkan blok teks dalam buku catatan Mathematica, Mathematica akan
memperlakukan setiap karakter Pengembalian eksplisit yang Anda ketikkan sebagai pemisah
paragraf. Opsi ParagraphIndent memungkinkan Anda menentukan seberapa banyak Anda ingin
membuat indentasi baris pertama di setiap paragraf. Dengan memberikan pengaturan negatif untuk
ParagraphIndent, Anda dapat membuat baris pertama menonjol ke kiri relatif terhadap baris
berikutnya
Mathematica memungkinkan Anda untuk menentukan font yang ingin Anda gunakan dengan
cukup detail. Namun, terkadang kombinasi tertentu dari kelompok font dan variasi yang Anda minta
mungkin tidak tersedia di sistem komputer Anda. Dalam kasus seperti itu, Mathematica akan
mencoba menemukan pendekatan terdekat yang bisa dilakukan. Ada berbagai opsi tambahan,
seperti FontPostScriptName, yang dapat Anda atur untuk membantu Mathematica menemukan font
yang sesuai. Selain itu, Anda dapat mengatur FontSubstitusi menjadi daftar aturan yang
memberikan penggantian untuk mencoba nama keluarga font.
Ada banyak sekali font yang tersedia untuk teks biasa. Tetapi untuk karakter teknis khusus,
dan bahkan untuk huruf Yunani, font yang tersedia jauh lebih sedikit. Sistem Mathematica
mencakup font yang dibangun untuk mendukung semua berbagai karakter khusus yang digunakan
oleh Mathematica. Ada tiga versi font ini: biasa (seperti Times), monospace (seperti Courier), dan
sans serif (seperti Helvetica).
Untuk font teks tertentu, Mathematica mencoba memilih font karakter khusus yang paling
cocok. Anda dapat membantu Mathematica untuk membuat pilihan ini dengan memberikan aturan
untuk "FontSerifed" dan "FontMonospaced" dalam pengaturan untuk opsi FontProperties. Anda
juga dapat memberikan aturan untuk "FontEncoding" untuk menentukan secara eksplisit dari font
apa setiap karakter akan diambil
Opsi SingleLetterItalics dan ZeroWidthTimes biasanya disetel setiap kali sel menggunakan
Tradition alForm.
Dibangun ke Mathematica adalah sejumlah besar alias untuk karakter khusus umum.
InputAliases memungkinkan Anda untuk menambahkan alias Anda sendiri untuk karakter khusus
lebih lanjut atau untuk jenis input Mathematica lainnya. Aturan bentuk "nama"->expr menetapkan
bahwa namaÇ harus segera diganti pada input dengan expr.
Alias dibatasi oleh karakter  eksplisit. Opsi InputAutoReplacements memungkinkan Anda
untuk menentukan bahwa jenis urutan input tertentu harus segera diganti meskipun tidak memiliki
pembatas eksplisit. Secara default, misalnya, -> segera diganti dengan . Anda dapat memberikan
aturan bentuk "seq"->"rhs" untuk menentukan bahwa setiap kali seq muncul sebagai token di input
Anda, itu harus segera diganti dengan rhs
Opsi LanguageCategory memungkinkan Anda memberi tahu Mathematica jenis konten apa
yang seharusnya dimiliki sel. Ini menentukan bagaimana ejaan dan struktur harus diperiksa, dan
bagaimana tanda hubung harus dilakukan.
Mathematica biasanya memungkinkan Anda untuk memilih bagian mana pun dari ekspresi
yang Anda lihat di layar. Namun, kadang-kadang, Anda mungkin merasa berguna untuk membuat
Mathematica hanya mengizinkan pilihan yang sesuai dengan subekspresi lengkap. Anda dapat
melakukan ini dengan mengatur opsi StructuredSelection->True
Seperti yang dibahas dalam Bagian 2.9, Mathematica menyediakan banyak opsi untuk
menentukan bagaimana ekspresi harus ditampilkan. Dengan menggunakan StyleBox[box, opts]
Anda dapat menerapkan opsi tersebut ke koleksi kotak. Tetapi Mathematica diatur sehingga opsi
apa pun yang dapat Anda berikan ke StyleBox juga dapat diberikan ke objek Sel lengkap, atau
bahkan Notebook lengkap. Jadi, misalnya, opsi seperti Background dan LineIndent dapat diberikan
untuk melengkapi sel serta objek StyleBox individual.
Ada beberapa opsi yang hanya berlaku untuk jenis kotak tertentu, seperti GridBox. Biasanya
opsi ini paling baik diberikan secara terpisah di setiap GridBox di mana mereka dibutuhkan. Namun
terkadang Anda mungkin ingin menentukan pengaturan default untuk diwarisi oleh semua objek
GridBox yang muncul di sel tertentu. Anda dapat melakukan ini dengan memberikan pengaturan
default ini sebagai nilai opsi GridBoxOptions untuk seluruh sel.
Untuk setiap jenis kotak bernama XXXBox, Mathematica menyediakan opsi sel
XXXBoxOptions yang memungkinkan Anda menentukan pengaturan opsi default untuk jenis kotak
tersebut.
Mathematica menghasilkan grafik animasi dengan mengambil urutan sel grafik, dan
kemudian memperlakukannya seperti bingkai dalam film. Opsi AnimationDisplayTime
menentukan berapa lama sel tertentu harus ditampilkan sebagai bagian dari film.
Dalam memberikan definisi gaya untuk buku catatan tertentu, Mathematica memungkinkan
Anda untuk mereferensikan buku catatan lain, atau secara eksplisit menyertakan ekspresi Buku
Catatan yang mendefinisikan gaya.
WindowSize memungkinkan Anda untuk menentukan seberapa besar jendela yang Anda
inginkan; WindowMargins memungkinkan Anda menentukan di mana Anda ingin menempatkan
jendela di layar Anda. Pengaturan WindowMargins-(kiri), (kanan), (bawah), (atas) memberikan
margin dalam poin printer untuk ditinggalkan di sekitar jendela Anda di layar. Seringkali hanya dua
dari margin yang akan ditetapkan secara eksplisit; yang lainnya akan Otomatis, menunjukkan
bahwa margin ini akan ditentukan dari ukuran layar tertentu yang Anda gunakan.
Seperti yang dibahas di Bagian 2.11.4, Anda dapat mengakses opsi front end global dari
kernel dengan menggunakan Opsi[Front End, nama]. Tetapi lebih sering, Anda ingin mengakses
opsi ini secara interaktif menggunakan Option Inspector di bagian depan.
File input Mathematica dapat berisi sejumlah ekspresi. Namun, setiap ekspresi harus dimulai
pada baris baru. Namun ekspresi dapat berlanjut untuk baris sebanyak yang diperlukan. Sama
seperti dalam sesi Mathematica interaktif standar, ekspresi diproses segera setelah selesai. Namun,
perhatikan bahwa dalam file, tidak seperti sesi interaktif, Anda dapat menyisipkan baris kosong
kapan saja tanpa efek.
Saat Anda membaca dalam file dengan <<file, Mathematica mengembalikan ekspresi terakhir
yang dievaluasi dalam file. Anda dapat menghindari mendapatkan hasil yang terlihat dari membaca
file dengan mengakhiri ekspresi terakhir dalam file dengan titik koma, atau dengan menambahkan
Null secara eksplisit setelah ekspresi itu.
Jika Mathematica menemukan kesalahan sintaks saat membaca file, itu melaporkan
kesalahan, melewatkan sisa file, lalu mengembalikan Gagal. Jika kesalahan sintaks terjadi di
tengah-tengah paket yang menggunakan BeginPackage dan fungsi manipulasi konteks lainnya,
maka Mathematica mencoba mengembalikan konteks ke keadaan sebelum paket dibaca.
Saat Anda menggunakan file expr >>>, Mathematica menambahkan setiap ekspresi baru yang
Anda berikan ke akhir file Anda. Namun, jika Anda menggunakan file expr >>, maka Mathematica
akan menghapus semua yang ada di file sebelumnya, dan kemudian memasukkan expr ke dalam
file.
Saat Anda menggunakan >> atau >>> untuk menulis ekspresi ke file, ekspresi biasanya
diberikan dalam format input Mathematica, sehingga Anda dapat membacanya kembali ke
Mathematica. Namun, terkadang Anda mungkin ingin menyimpan ekspresi dalam format lain.
Anda dapat melakukan ini dengan secara eksplisit membungkus direktif format seperti OutputForm
di sekitar ekspresi yang Anda tulis
Salah satu alasan paling umum untuk menggunakan file adalah untuk menyimpan definisi
objek Mathematica, untuk dapat membacanya lagi di sesi Mathematica berikutnya. Operator >>
dan >>> memungkinkan Anda untuk menyimpan ekspresi Mathematica dalam file. Anda dapat
menggunakan fungsi Simpan untuk menyimpan definisi lengkap objek Mathematica, dalam bentuk
yang sesuai untuk dieksekusi di sesi Mathematica berikutnya.
Saat Anda mendefinisikan objek baru di Mathematica, definisi Anda akan sering bergantung
pada objek lain yang Anda definisikan sebelumnya. Jika Anda akan dapat merekonstruksi definisi
objek baru Anda dalam sesi Mathematica berikutnya, penting bagi Anda untuk menyimpan tidak
hanya definisinya sendiri, tetapi juga definisi objek lain yang menjadi sandarannya. Fungsi Simpan
melihat melalui definisi objek yang Anda minta untuk disimpan, dan secara otomatis juga
menyimpan semua definisi objek lain yang dapat dilihat bahwa ini bergantung. Namun, untuk
menghindari menyimpan sejumlah besar materi yang tidak perlu, Simpan tidak pernah menyertakan
definisi untuk simbol yang memiliki atribut Dilindungi. Diasumsikan bahwa definisi untuk
simbolsimbol ini juga dibangun di dalamnya. Namun demikian, dengan definisi seperti itu, harus
selalu terjadi bahwa membaca output yang dihasilkan oleh Simpan kembali ke sesi Mathematica
baru akan mengatur definisi objek Anda dengan tepat seperti yang Anda miliki sebelumnya.
Saat Anda membuat file untuk input ke Mathematica, Anda biasanya ingin file tersebut hanya
berisi "teks biasa", yang dapat dibaca atau dimodifikasi secara langsung. Namun terkadang, Anda
mungkin ingin konten file "dikodekan" sehingga tidak dapat dibaca atau dimodifikasi secara
langsung sebagai teks biasa, tetapi dapat dimuat ke Mathematica. Anda dapat membuat file yang
disandikan menggunakan fungsi Mathematica Encode
Jika Anda harus membaca dalam definisi yang sangat besar atau rumit, Anda akan sering
merasa lebih efisien untuk menyimpan definisi ini dalam format Mathematica internal, daripada
sebagai teks. Anda dapat melakukan ini menggunakan DumpSave
<< mengenali ketika file berisi definisi dalam format Mathematica internal, dan beroperasi
sesuai dengan itu. Satu kehalusan adalah bahwa format Mathematica internal berbeda dari satu
sistem komputer ke sistem komputer lainnya. Akibatnya, file .mx yang dibuat di satu komputer
biasanya tidak dapat dibaca di komputer lain.
Jika Anda menggunakan DumpSave["package`", … ] maka Mathematica akan menulis
definisi ke file dengan nama seperti package.mx/system/package.mx, di mana sistem
mengidentifikasi jenis sistem komputer Anda
Ide komunikasi terstruktur adalah untuk menukar ekspresi Mathematica lengkap ke program
eksternal yang secara khusus diatur untuk menangani objek tersebut. Dasar untuk komunikasi
terstruktur adalah sistem MathLink, yang dibahas dalam Bagian 2.13.
Komunikasi tidak terstruktur terdiri dari pengiriman dan penerimaan teks biasa dari program
eksternal. Ide dasarnya adalah memperlakukan program eksternal sangat mirip dengan file, dan
untuk mendukung jenis operasi membaca dan menulis yang sama
Secara umum, di mana pun Anda mungkin menggunakan nama file biasa, Mathematica
memungkinkan Anda untuk memberikan pipa, yang ditulis sebagai perintah eksternal, diawali
dengan tanda seru. Saat Anda menggunakan pipa, Mathematica akan menjalankan perintah
eksternal, dan mengirim atau menerima teks darinya.
Satu hal yang perlu diperhatikan adalah Anda dapat menghilangkan tanda kutip ganda di
sekitar nama pipa di sisi kanan << atau >> jika nama tersebut tidak mengandung spasi atau karakter
khusus lainnya.
Pipa di Mathematica menyediakan mekanisme yang sangat umum untuk komunikasi tidak
terstruktur dengan program eksternal. Pada banyak sistem komputer, pipa Mathematica
diimplementasikan menggunakan mekanisme pipa di sistem operasi yang mendasarinya; dalam
beberapa kasus, bagaimanapun, mekanisme komunikasi antarproses lainnya digunakan. Salah satu
batasan komunikasi tidak terstruktur di Mathematica adalah bahwa pipa yang diberikan hanya dapat
digunakan untuk input atau output, dan tidak untuk keduanya secara bersamaan. Untuk melakukan
komunikasi dua arah yang asli, Anda perlu menggunakan MathLink.
Bahkan dengan komunikasi yang tidak terstruktur, Anda tetap dapat mengatur pengaturan
yang agak lebih rumit dengan menggunakan file-file sementara. Ide dasarnya adalah menulis data
ke file, lalu membacanya sesuai kebutuhan
OpenTemporary [ ] membuka file sementara dengan nama yang unik
Khususnya ketika Anda bekerja dengan file-file sementara, Anda mungkin merasa berguna
untuk dapat menjalankan perintah eksternal yang tidak secara eksplisit mengirim atau menerima
data dari Mathematica. Anda dapat melakukan ini menggunakan fungsi Mathematica Run
Perhatikan bahwa saat Anda menggunakan Run, Anda tidak boleh mengawali perintah
dengan tanda seru. Run hanya mengambil bentuk tekstual dari argumen yang Anda tentukan, lalu
menggabungkannya dengan spasi di antaranya, dan mengeksekusi string yang dihasilkan sebagai
perintah eksternal.
Penting untuk disadari bahwa Run tidak pernah "menangkap" output apa pun dari perintah
eksternal. Akibatnya, ke mana arah keluaran ini murni ditentukan oleh sistem operasi Anda.
Demikian pula, Run tidak menyediakan input ke perintah eksternal. Ini berarti bahwa perintah bisa
mendapatkan input melalui mekanisme apa pun yang disediakan oleh sistem operasi Anda.
Terkadang perintah eksternal mungkin dapat mengakses aliran input dan output yang sama yang
digunakan oleh Mathematica itu sendiri. Dalam beberapa kasus, ini mungkin yang Anda inginkan.
Tetapi terutama jika Anda menggunakan Mathematica dengan ujung depan, ini dapat menyebabkan
banyak masalah
!memerintah mencegat garis Mathematica
masukan, dan jalankan sebagai perintah eksternal
Jika Anda menggunakan Mathematica dengan antarmuka berbasis teks, biasanya ada
mekanisme khusus untuk mengeksekusi perintah eksternal. Dengan antarmuka seperti itu,
Mathematica mengambil baris input apa pun yang dimulai dengan tanda seru, dan mengeksekusi
teks pada sisa baris sebagai perintah eksternal.
Cara Mathematica menggunakan !command adalah tipikal cara kerja "shell escapes" dalam
program yang berjalan di bawah sistem operasi Unix. Di sebagian besar versi Mathematica, Anda
akan dapat memulai shell interaktif dari Mathematica hanya dengan mengetikkan satu tanda seru
pada satu baris.
RunThrough[" perintah", expr] menjalankan perintah, menggunakan expr
sebagai input, dan membaca output kembali ke Mathematica
Seperti dibahas di atas, << dan >> tidak dapat digunakan untuk mengirim dan menerima data
dari program eksternal secara bersamaan. Namun demikian, dengan menggunakan file sementara,
Anda dapat secara efektif mengirim dan menerima data dari program eksternal sambil tetap
menggunakan komunikasi tidak terstruktur.
Fungsi RunThrough menulis teks ekspresi ke file sementara, kemudian memasukkan file ini
sebagai input ke program eksternal, dan menangkap output sebagai input ke Mathematica.
Perhatikan bahwa di RunThrough, seperti Run, Anda tidak boleh mengawali nama perintah
eksternal dengan tanda seru.
2.12.3 Topik Lanjutan: Aliran dan Input dan Output Tingkat Rendah
File dan pipa keduanya adalah contoh objek Mathematica umum yang dikenal sebagai stream.
Aliran di Mathematica adalah sumber input atau output. Ada banyak operasi yang dapat Anda
lakukan di stream.
Anda dapat menganggap >> dan << sebagai fungsi input-output Mathematica “tingkat
tinggi”. Mereka didasarkan pada seperangkat primitif input-output tingkat rendah yang bekerja
secara langsung dengan aliran. Dengan menggunakan primitif ini, Anda dapat melakukan kontrol
lebih besar atas bagaimana Mathematica melakukan input dan output. Anda akan sering perlu
melakukan ini, misalnya, jika Anda menulis program Mathematica yang menyimpan dan
mengambil data perantara dari file atau pipa.
Skema tingkat rendah dasar untuk menulis output ke aliran di Mathematica adalah sebagai
berikut. Pertama, Anda memanggil OpenWrite atau OpenAppend untuk "membuka aliran",
memberi tahu Mathematica bahwa Anda ingin menulis output ke file atau program eksternal
tertentu, dan dalam bentuk apa output harus ditulis. Setelah membuka aliran, Anda kemudian dapat
memanggil Tulis atau Tulis String untuk menulis urutan ekspresi atau string ke aliran. Setelah
selesai, Anda memanggil Tutup untuk "menutup aliran".
Saat Anda membuka file atau pipa, Mathematica membuat "objek aliran" yang menentukan
aliran terbuka yang terkait dengan file atau pipa. Secara umum, objek aliran berisi nama file atau
perintah eksternal yang digunakan dalam pipa, bersama dengan nomor unik.
Alasan mengapa objek aliran perlu menyertakan nomor unik adalah karena secara umum
Anda dapat memiliki beberapa aliran yang terhubung ke file yang sama atau program eksternal pada
saat yang bersamaan. Misalnya, Anda dapat memulai beberapa contoh berbeda dari program
eksternal yang sama, masing-masing terhubung ke aliran yang berbeda.
Namun demikian, ketika Anda telah membuka aliran, Anda masih dapat merujuknya
menggunakan nama file sederhana atau nama perintah eksternal selama hanya ada satu aliran yang
terkait dengan
objek ini.
Saat Anda memanggil Write[stream, expr], ia menulis ekspresi ke stream yang ditentukan.
Standarnya adalah menulis ekspresi dalam formulir input Mathematica. Jika Anda memanggil Tulis
dengan urutan ekspresi, itu akan menulis ekspresi ini satu demi satu ke aliran. Secara umum, itu
tidak meninggalkan ruang antara ekspresi berturut-turut. Namun, setelah selesai menulis semua
ekspresi, Write selalu mengakhiri outputnya dengan baris baru
Write menyediakan cara untuk menuliskan ekspresi Mathematica yang lengkap. Namun,
terkadang Anda mungkin ingin menulis data yang kurang terstruktur. WriteString memungkinkan
Anda untuk menulis string karakter apa pun. Tidak seperti Write, WriteString tidak menambahkan
baris baru atau karakter lain
Fitur penting dari fungsi Write dan WriteString adalah mereka memungkinkan Anda untuk menulis
output tidak hanya ke satu aliran, tetapi juga ke daftar aliran.
Dalam menggunakan Mathematica, seringkali lebih mudah untuk mendefinisikan saluran
yang terdiri dari daftar aliran. Anda kemudian dapat dengan mudah memberi tahu Mathematica
untuk menulis ke saluran, dan membuatnya secara otomatis menulis objek yang sama ke beberapa
aliran.
Dalam sesi Mathematica interaktif standar, ada beberapa saluran keluaran yang biasanya
ditentukan. Ini menentukan di mana jenis output tertentu harus dikirim. Jadi, misalnya, $Output
menentukan ke mana output standar harus pergi, sementara $Messages menentukan ke mana pesan
harus pergi. Fungsi Print kemudian bekerja pada dasarnya dengan memanggil Write dengan saluran
$Output. Message bekerja dengan cara yang sama dengan memanggil Write dengan saluran
$Messages. Bagian 2.14.1 mencantumkan saluran yang digunakan dalam sesi Mathematica biasa.
Perhatikan bahwa ketika Anda menjalankan Mathematica melalui MathLink, pendekatan
yang berbeda biasanya digunakan. Semua keluaran biasanya ditulis ke satu tautan MathLink, tetapi
setiap bagian keluaran muncul dalam "paket" yang menunjukkan jenisnya.
Dalam kebanyakan kasus, nama file atau perintah eksternal yang Anda gunakan di
Mathematica sama persis dengan yang digunakan oleh sistem operasi komputer Anda. Namun, pada
beberapa sistem, Mathematica mendukung berbagai aliran dengan nama khusus.
Aliran khusus "stdout" memungkinkan Anda memberikan output ke "output standar" yang
disediakan oleh sistem operasi. Namun perhatikan bahwa Anda dapat menggunakan aliran ini hanya
dengan antarmuka berbasis teks sederhana ke Mathematica. Jika interaksi Anda dengan
Mathematica lebih rumit, aliran ini tidak akan berfungsi, dan mencoba menggunakannya dapat
menyebabkan banyak masalah.
Anda dapat mengaitkan sejumlah opsi dengan aliran keluaran. Anda dapat menentukan opsi ini
saat pertama kali membuka streaming menggunakan OpenWrite atau OpenAppend.
Perhatikan bahwa Anda selalu dapat mengganti format output yang ditentukan untuk aliran
tertentu dengan membungkus ekspresi tertentu yang Anda tulis ke aliran dengan direktif format
Mathematica eksplisit, seperti OutputForm atau TeXForm.
Opsi PageWidth memberikan lebar halaman yang tersedia untuk keluaran tekstual dari
Mathematica. Semua jalur keluaran dipatahkan sehingga pas dengan lebar ini. Jika Anda tidak ingin
ada garis yang terputus, Anda dapat mengatur PageWidth -> Infin ity. Namun, biasanya Anda ingin
menyetel PageWidth ke nilai yang sesuai untuk perangkat keluaran khusus Anda. Pada banyak
sistem, Anda harus menjalankan program eksternal untuk mengetahui nilai ini. Menggunakan
SetOptions, Anda dapat membuat aturan default untuk PageWidth menjadi, misalnya, PageWidth
:> <<"!devicewidth", sehingga program eksternal dijalankan secara otomatis untuk menemukan
nilai opsi.
Opsi CharacterEncoding memungkinkan Anda untuk menentukan pengkodean karakter yang
akan digunakan untuk semua string yang berisi karakter khusus yang dikirim ke aliran keluaran
tertentu, baik dengan Write atau WriteString. Anda biasanya perlu menggunakan
CharacterEncoding jika Anda ingin memodifikasi rangkaian karakter internasional, atau mencegah
perangkat keluaran tertentu menerima karakter yang tidak dapat ditanganinya.
Di setiap titik dalam sesi Anda, Mathematica menyimpan daftar Streams[ ] dari semua aliran
input dan output yang saat ini terbuka, bersama dengan opsinya. Dalam beberapa kasus, Anda
mungkin perlu melihat daftar ini secara langsung. Mathematica tidak akan, bagaimanapun,
mengizinkan Anda untuk mengubah daftar, kecuali secara tidak langsung melalui OpenRead dan
seterusnya.
Saat Anda memanggil SetDirectory, Anda dapat memberikan nama direktori apa pun yang
dikenali oleh sistem operasi Anda. Jadi, misalnya, pada sistem berbasis Unix, Anda dapat
menentukan direktori satu tingkat di hierarki direktori menggunakan notasi .., dan Anda dapat
menentukan direktori "rumah" Anda sebagai ~.
Setiap kali Anda membuka direktori baru menggunakan SetDirectory, Mathematica selalu
mengingat apa direktori sebelumnya. Anda dapat kembali ke direktori sebelumnya menggunakan
ResetDirectory. Secara umum, Mathematica memelihara tumpukan direktori, yang diberikan oleh
DirectoryStack[ ]. Setiap kali Anda memanggil SetDirectory, itu menambahkan direktori baru ke
tumpukan, dan setiap kali Anda memanggil ResetDirectory itu menghapus direktori dari tumpukan
Setiap kali Anda meminta file tertentu, Mathematica secara umum melewati beberapa
langkah untuk mencoba dan menemukan file yang Anda inginkan. Langkah pertama adalah
menggunakan mekanisme standar apa pun yang ada di sistem operasi atau shell Anda.
Mathematica memindai nama lengkap yang Anda berikan untuk sebuah file, dan melihat
apakah file tersebut berisi salah satu "metacharacters" *, $, ~, ?, [, ", dan '. Jika menemukan karakter
seperti itu, maka ia akan melewati nama lengkap ke sistem operasi atau shell Anda untuk
interpretasi. Ini berarti bahwa jika Anda menggunakan sistem berbasis Unix, maka konstruksi
seperti name* dan $VAR akan diperluas pada titik ini. Namun secara umum, Mathematica
mengambil apa pun yang dikembalikan oleh Anda sistem operasi atau shell, dan memperlakukan
ini sebagai nama file lengkap.
Untuk file keluaran, ini adalah akhir dari pemrosesan yang dilakukan Mathematica. Jika
Mathematica tidak dapat menemukan file unik dengan nama yang Anda tentukan, maka
Mathematica akan melanjutkan untuk membuat file.
Namun, jika Anda mencoba mendapatkan input dari file, maka ada putaran pemrosesan lain
yang dilakukan Mathematica. Apa yang terjadi adalah bahwa Mathematica melihat nilai opsi Path
untuk fungsi yang Anda gunakan untuk menentukan nama direktori relatif yang seharusnya mencari
file. Pengaturan default untuk opsi Path adalah variabel global $Path
Secara umum, variabel global $Path didefinisikan sebagai daftar string, dengan setiap string
mewakili direktori. Setiap kali Anda meminta file input, apa yang secara efektif dilakukan
Mathematica adalah membuat setiap direktori ini menjadi direktori kerja Anda saat ini, dan
kemudian dari direktori itu untuk mencoba dan menemukan file yang Anda minta
FileNames mengembalikan daftar string yang sesuai dengan nama file. Ketika
mengembalikan file yang tidak ada di direktori Anda saat ini, itu memberikan nama file relatif
terhadap direktori saat ini. Perhatikan bahwa semua nama diberikan dalam format yang sesuai untuk
sistem komputer tertentu tempat nama tersebut dibuat
Anda harus menyadari bahwa sistem komputer yang berbeda dapat memberikan nama file
dengan cara yang berbeda. Jadi, misalnya, sistem Windows biasanya memberi nama dalam bentuk
dir:\dir\#dir\name, sistem Unix dalam bentuk dir/dir/name dan sistem Macintosh dalam bentuk
:dir:dir:name. Fungsi ToFileName merakit nama file dengan cara yang sesuai untuk sistem
komputer tertentu yang Anda gunakan.
Jika Anda ingin mengatur kumpulan file terkait, sering kali lebih mudah untuk dapat merujuk
ke satu file saat Anda membaca yang lain. Variabel global $Input memberikan nama file dari mana
input saat ini sedang diambil. Menggunakan DirectoryName dan ToFileName Anda kemudian
dapat dengan mudah menentukan nama file terkait lainnya.
$Masukkan nama file atau aliran
dari mana input sedang diambil
Mathematica diatur sehingga <<name` akan secara otomatis mencoba memuat versi file yang
sesuai. Ini pertama-tama akan mencoba memuat file name.mx yang dioptimalkan untuk sistem
komputer khusus Anda. Jika tidak menemukan file seperti itu, maka ia akan mencoba memuat file
name.m yang berisi input Mathematica sistem-independen biasa.
Jika nama adalah direktori, maka Mathematica akan mencoba memuat file inisialisasi init.m
di direktori tersebut. Tujuan dari file init.m adalah untuk menyediakan cara yang nyaman untuk
mengatur paket Mathematica yang melibatkan banyak file terpisah. Idenya adalah untuk
memungkinkan Anda memberikan perintah <<name` saja, tetapi kemudian memuat init.m untuk
menginisialisasi seluruh paket, membaca file lain apa pun yang diperlukan.
Sistem operasi yang berbeda memiliki perintah yang berbeda untuk memanipulasi file.
Mathematica menyediakan satu set sederhana fungsi manipulasi file, dimaksudkan untuk bekerja
dengan cara yang sama di bawah semua sistem operasi.
Perhatikan bahwa CopyFile dan RenameFile memberikan file terakhir tanggal modifikasi
yang sama dengan yang asli. File Date mengembalikan tanggal modifikasi dalam format 8 tahun,
bulan, hari, jam, menit, detik yang digunakan oleh Date
Aturan ini “List”, mengatur daftar di sekitar hasil anda.
MLPutFunction(stdlink, "List", 1);{
x)
double
Sama seperti MathLink menyediakan fungsi seperti MLPutInteger() untuk mengirim data dari
program eksternal ke Mathematica, begitu juga MathLink menyediakan fungsi seperti MLGetInteger()
yang memungkinkan Anda untuk mendapatkan data dari Mathematica ke dalam program eksternal.
Daftar yang Anda berikan untuk : ArgumentTypes : dalam template MathLink dapat diakhiri
dengan “Manual”, yang menunjukkan bahwa setelahnya argumen lain telah diterima, Anda akan
memanggil fungsi MathLink untuk mendapatkan ekspresi tambahan.
Fungsi f di Mathematica membutuhkan 3 argumen.
:Pattern: f[i_Integer, x_Real, y_Real]
double f(int i) {
MLGetReal(stdlink, &x);
MLGetReal(stdlink, &y); kembali
i+x+y;}
Ketika program eksternal mendapatkan data dari Mathematica, ia harus menyiapkan tempat
untuk menyimpan data. Jika data terdiri dari integer tunggal, seperti pada MLGetInteger (stdlink,
&n), maka cukuplah untuk mendeklarasikan integer ini menggunakan int n.
Tetapi ketika data terdiri dari daftar bilangan bulat dengan panjang yang berpotensi berapa
pun, memori harus dialokasikan untuk menyimpan daftar ini di waktu ketika program eksternal
benar-benar dipanggil.
MLGetIntegerList (stdlink, &a, &n) akan secara otomatis melakukan alokasi ini, menyetel a
menjadi pointer ke hasil. Perhatikan bahwa memori yang dialokasikan oleh fungsi seperti
MLGetIntegerList() selalu berada di area khusus yang dicadangkan, jadi Anda tidak dapat mengubah
atau membebaskannya secara langsung.
Jika Anda menggunakan String sebagai spesifikasi : ArgumentTypes :, maka MathLink akan
secara otomatis menolak memori yang digunakan untuk menyimpan string setelah fungsi Anda
keluar. Ini berarti bahwa jika Anda ingin terus merujuk ke string, Anda harus mengalokasikan
memori untuk itu, dan secara eksplisit menyalin setiap karakter di dalamnya.
Namun, jika Anda mendapatkan string menggunakan MLGetString(), maka MathLink tidak akan
secara otomatis menyangkal memori yang digunakan untuk string saat fungsi Anda keluar.
Akibatnya, Anda dapat terus merujuk ke string. Ketika Anda tidak lagi membutuhkan string, Anda tetap
harus secara eksplisit memanggil MLDisownString() untuk
Jika Anda mengetahui fungsi apa yang diharapkan dalam program eksternal Anda, maka
biasanya lebih mudah untuk memanggil MLCheckFunction(). Tetapi jika Anda tidak tahu fungsi
apa yang diharapkan, Anda tidak punya pilihan selain memanggil MLGetFunction(). Jika kamu
melakukan ini, Anda harus yakin untuk memanggil MLDisownSymbol() untuk menyangkal memori
yang terkait dengan nama fungsi yang ditemukan oleh MLGetFunction().
Mathematica mengikuti konvensi bahwa jika prog adalah file biasa, maka Install["prog"]
hanya akan mencoba mengeksekusi dia. Tetapi jika prog adalah sebuah direktori, maka
Mathematica akan mencari subdirektori dari direktori tersebut yang namanya sesuai dengan nilai
$SystemID saat ini, dan kemudian akan mencoba mengeksekusi file bernama prog di dalam
subdirektori itu.
Meskipun biner yang dapat dieksekusi dari program eksternal pasti berbeda pada sistem
komputer yang berbeda, ia dapat masih terjadi bahwa kode sumber dalam bahasa seperti C dari
mana biner ini diperoleh pada dasarnya adalah sama.
Tetapi untuk mencapai portabilitas dalam kode sumber C Anda ada beberapa poin yang perlu Anda
perhatikan.
Sebagai permulaan, Anda tidak boleh menggunakan fitur tambahan dari bahasa C atau
pustaka run-time C yang terjadi disediakan pada sistem tertentu, tetapi bukan bagian dari standar
C. Selain itu, Anda harus mencoba menghindari berurusan dengan tersegmentasi atau model
memori khusus.
File include mathlink.h berisi prototipe C standar untuk semua fungsi di library MathLink.
Jika Anda compiler tidak mendukung prototipe tersebut, Anda dapat mengabaikannya dengan
memberikan arahan #define MLPROTOTYPES 0 sebelum #include "mathlink.h". Tetapi dengan
asumsi bahwa itu mendukung prototipe, kompiler Anda akan selalu dapat untuk memeriksa apakah
panggilan yang Anda lakukan ke fungsi di pustaka MathLink memiliki argumen dengan tipe yang
sesuai.
Gambar
Pada beberapa sistem komputer dan dengan beberapa kompiler, int bahasa C mungkin setara
dengan long. Tapi standar untuk bahasa C sama baiknya memungkinkan int menjadi setara dengan
short. Dan jika Anda akan menelepon MathLink perpustakaan berfungsi dengan cara yang portabel,
penting bagi Anda untuk menggunakan jenis yang sama seperti yang mereka lakukan.
Setelah Anda memasukkan data Anda ke fungsi perpustakaan MathLink, fungsi-fungsi ini
akan menangani semua masalah lebih lanjut terkait dengan perbedaan antara representasi data pada
sistem komputer yang berbeda. Jadi, misalnya, MathLink secara otomatis menukar byte saat
mengirim data antara mesin big dan little endian, dan mengonversi floating-point format kehilangan
presisi sesedikit mungkin.
Dalam program C sederhana, biasanya menggunakan string yang hanya berisi karakter
ASCII biasa. Tapi di Mathematica itu memungkinkan untuk memiliki string yang berisi semua jenis
karakter khusus. Karakter ini ditentukan dalam Mathematica menggunakan kode karakter Unicode,
seperti yang dibahas dalam Bagian 2.8.8.
Bahasa C char * string biasanya hanya menggunakan 8 bit untuk menyimpan kode untuk
setiap karakter. Kode karakter Unicode, Namun, membutuhkan 16 bit. Akibatnya, fungsi
MLPutUnicodeString() dan MLGetUnicodeString() bekerja dengan array bilangan bulat pendek
yang tidak ditandatangani.
Jika Anda tahu bahwa program Anda tidak harus menangani karakter khusus, maka Anda
mungkin merasa nyaman menggunakannya MLPutByteString() dan MLGetByteString().
Fungsifungsi ini mewakili semua karakter secara langsung menggunakan 8-bit kode karakter. Jika
karakter khusus dikirim dari Mathematica, maka karakter tersebut akan dikonversi oleh
MLGetByteString() ke kode tetap yang Anda tentukan.
LinkCreate[" name "] membuat tautan untuk program lain agar terhubung
LinkConnect [" name "] terhubung ke tautan yang dibuat oleh program
lain
hold
LinkReadyQ [ link ]
untuk mencari tahu apakah ada sebuah data yang siap dibaca
dari sebuah link
2.13.7 Memanggil Proses Subsidiary Mathematica
LinkLaunch [" prog "] memulai program eksternal dan membuka koneksi ke
sana
Ini memulai proses Mathematica anak perusahaan pada sistem komputer yang digunakan di sini.
In[1]:= link = LinkLaunch["math -mathlink"]
Out[1]= LinkObject[math -mathlink, 4, 4]
Berikut adalah paket yang mewakili prompt input pertama dari proses Mathematica anak
perusahaan.
In[2]:= LinkRead[link]
Out[2]= InputNamePacket[In[1]:= ]
Ini menulis sebuah paket yang mewakili teks untuk masuk dalam proses Mathematica anak
perusahaan.
In[3]:= LinkWrite[link, EnterTextPacket["10!"]]
Berikut adalah paket yang mewakili prompt output dari proses Mathematica anak
perusahaan.
In[4]:= LinkRead[link]
Out[4]= OutputNamePacket[Out[1]= ]
Cara dasar agar berbagai objek berbeda yang terlibat dalam sesi Mathematica tetap
terorganisir adalah dengan menggunakan paket MathLink. Paket MathLink hanyalah sebuah
ekspresi dengan kepala tertentu yang menunjukkan peran atau maknanya.
Variabel global $ParentLink menentukan koneksi MathLink yang akan digunakan kernel tertentu
untuk input dan keluaran.
Terkadang berguna untuk mereset $ParentLink di tengah sesi Mathematica, sehingga secara
efektif mengubah ujung depan tempat kernel terhubung.
Sama seperti kernel Mathematica, ujung depan notebook standar untuk Mathematica diatur untuk
menangani serangkaian paket MathLink.
Biasanya yang terbaik adalah menggunakan fungsi seperti NotebookWrite dan
FrontEndExecute jika Anda ingin mengontrol Mathematica ujung depan dari kernel. Tetapi dalam
beberapa kasus Anda mungkin merasa nyaman untuk mengirim paket langsung ke front end
menggunakan Link Write.
2.13.9 Komunikasi Dua Arah dengan Program Eksternal
Saat Anda menginstal program eksternal yang kompatibel dengan MathLink menggunakan
Instal, program diatur untuk berperilaku agak seperti kernel Mathematica yang disederhanakan.
Setiap kali Anda memanggil fungsi di program eksternal, CallPacket dikirim ke program, dan
program merespons dengan mengirimkan kembali hasil yang dibungkus dengan ReturnPacket.
Jika Anda menggunakan Instal beberapa kali pada satu program eksternal, Mathematica
akan membuka beberapa koneksi MathLink ke program. Namun setiap koneksi akan selalu sesuai
dengan LinkObject yang unik. Perhatikan bahwa pada beberapa sistem komputer, Anda mungkin
perlu membuat salinan eksplisit dari file yang berisi program eksternal agar dapat dapat
memanggilnya berkali-kali.
Jika program eksternal menyimpan informasi tentang statusnya, maka Anda dapat
menggunakan instance program yang berbeda untuk mewakili negara bagian yang berbeda.
$CurrentLink kemudian menyediakan cara untuk merujuk ke setiap contoh program.
Nilai $CurrentLink disetel sementara setiap kali instance tertentu dari program dipanggil, serta
ketika setiap contoh program pertama kali diinstal.
Sifat koneksi MathLink dua arah memungkinkan Anda tidak hanya membuat Mathematica
memanggil program eksternal, tetapi juga agar program eksternal itu memanggil kembali ke
Mathematica.
Dalam kasus yang paling sederhana, Anda dapat menggunakan fungsi MathLink
MLEvaluateString() untuk mengirim string ke Mathematica. Mathematica akan mengevaluasi
string ini, menghasilkan efek apa pun yang ditentukan string, tetapi tidak akan mengembalikan hasil
apa pun dari evaluasi kembali ke program eksternal.
Untuk mendapatkan hasil kembali, Anda perlu secara eksplisit mengirim EvaluatePacket ke
Mathematica, dan kemudian membaca konten ReturnPacket yang kembali.
Ketika Anda dapat mengirim Mathematica sebuah EvaluatePacket[input], secara umum
mungkin menghasilkan banyak paket sebagai tanggapan, tetapi paket terakhir harus
ReturnPacket[output]. Bagian 2.13.12 akan membahas bagaimana menangani urutan dari paket dan
ekspresi yang strukturnya tidak Anda ketahui sebelumnya
port@host "]]
Perhatikan bahwa untuk mendapatkan versi program eksternal yang dapat dijalankan di bawah
debugger, Anda mungkin perlu menentukan -g atau flag lain saat Anda mengkompilasi program.
Ketika Anda melakukan operasi yang rumit, seringkali lebih mudah untuk memeriksa
kesalahan hanya di akhir. Jika Anda menemukan kesalahan itu terjadi, Anda harus memanggil
MLClearError() untuk mengaktifkan MathLink lagi.
int MLNewPacket (MLINK link) lewati ke akhir paket untuk saat ini
Setelah kesalahan, biasanya ingin membuang sisa paket atau ekspresi yang sedang Anda proses.
Anda dapat melakukan ini menggunakan MLNewPacket().
Dalam beberapa kasus, Anda mungkin ingin mengaturnya sehingga jika terjadi kesalahan
saat Anda memproses data tertentu, Anda dapat kemudian kembali dan memproses ulang data
dengan cara yang berbeda. Anda dapat melakukan ini dengan memanggil MLCreateMark() untuk
membuat tandai sebelum Anda memproses data terlebih dahulu, dan kemudian memanggil
MLSeekMark() untuk mencari kembali ke tanda jika Anda perlu memproses ulang datanya. Anda
tidak boleh lupa untuk memanggil MLDestroyMark() ketika Anda akhirnya selesai dengan data—
jika tidak, MathLink akan terus menyimpannya.
int MLAbort Install set variabel global saat program diatur oleh Instal
dikirim interupsi yang dibatalkan
Jika Anda menginterupsi Mathematica saat sedang menjalankan fungsi eksternal, biasanya
akan memberi Anda kesempatan untuk mencoba menggugurkan fungsi eksternal. Jika Anda
memilih untuk melakukan ini, apa yang akan terjadi adalah variabel global MLAbort akan disetel
ke 1 di dalam program eksternal Anda.
MathLink tidak dapat secara otomatis mundur dari panggilan fungsi eksternal yang telah
dibuat. Jadi jika Anda memiliki fungsi yang bisa memakan waktu lama, Anda harus sering
memeriksa MLAbort secara eksplisit, kembali dari fungsi jika Anda menemukannya variabel telah
ditetapkan.
2.13.14 Menjalankan Mathematica dari Dalam Program Eksternal
Untuk menjalankan Mathematica dari dalam program eksternal memerlukan penggunaan
banyak fitur umum MathLink. Masalah pertama adalah bagaimana membuat koneksi MathLink ke
Mathematica.
Saat Anda menggunakan templat MathLink untuk membuat program eksternal yang dapat
dipanggil dari Mathematica, kode sumber ke membuat koneksi MathLink dibuat secara otomatis,
dan yang harus Anda lakukan di program eksternal Anda adalah menelepon MLMain(argc, argv).
Tetapi secara umum Anda perlu memanggil beberapa fungsi untuk membuat koneksi MathLink.
Seringkali argv yang Anda berikan ke MLOpenArgv() akan datang langsung dari argv yang
diteruskan ke main() ketika seluruh program Anda dimulai. Perhatikan bahwa MLOpenArgv()
mengambil pointer ke awal dan akhir array argv. Dengan tidak menggunakan argc secara langsung,
ia menghindari keharusan mengetahui ukuran int.
Elemen dalam array argv adalah string karakter yang mencerminkan argumen dan opsi yang
digunakan dalam Mathematica fungsi LinkLaunch, LinkCreate dan LinkConnect.
Sebagai alternatif MLOpenArgv() Anda dapat menggunakan MLOpenString(), yang mengambil
parameter yang digabungkan menjadi string karakter tunggal dengan spasi di antaranya.
Setelah Anda berhasil membuka koneksi MathLink ke kernel Mathematica, Anda dapat
menggunakan standar MathLink berfungsi untuk bertukar data dengannya.
Setelah Anda mengirim semua bagian paket menggunakan MLPutFunction() dll., MathLink
mengharuskan Anda untuk memanggil MLEndPacket() untuk memastikan sinkronisasi dan
konsistensi.
Salah satu masalah utama dalam menulis program eksternal yang berkomunikasi langsung dengan
kernel Mathematica adalah menangani semua jenis paket yang dapat dihasilkan oleh kernel.
Fungsi MLNextPacket() menemukan kepala paket berikutnya yang berasal dari kernel, dan
mengembalikan sebuah konstanta yang menunjukkan jenis paket.
Jika Anda ingin menulis front end lengkap ke Mathematica, Anda harus menangani semua
kemungkinan jenis paket yang dapat dihasilkan oleh kernel. Biasanya Anda dapat melakukan ini
dengan mengatur sakelar yang sesuai pada nilai yang dikembalikan oleh MLNextPacket().
Kit Pengembang MathLink berisi contoh kode sumber untuk beberapa ujung depan yang
sederhana namun lengkap.
int MLReady (MLINK link) menguji apakah ada data yang menunggu untuk dibaca
pada tautan
int MLFlush (MLINK link) menghapus buffer yang berisi data yang menunggu
untuk dikirim melalui tautan
Salah satu fitur dari program eksternal yang lebih canggih seperti ujung depan adalah bahwa
mereka mungkin perlu melakukan operasi sementara mereka menunggu data dikirim kepada
mereka oleh Mathematica. Saat Anda memanggil fungsi perpustakaan MathLink standar seperti
MLNextPacket() program Anda biasanya akan memblokir sampai semua data yang dibutuhkan oleh
fungsi ini tersedia.
Anda dapat menghindari pemblokiran dengan berulang kali memanggil MLReady(), dan hanya
memanggil fungsi seperti MLNextPacket() ketika MLReady() tidak lagi mengembalikan 0.
In [n] ekspresi pada baris input ke-n
InString [ n ] bentuk tekstual dari baris input ke-n % n or Out [ n ]
eskpresi pada jalur keluaran ke-n n1, n2, … }] daftar ekspresi keluaran
Out [{
baris ke-n
$Line nomor baris saat ini
Dalam sesi interaktif standar, ada urutan jalur input dan output. Mathematica menyimpan nilai
dariekspresi pada baris ini di In[n] dan Out[n].
Seperti yang ditunjukkan oleh perintah In[n]:= biasa, ekspresi input disimpan dengan
penugasan yang tertunda. Ini berarti bahwa setiap kali Anda meminta In[n], ekspresi input akan
selalu dievaluasi ulang di lingkungan Anda saat ini.
$HistoryLength jumlah baris input dan output sebelumnya yang harus disimpan
Mathematica secara default menyimpan semua jalur input dan output Anda selama sesi
berlangsung. Dalam sesi yang sangat panjang, ini mungkin memakan banyak memori komputer.
Anda tetap dapat menyingkirkan jalur input dan output dengan secara eksplisit menghapus nilai In
dan Out, menggunakan Unprotect[In, Out], diikuti oleh Clear[In, Out]. Kamu bisa juga beri tahu
Mathematica untuk menyimpan hanya sejumlah baris sejarah dengan mengatur variabel global
$HistoryPanjang.
Perhatikan bahwa setiap saat dalam suatu sesi, Anda dapat mengatur ulang penghitung
nomor baris $Line, sehingga misalnya baris baru adalah diberi nomor untuk menimpa yang
sebelumnya.
$PreRead sebuah fungsi yang diterapkan ke setiap string input sebelum
diumpankan ke matematika
evaluasi
default
Dengan memodifikasi daftar aliran dalam saluran keluaran tertentu, Anda dapat
mengarahkan ulang atau menyalin jenis Mathematica . tertentu keluaran. Jadi, misalnya, dengan
membuka aliran keluaran ke file, dan memasukkan aliran itu ke dalam daftar $Echo, Anda dapat
dapatkan setiap input yang Anda berikan ke Mathematica disimpan dalam file
Streams [ ] daftar semua aliran terbuka
Streams [" name "] daftar semua aliran terbuka dengan nama yang ditentukan
$Input nama aliran input saat ini
Fungsi Streams menunjukkan kepada Anda semua input, output, dan aliran lain yang
terbuka pada titik tertentu disesi matematika. Variabel $Input memberikan nama aliran saat ini dari
mana input Mathematica berasal diambil pada titik tertentu. $Input direset, misalnya, selama
eksekusi perintah Get.
Ada berbagai parameter global yang menentukan bentuk pesan yang dihasilkan oleh
Mathematica. Seperti yang dibahas dalam Bagian 2.9.21, pesan tipikal mencakup urutan ekspresi
yang digabungkan dengan teks pesan melalui StringForm. $MessagePrePrint memberikan fungsi
untuk diterapkan ke ekspresi sebelumnya mereka dicetak. Nilai default $MessagePrePrint adalah
Pendek.
Seperti yang dibahas di Bagian 2.9.22, Mathematica memungkinkan Anda untuk
menentukan bahasa yang Anda inginkan untuk pesan diproduksi. Dalam sesi Mathematica tertentu,
Anda dapat menetapkan daftar nama bahasa sebagai nilai $Language.
Exit [ ] or [ Quit ] mengakhiri sesi matematika anda
$Epilog variebel global untuk dievaluasi sebelum penghentian
Mathematica akan melanjutkan loop utamanya sampai Anda secara eksplisit menyuruhnya keluar.
Sebagian besar antarmuka Mathematica menyediakan cara khusus untuk melakukannya.
Namun demikian, Anda selalu dapat melakukannya dengan memanggil Exit atau Quit secara eksplisit.
Mathematica memungkinkan Anda untuk memberikan nilai ke variabel global $Epilog
untuk menentukan operasi yang akan dilakukan sebelum Mathematica benar-benar keluar. Dengan
cara ini, misalnya Anda dapat membuat Mathematica selalu menyimpan objek tertentu sebelumnya
keluar.
Seperti yang dibahas dalam Bagian 2.8.5, Mathematica biasanya tidak memperlakukan
karakter khusus dengan cara khusus. ada satu pengecualian potensial, namun. Dengan pengaturan
default $IgnoreEOF = False, Mathematica mengenali file akhir karakter. Jika Mathematica
menerima karakter akhir file sebagai satu-satunya hal pada baris input tertentu dalam standar sesi
Mathematica interaktif, maka akan keluar dari sesi.
Bagaimana tepatnya Anda memasukkan karakter akhir file tergantung pada sistem komputer
yang Anda gunakan. Dibawah Unix, misalnya, Anda biasanya menekan Control-D. Perhatikan
bahwa jika Anda menggunakan Mathematica dalam "mode batch", dengan semua inputnya berasal
dari file, maka secara otomatis akan keluar ketika mencapai akhir file, terlepas dari nilai
$IgnoreEOF.
2.14.2 Dialog
Dalam sesi interaktif standar, Anda dapat membuat "subsesi" atau dialog menggunakan
perintah Mathematica Dialog. Dialog seringkali berguna jika Anda ingin berinteraksi dengan
Mathematica saat sedang melakukan perhitungan.
Seperti disebutkan dalam Bagian 2.6.11, TraceDialog misalnya secara otomatis memanggil
Dialog pada titik-titik tertentu di evaluasi ekspresi tertentu. Selain itu, jika Anda menginterupsi
Mathematica selama perhitungan, Anda dapat biasanya "memeriksa" statusnya menggunakan
dialog.
Part 3
Bagian ini membahas berbagai fungsi dan metode matematika. Beberapa perhitungan dapat dilakukan hanya
dengan menggunakan kemampuan matematika bawaan ini. Namun, untuk banyak perhitungan khusus, Anda perlu
menggunakan paket aplikasi yang dibangun di atas kemampuan yang dibahas di Bagian ini, tetapi tambahkan
fungsi baru untuk melakukan jenis perhitungan khusus.
3.1 Angka
Empat jenis angka yang mendasari dibangun ke Matematika. Integral, bilangan bulat eksak dengan panjang
arbitrer. Bilangan bulat rasional dalam istilah terendah. Perkiraan nyata bilangan real, dengan presisi tertentu.
Bilangan kompleks kompleks berbentuk bilangan + bilangan I.
Anda dapat membedakan berbagai jenis angka di Mathematica dengan melihat kepalanya. (Meskipun angka dalam
mathematika memiliki kepala seperti ekspresi lainnya, mereka tidak memiliki elemen eksplisit yang dapat Anda
ekstrak.)
Jika Anda menggunakan bilangan kompleks secara ekstensif, ada satu kehalusan yang harus Anda ketahui. Ketika
Anda memasukkan nomor seperti 123., Mathematica memperlakukannya sebagai perkiraan bilangan real, tetapi
mengasumsikan bahwa bagian imajinernya persis nol. Kadang-kadang Anda mungkin ingin memasukkan
perkiraan bilangan kompleks dengan bagian imajiner yang nol, tetapi hanya untuk bagian tertentu presisi.
Perbedaan antara bilangan kompleks yang bagian imajinernya tepat nol, atau hanya nol sampai ketelitian tertentu,
mungkin tampak seperti orang yang bertele-tele. Namun, ketika kita membahas, misalnya, interpretasi kekuatan
dan akar dari bilangan kompleks di Bagian 3.2.7, perbedaannya akan menjadi signifikan.
Salah satu cara untuk mengetahui jenis bilangan di Mathematica adalah dengan memilih kepalanya menggunakan
Head[expr]. Untuk banyak tujuan, bagaimanapun, lebih baik menggunakan fungsi seperti bulat Q yang secara
eksplisit menguji tipe tertentu. Fungsi seperti ini diatur untuk mengembalikan True jika argumen mereka secara
nyata dari tipe yang diperlukan, dan untuk mengembalikan False sebaliknya. Sebagai hasilnya, bulat Q[x] akan
memberikan False, kecuali x memiliki nilai integer eksplisit.
Angka Q [expr] menguji apakah expr secara eksplisit merupakan angka.A ngka Q [expr]
menguji apakah expr memiliki nilai numerik.
Matematika tahu bahwa konstanta seperti Pi adalah kuantitas numerik. Ia juga mengetahui bahwa fungsi matematika
standar seperti Log dan Sin memiliki nilai numerik ketika argumennya numerik.
Contoh : NumerikQ[Pi + 3]
N[Pi + 3] = 6.14159
Secara umum, Mathematica mengasumsikan bahwa setiap fungsi yang memiliki atribut NumericFunction akan
menghasilkan numerik nilai ketika argumennya numerik. Semua fungsi matematika standar di Mathematica sudah
memiliki ini atribut. Tetapi ketika Anda mendefinisikan fungsi Anda sendiri, Anda dapat secara eksplisit mengatur
atribut untuk memberi tahu Mathematica untuk mengasumsikan bahwa fungsi-fungsi ini akan memiliki nilai
numerik ketika argumennya numerik.
Digit Integer [n] daftar angka desimal dalam bilangan bulat n Digit
Integer [n, b] digit n di basis b
Digit Integer [n, b, len] daftar digit yang diisi di sebelah kiri dengan nol untuk memberikan panjang total len
Eksponen Integer [n, b] jumlah nol di akhir n di basis b
Digit Real [x] daftar angka desimal dalam perkiraan bilangan real x, bersama dengan jumlah digit di sebelah kiri titik
desimal
Digit Real [x, b] digit x di basis b
Digit Real [x, b, len] digit len pertama x di basis b
Digit Real [x, b, len, n] digit len pertama dimulai dengan koefisien bn Dari Digit
[list] merekonstruksi angka dari urutan digit desimalnya
Dari Digit [daftar, b] merekonstruksi angka dari urutan digitnya di basis b
b ^^ nnnn angka di basis b
- Ini memberikan daftar digit, bersama dengan jumlah digit yang muncul di sebelah kiri titik desimal.
Digit Asli [123. 4567890123456]
[{1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6} 3]
Bagian 2.9.7 menjelaskan cara mencetak angka dalam berbagai format. Jika Anda ingin membuat format sendiri,
Anda akan sering perlu menggunakan Eksponen Mantissa untuk memisahkan potongan bilangan real.
Ini memberikan daftar di mana mantissa dan eksponen dari nomor tersebut dipisahkan
Eksponen Mantissa[3.45 10^125]
[0.345, 126]
- Akurasinya lebih rendah karena hanya beberapa digit yang berada disebelah kanan titik desimal.
Accur
acy[x]
25.0285
0.0936480474760830209737166901849
Perkiraan bilangan real selalu memiliki beberapa ketidakpastian dalam nilainya, terkait dengan angka di luar yang
diketahui. Satu dapat menganggap presisi sebagai ukuran ukuran relatif dari ketidakpastian ini. Akurasi
memberikan ukuran ukuran mutlak ketidakpastian. Mathematica diatur sedemikian rupa sehingga jika suatu
bilangan x memiliki ketidakpastian d , maka nilai sebenarnya dapat terletak dimana saja dalam interval ukuran d
dari x – d/ 2 ke x + d /2. Suatu bilangan aproksimasi dengan ketelitian a didefinisikan memiliki ketidakpastian 10a
, sedangkan a angka perkiraan bukan nol dengan presisi p didefinisikan memiliki ketidakpastian [ x ] 10 -p
Mathematica membedakan dua jenis perkiraan bilangan real: bilangan presisi arbitrer, dan nomor presisi mesin
atau nomor mesin. Angka presisi arbitrer dapat berisi sejumlah digit, dan mempertahankan informasi tentang
presisi mereka. Nomor mesin, di sisi lain, selalu berisi nomor yang sama dari digit, dan tidak menyimpan informasi
tentang presisinya.
Seperti yang dibahas secara lebih rinci di bawah ini, nomor mesin bekerja dengan memanfaatkan langsung
kemampuan numerik dari Anda sistem komputer yang mendasarinya. Akibatnya, perhitungan dengan mereka
seringkali dapat dilakukan lebih cepat. Mereka bagaimanapun jauh lebih fleksibel daripada angka presisi
sewenang-wenang, dan analisis numerik yang sulit dapat diperlukan untuk menentukan apakah hasil yang
diperoleh dengan mereka benar.
Presisi Mesin Spesifikasi presisi yang digunakan
untuk menunjukkan nomor mesin
Saat Anda memasukkan perkiraan bilangan real, Mathematica harus memutuskan apakah akan
memperlakukannya sebagai bilangan mesin atau nomor presisi sewenang-wenang. Kecuali jika Anda menentukan
sebaliknya, maka jika Anda memberikan angka kurang dari Machine Precision, Mathematica akan
memperlakukan nomor sebagai presisi mesin, dan jika Anda memberikan lebih banyak digit, itu akan
memperlakukan nomor sebagai arbitrer presisi.
Ketika Mathematica mencetak angka, biasanya Mathematica mencoba memberikannya dalam bentuk yang
semudah mungkin untuk dibaca. Tetapi jika Anda ingin mengambil angka yang dicetak oleh Mathematica, dan
kemudian menggunakannya sebagai input ke Mathematica, Anda perlu memastikan bahwa tidak ada informasi
yang hilang.
InputForm [expr, Tanda Angka −> Benar] gunakan tanda ` di semua angka perkiraan
Pengaturan default untuk opsi NumberMarks, baik di InputForm maupun dalam fungsi seperti ToString dan
OpenWrite diberikan oleh nilai NumberMarks. Oleh karena itu, dengan menyetel ulang NumberMarks, Anda
dapat secara global ubah cara angka dicetak di InputForm.
Dalam melakukan perhitungan numerik, tidak dapat dihindari bahwa Anda terkadang akan mendapatkan hasil
yang kurang tepat daripada kamu ingin. Khususnya ketika Anda mendapatkan hasil numerik yang sangat
mendekati nol, Anda mungkin ingin berasumsi bahwa:
hasilnya harus tepat nol. Fungsi Chop memungkinkan Anda mengganti perkiraan bilangan real yang mendekati nol
dengan bilangan bulat tepat 0.
Saat Anda melakukan perhitungan dengan angka presisi arbitrer, Mathematica melacak presisi di semua titik. Di
dalam umum, Mathematica mencoba memberi Anda hasil yang memiliki presisi setinggi mungkin, mengingat
presisi masukan yang Anda berikan.
Mathematica memperlakukan angka presisi arbitrer sebagai mewakili nilai kuantitas di mana sejumlah digit
diketahui, dan sisanya tidak diketahui. Secara umum, angka presisi arbitrer x diambil untuk memiliki Digit[x]
presisi yang diketahui dengan tepat, diikuti oleh jumlah digit tak terhingga yang seluruhnya tidak dikenal.
= N[Pi, 10]
= 3.141592654
Saat Anda melakukan perhitungan, Mathematica melacak digit mana dalam hasil Anda yang dapat dipengaruhi
oleh yang tidak diketahui digit dalam input Anda. Ini mengatur ketepatan hasil Anda sehingga tidak ada digit yang
terpengaruh yang pernah disertakan. Prosedur ini memastikan bahwa semua digit yang dikembalikan oleh
Mathematica benar, berapa pun nilai digit yang tidak diketahui.
= N[Gamma[1/7], 30]
= 6.54806294024782443771409334943
Dalam banyak perhitungan, ketepatan hasil yang Anda peroleh semakin menurun sebagai akibat dari “kesalahan
pembulatan”. kasus khas ini terjadi jika Anda mengurangi dua angka yang berdekatan. Hasil yang Anda dapatkan
tergantung pada pesanan tinggi digit di setiap nomor, dan biasanya memiliki digit presisi yang jauh lebih sedikit
daripada salah satu nomor aslinya.
• 3.1.6 Nomor Mesin-Presisi
Setiap kali angka presisi mesin muncul dalam perhitungan, seluruh perhitungan biasanya dilakukan di mesin presisi.
Mathematica kemudian akan memberikan angka presisi mesin sebagai hasilnya.
Setiap kali input berisi nomor presisi mesin apa pun, Mathematica melakukan perhitungan ke presisi mesin.
= 1.444444444444444444 ^ 5.7
8.13382
Saat Anda melakukan perhitungan dengan angka presisi arbitrer, seperti yang dibahas di bagian sebelumnya,
Mathematica selalu melacak ketepatan hasil Anda, dan hanya memberikan angka- angka yang diketahui benar,
mengingat ketepatan masukan Anda. Namun, ketika Anda melakukan perhitungan dengan angka presisi mesin,
Mathematica selalu memberi Anda hasil presisi mesin, apakah semua digit dalam hasil dapat, pada kenyataannya,
ditentukan benar atau tidak berdasarkan masukan Anda. diff = 1.11111111 - 1.11111000
1.11 × 10−6
Fakta bahwa Anda bisa mendapatkan angka palsu dalam perhitungan numerik presisi mesin dengan Mathematica
ada di banyak respek cukup tidak memuaskan. Alasan utama, bagaimanapun, bahwa Mathematica menggunakan
presisi tetap untuk perhitungan ini adalah masalah efisiensi komputasi.
Mathematica biasanya diatur untuk melindungi Anda sebanyak mungkin dari detail sistem komputer Anda
menggunakan. Dalam berurusan dengan nomor presisi mesin, Anda akan kehilangan terlalu banyak, namun, jika
Mathematica tidak membuat penggunaan beberapa fitur khusus komputer Anda.
Poin pentingnya adalah hampir semua komputer memiliki perangkat keras atau mikrokode khusus untuk
melakukan perhitungan floating-point untuk presisi tetap tertentu. Mathematica memanfaatkan fitur-fitur ini saat
melakukan numerik presisi mesin perhitungan.
Susunan tipikalnya adalah bahwa semua angka presisi mesin di Mathematica direpresentasikan sebagai "presisi
ganda" bilangan floating-point” dalam sistem komputer yang mendasarinya. Pada sebagian besar komputer saat
ini, angka tersebut berisi total 64 bit biner, biasanya menghasilkan 16 digit desimal mantissa.
Keuntungan utama menggunakan kemampuan floating-point bawaan komputer Anda adalah kecepatan.
Sewenang-wenang-presisi perhitungan numerik, yang tidak menggunakan kemampuan ini secara langsung,
biasanya berkali-kali lebih lambat daripada perhitungan presisi mesin.
Ada beberapa kelemahan menggunakan built-in kemampuan floating-point. Yang sudah disebutkan adalah bahwa
itu memaksa semua angka untuk memiliki presisi tetap, terlepas dari presisi apa yang dapat dibenarkan untuk
mereka.
Kerugian kedua adalah bahwa perlakuan terhadap angka presisi mesin dapat sedikit berbeda dari satu sistem
komputer ke yang lainnya. Dalam bekerja dengan angka presisi mesin, Mathematica bergantung pada aritmatika
titik-mengambang sistem dari setiap komputer tertentu. Jika aritmatika titik-mengambang dilakukan secara
berbeda pada dua komputer, Anda
mungkin mendapatkan hasil yang sedikit berbeda untuk perhitungan Mathematica presisi mesin pada komputer tersebut.
Interval [ mnt1, maks1 <, 8 min 2, maks 2 <, … penyatuan interval dari min1 ke max1, min2 ke
] max2, …
Interval [{0.25}]
Interval [{- }]
Anda dapat menggunakan interval tidak hanya dengan jumlah yang tepat tetapi juga dengan angka perkiraan.
Bahkan dengan presisi mesin angka, Mathematica selalu berusaha melakukan pembulatan sedemikian rupa untuk
menjaga validitas hasil.
= Interval[100.] – 100
Interval[{−1.42109× 10−14, 1.42109 × 10−14}]
• 3.1.8 Topik Lanjutan: Hasil Tak tentu dan Tak Terbatas
Ekspresi seperti 0/0 adalah contoh dari hasil numerik tak tentu. Jika Anda mengetik 0/0, tidak ada cara untuk
Mathematica untuk mengetahui jawaban apa yang Anda inginkan. Jika Anda mendapatkan 0/0 dengan mengambil
limit dari x x sebagai x > 0, maka Anda mungkin menginginkan jawaban 1. Sebaliknya, jika Anda mendapatkan
0/0 sebagai batas dari 2 x / x, maka Anda mungkin menginginkan jawaban 2.
Ekspresi 0/0 sendiri tidak mengandung informasi yang cukup untuk memilih antara kasus ini dan kasus lainnya. Sebagai
hasilnya, nilainya harus dianggap tak tentu.
Setiap kali hasil tak tentu dihasilkan dalam perhitungan aritmatika, Mathematica mencetak pesan peringatan, dan
kemudian mengembalikan Indeterminate sebagai hasil perhitungan. Jika Anda pernah mencoba menggunakan
Indeterminate dalam perhitungan aritmatika, Anda selalu mendapatkan hasil Tak tentu. Ekspresi tak tentu tunggal
secara efektif "meracuni" perhitungan aritmatika apa pun. (Simbol Tak tentu memainkan peran dalam
Mathematica mirip dengan objek "bukan angka" dalam Standar Titik Mengambang IEEE.)
Ada banyak situasi di mana nyaman untuk dapat melakukan perhitungan dengan jumlah tak terbatas. Simbol
Infinity di Mathematica mewakili kuantitas tak terbatas positif. Anda dapat menggunakannya untuk menentukan
hal-hal seperti batas penjumlahan dan integral. Anda juga dapat melakukan beberapa perhitungan aritmatika
dengannya.
Berikut adalah integral dengan limit tak hingga
= Integrate[1/x^3, {x, 1, Infinity}]
1
=
2
Ada sejumlah poin halus yang muncul dalam menangani jumlah tak terbatas. Salah satunya menyangkut "arah"
dari kuantitas yang tak terbatas. Ketika Anda melakukan integral tak hingga, Anda biasanya berpikir untuk
melakukan integrasi di sepanjang jalan di bidang kompleks yang menuju tak terhingga dalam beberapa arah.
Dalam hal ini, penting untuk membedakan versi yang berbeda dari tak terhingga yang sesuai dengan arah yang
berbeda di bidang kompleks. +¶ dan -¶ adalah dua contoh, tetapi untuk beberapa tujuan seseorang juga
membutuhkan i dan seterusnya.
Dalam Mathematica, jumlah tak terbatas dapat memiliki "arah", yang ditentukan oleh bilangan kompleks. Saat
Anda mengetik simbol Infinity, mewakili kuantitas tak terbatas positif, ini diubah secara internal ke bentuk
Diarahkan
Infinity[1], yang mewakili kuantitas tak terbatas dalam arah +1. Demikian pula, -Infinity menjadi
DirectedInfinity[-1], dan I Infinity menjadi DirectedInfinity[I]. Meskipun DirectedInfinity form selalu digunakan
secara internal, format output standar untuk DirectedInfinity[r] adalah r Infinity.
• 3.1.9 Topik Lanjutan: Mengontrol Evaluasi Numerik
= N[f[2/3, Pi]]
F [0.666667, 3.14159]
3.14159}
3.2 Fungsi Matematika
Fungsi matematika di Mathematica diberi nama sesuai dengan aturan yang pasti. Seperti kebanyakan Mathematica
fungsi, nama biasanya kata-kata bahasa Inggris lengkap, dieja lengkap. Untuk beberapa fungsi yang sangat umum, Mathe
matica menggunakan singkatan tradisional. Jadi fungsi modulo, misalnya, adalah Mod, bukan Modul
Fungsi matematika yang biasanya disebut dengan nama seseorang memiliki nama dalam Mathematica dalam bentuk
Simbol Orang. Jadi, misalnya, polinomial Legendre Pn HxL dilambangkan LegendreP[n, x]. Meskipun konvensi ini
menghasilkan nama fungsi yang lebih panjang, konvensi ini menghindari ambiguitas atau kebingungan.
Ketika notasi standar untuk fungsi matematika melibatkan subskrip dan superskrip, subskripnya adalah: diberikan sebelum
superskrip dalam bentuk Mathematica. Jadi, misalnya, polinomial Legendre terkait 𝑃𝑚(x) dilambangkan LegendreP[n, m,
x].
IntegerPart (x) bagian bilangan bulat dari x Bagian pecahan (x) bagian pecahan dari x Bulat (x) bilangan bulat [x]
terdekat dengan x
Lantai (x) bilangan bulat terbesar [x] tidak lebih besar dari x
Plafon (x) bilangan bulat terkecil [x] tidak lebih kecil dari x
-2.5 -2 -0.5 -2 -3 -2
-2.6 -2 -0.6 -3 -3 -2
Mengekstrak bagian bilangan bulat dan pecahan.
IntegerPart[x] dan FractionalPart[x] dapat dianggap sebagai mengekstraksi digit ke kiri dan kanan dari titik
desimal.
Round[x] sering digunakan untuk memaksa bilangan yang mendekati bilangan bulat menjadi bilangan bulat.
Floor[x] dan Ceiling[x] sering muncul dalam menghitung berapa banyak elemen yang akan ada dalam urutan angka
dengan spasi bukan bilangan bulat.
x + I y bilangan kompleks x + i y
Re [z] bagian yang sebenarnya Re z Im [z] bagian imajiner Im z
Conjugate [z] konjungsi kompleks 𝑧∗ atau z Abs [z] nilai absolut [z] Arg [z] argumen ∅ sedemikian rupa sehingga z =
|𝑧|𝑒𝑖∅
Angka Pseudorandom
Berikut adalah bilangan real pseudorandom 30 digit dalam rentang 0 hingga 1. In[2]:= Random[Real, {0, 1}, 30]
Out[2]= 0.748823044099679773836330229338
Ini memberikan daftar 8 bilangan bulat pseudorandom antara 100 dan 200 (inklusif) In[3]:= Table[Random[Integer, {100,
200}], {8}]
Out[3]= {120, 108, 109, 147, 146, 189, 188, 187}
Jika Anda memanggil Random[ ] berulang kali, Anda akan mendapatkan urutan angka yang “khas”, tanpa
pola tertentu. Di sana banyak cara untuk menggunakan nomor tersebut.
Salah satu cara umum untuk menggunakan nomor pseudorandom adalah dalam membuat tes numerik hipotesis. Misalnya,
jika Anda percaya bahwa dua ekspresi simbolis sama secara matematis, Anda dapat mengujinya dengan memasukkan
angka "khas" nilai untuk parameter simbolik, dan kemudian membandingkan hasil numerik. (Jika Anda melakukan ini,
Anda harus berhati-hati tentang masalah akurasi numerik dan tentang fungsi variabel kompleks yang mungkin tidak
memiliki nilai unik.)
Mengganti dalam nilai numerik acak menunjukkan bahwa persamaan tidak selalu Benar. In[5]:= % /. x -> Random[ ]
Out[5]= False
Penggunaan umum lainnya dari nomor pseudorandom termasuk simulasi proses probabilistik, dan pengambilan sampel
ruang besar dari kemungkinan. Bilangan pseudorandom yang dihasilkan Mathematica selalu terdistribusi secara merata di
atas rentang yang Anda tentukan.
Acak tidak seperti hampir semua fungsi Mathematica lainnya karena setiap kali Anda memanggilnya, Anda berpotensi
mendapatkan yang berbeda hasil. Jika Anda menggunakan Acak dalam perhitungan, oleh karena itu, Anda mungkin
mendapatkan jawaban yang berbeda pada kesempatan yang berbeda.
Urutan yang Anda dapatkan dari Acak[ ] dalam banyak hal tidak "benar-benar acak", meskipun seharusnya"cukup acak"
untuk tujuan praktis. Urutan sebenarnya dihasilkan dengan menerapkan matematika yang pasti algoritma, mulai dari
"benih" tertentu. Jika Anda memberikan benih yang sama, maka Anda mendapatkan urutan yang sama.
Ketika Mathematica dimulai, dibutuhkan waktu dalam sehari (diukur dalam sepersekian detik) sebagai benih untuk
pembangkit bilangan pseudorandom. Oleh karena itu, dua sesi Mathematica yang berbeda hampir selalu memberikan hasil
yang berbeda urutan bilangan pseudorandom.
Jika Anda ingin memastikan bahwa Anda selalu mendapatkan urutan angka pseudorandom yang sama, Anda dapat secara
eksplisit memberikan a seed untuk generator pseudorandom, menggunakan SeedRandom.
Penggunaan umum lainnya dari nomor pseudorandom termasuk simulasi proses probabilistik, dan pengambilan sampel
ruang besar dari kemungkinan. Bilangan pseudorandom yang dihasilkan Mathematica selalu terdistribusi secara merata di
atas rentang yang Anda tentukan.
Acak tidak seperti hampir semua fungsi Mathematica lainnya karena setiap kali Anda memanggilnya, Anda berpotensi
mendapatkan yang berbedahasil. Jika Anda menggunakan Acak dalam perhitungan, oleh karena itu, Anda mungkin
mendapatkan jawaban yang berbeda pada kesempatan yang berbeda.
Urutan yang Anda dapatkan dari Acak[ ] dalam banyak hal tidak "benar-benar acak", meskipun seharusnya"cukup acak"
untuk tujuan praktis. Urutan sebenarnya dihasilkan dengan menerapkan matematika yang pastialgoritma, mulai dari
"benih" tertentu. Jika Anda memberikan benih yang sama, maka Anda mendapatkan urutan yang sama. Ketika
Mathematica dimulai, dibutuhkan waktu dalam sehari (diukur dalam sepersekian detik) sebagai benih untukpembangkit
bilangan pseudorandom. Oleh karena itu, dua sesi Mathematica yang berbeda hampir selalu memberikan hasil yang
berbedaurutan bilangan pseudorandom.
Jika Anda ingin memastikan bahwa Anda selalu mendapatkan urutan angka pseudorandom yang sama, Anda dapat secara
eksplisit memberikan a seed untuk generator pseudorandom, menggunakan SeedRandom.
Jika Anda menyemai ulang generator pseudorandom dengan benih yang sama, Anda mendapatkan urutan nomor
pseudorandom yang sama.
In[8]:= SeedRandom[143]; Table[Random[ ],
Setiap kali Random dipanggil, keadaan internal generator pseudorandom yang digunakannya berubah. Ini berarti bahwa
panggilan ke Acak yang dilakukan dalam perhitungan tambahan akan berpengaruh pada angka yang dikembalikan oleh
Acak dalam perhitungan utama Anda. Untuk menghindari masalah yang terkait dengan ini, Anda dapat menyimpan nilai
$RandomState sebelumnya Anda melakukan perhitungan tambahan, dan kemudian mengembalikannya setelah itu.
In[9]:= {Block[{$RandomState}, {Random[ ], Random[ ]}], {Random[ ], Random[ ]}} Out[9]= {{0.1169, 0.783447},
{0.1169, 0.783447}}
Mod [k, n ] k modulo n Hremainder from dividing k by n L Quotient[ m, n ] bilangan hasil bagi m dan n (bagian
bulat dari m/n )
GCD [n1 , n2, … ] pembagi persekutuan terbesar dari n1 , n2 , …
LCM [n1 , n2, … ] kelipatan persekutuan terkecil dari n1 , n2 ,
… KroneckerDelta [ n1 , n2, … ] delta Kronecker 𝛿𝑛1 𝑛2 … sama
dengan 1 jika semua ni sama, dan 0 sebaliknya
IntegerDigits [ n, b ] digit n di basis b
IntegerExponent [ n, b ] pangkat tertinggi dari b yang membagi n
Khususnya ketika Anda menggunakan Mod untuk mendapatkan indeks untuk bagian-bagian objek, Anda akan sering
merasa nyaman untuk menentukan suatu mengimbangi.
Ini secara efektif mengekstrak bagian ke-18 dari daftar, dengan daftar diperlakukan secara siklis.
Fungsi pembagi persekutuan terbesar GCD[n1, n2, … ] memberikan bilangan bulat terbesar yang membagi semua ni
dengan tepat.Saat Anda memasukkan rasio dua bilangan bulat, Mathematica secara efektif menggunakan GCD
untuk meniadakan faktor persekutuan, dan memberikan a bilangan rasional dalam istilah terendah. Fungsi kelipatan
persekutuan terkecil KPK[n1, n2, … ] memberikan bilangan bulat terkecil yang memuat semua faktor dari masing-
masing dari 𝑛𝑖
FactorInteger [ n ] daftar faktor prima dari n , dan eksponennya Divisors [n ] daftar bilangan bulat yang
membagi n
Prime [k ] bilangan prima ke-k
PrimePi [x ] jumlah bilangan prima yang kurang dari atau sama dengan x
PrimeQ [n ] berikan Benar jika n adalah bilangan prima, dan Salah jika sebaliknya FactorInteger [ n, daftar faktor
prima Gaussian dari bilangan bulat Gaussian GaussianIntegers−>True] n , dan eksponennya PrimeQ [n,
berikan Benar jika n adalah prima Gaussian, dan Salah jika sebaliknya GaussianIntegers−>True]
Ini memberikan faktor dari 24 sebagai 23, 31 . Elemen pertama dalam setiap daftar adalah faktor; yang kedua
adalah eksponennya.
Anda harus menyadari bahwa menurut pemikiran matematika saat ini, pemfaktoran bilangan bulat pada dasarnya sulit
masalah komputasi. Akibatnya, Anda dapat dengan mudah mengetikkan bilangan bulat yang tidak dapat diperhitungkan
oleh Mathematica sesuatu yang pendek dari waktu astronomis. Tetapi selama bilangan bulat yang Anda berikan kurang
dari sekitar 50 digit,FactorInteger seharusnya tidak mengalami kesulitan. Dan dalam kasus khusus itu akan dapat
menangani bilangan bulat yang lebih panjang. (Anda dapat membuat beberapa masalah pemfaktoran berjalan lebih cepat
dengan menyetel opsi FactorComplete->False, sehingga Factorg Integer[n] mencoba menarik hanya faktor mudah dari n.)
Ini adalah bilangan bulat panjang yang agak khusus.
Seringkali jauh lebih cepat untuk menguji apakah suatu bilangan prima daripada memfaktorkannya.
Khususnya dalam teori bilangan, seringkali lebih penting untuk mengetahui distribusi bilangan prima daripada
nilai sebenarnya.Fungsi PrimePi[x] memberikan jumlah bilangan prima 𝜋(x) yang kurang dari atau sama dengan
x.
Ini memberikan jumlah bilangan prima kurang dari satu miliar.
Secara default, FactorInteger hanya mengizinkan bilangan bulat nyata. Tetapi dengan pengaturan opsi GaussianIntegers
> True,itu juga menangani bilangan bulat Gaussian, yang merupakan bilangan kompleks dengan bagian real dan
imajiner bilangan bulat. Seperti itu mungkin untuk memfaktorkan secara unik dalam hal bilangan prima nyata, juga
memungkinkan untuk memfaktorkan secara unik dalam hal bilangan prima Gaussian. Namun demikian ada beberapa
ambiguitas potensial dalam pemilihan bilangan prima Gaussian. Di Mathematica, mereka selalu dipilih memiliki bagian
real positif, dan bagian imajiner non-negatif, kecuali untuk kemungkinan faktor awal -1 atau ±i. Di atas bilangan bulat
Gaussian, 2 dapat difaktorkan sebagai ( -i )( 1 + 𝑖)2
Berikut adalah faktor-faktor dari bilangan bulat Gaussian.
Fungsi totient Euler ∅ (𝑛)memberikan jumlah bilangan bulat kurang dari n yang relatif prima ke
n. Penting hubungan (Teorema Kecil Fermat) adalah bahwa 𝑎∅(𝑛) ≡ 1 mod n untuk semua 𝑎 relatif
prima ke n.
Fungsi Möbius 𝜇 (𝑛) didefinisikan sebagai (−1)𝑘 jika n adalah produk dari k bilangan prima yang berbeda, dan 0 jika n
berisi kuadrat faktor (selain 1). Hubungan penting adalah rumus inversi Möbius, yang menyatakan bahwa jika g (𝑛) = ∑𝑑
| 𝑛 𝑓 (𝑑) untuk semua n, maka 𝑓 (𝑛) =
∑𝑑| 𝑛 𝜇(𝑑) g (𝑛⁄𝑑)di mana jumlahnya adalah semua bilangan bulat positif d yang membagi n.
Fungsi pembagi 𝜎𝑘 (𝑛) adalah jumlah pangkat 𝑘𝑡ℎdari pembagi n. Fungsi s0 HnL memberikan totaljumlah pembagi n, dan
sering dilambangkan d (n). Fungsi 𝜎1 (𝑛), sama dengan jumlah pembagi n, sering kali dilambangkan𝜎 (𝑛).
Untuk prima n, f𝜎 (𝑛) = n - 1.
𝑛
Simbol Jacobi Simbol Jacobi[n, m] direduksi menjadi simbol Legendre [ ] ketika m adalah
𝑚 bilangan prima ganjil. Simbol Legendre sama dengan nol jika n habis dibagi m, selain itu sama dengan 1 jika n adalah
modulo residu kuadratik prima m, dan ke -1 jika tidak. Suatu bilangan bulat n yang relatif prima terhadap m dikatakan
sebagai residu kuadratik modulo m jika adaada bilangan bulat k sedemikian rupa sehingga 𝑘2 ≡ n mod m. Simbol penuh
Jacobi adalah produk
𝑛
dari simbol Legendre ( )untuk masing-masing dari faktor prima pi sedemikian rupa sehingga m
𝑝𝑖
= 𝑀𝑖𝑝𝑖
Extended gcd ExtendedGCD [n1, n2, … ] memberikan daftar { g, {r1, r2, … }} di mana g adalah persekutuan terbesar
pembagi ni , dan ri adalah bilangan bulat sehingga g = r1 n1 + r2 n2 + …. Gcd yang diperluas penting dalam
menemukan solusi integer untuk persamaan Diophantine linier. Angka pertama dalam daftar adalah gcd dari 105 dan
196.
Ini memberikan dasar tereduksi untuk kisi dalam ruang empat dimensi yang ditentukan oleh tiga vector.
Perhatikan bahwa pada contoh terakhir, LatticeReduce menggantikan vektor yang hampir sejajar dengan vektor yang
lebih besar tegak lurus. Dalam prosesnya, ia menemukan beberapa vektor basis yang cukup pendek.
Pecahan lanjutan.
Pecahan lanjutan muncul di banyak pengaturan teori bilangan. Bilangan rasional telah berakhir terus representasi
pecahan. Bilangan irasional kuadrat memiliki representasi pecahan lanjutan yang berulang-ulang
ContinuedFraction [x] representasi pecahan lanjutan yang lengkap
untuk bilangan irasional rasional atau kuadrat
RealDigits [x] urutan digit lengkap untuk bilangan rasional RealDigits [ x, b ] urutan digit lengkap dalam basis
b
Representasi pecahan lanjutan dari √79 dimulai dengan istilah 8, kemudian melibatkan urutan istilah yang
berulang selamanya.
Operasi bitwise.
Operasi bitwise bekerja pada bilangan bulat yang direpresentasikan sebagai bit biner. BitAnd[𝑛1, 𝑛2 , ….,] menghasilkan
bilangan bulat yang binernya representasi bit memiliki posisi di mana representasi bit biner dari semua ni memilikinya.
BitOr[𝑛1, 𝑛2,… ] menghasilkan bilangan bulat dengan yang pada posisi di mana salah satu ni memilikinya. BitXor[𝑛1,
𝑛2,] menghasilkan bilangan bulat dengan yang pada posisi di mana 𝑛1atau 𝑛2 tetapi tidak keduanya memilikinya.
BitXor[𝑛1 , 𝑛2 , … ] memiliki yang di mana angka ganjil aku punya.
Ini menemukan AND bitwise dari angka 23 dan 29 yang dimasukkan di basis 2.
Fungsi Kombinatorial
Fungsi faktorial n! memberikan banyak cara untuk mengurutkan n objek. koefisien binomial Binomial [n, m] dapat ditulis
sebagai (𝑛 ) = 𝑛!⁄{𝑚! (𝑛 − 𝑚)!]
Koefisien multinomial Multinomial [n1, n2, … ], dinotasikan
(𝑁; 𝑛1, 𝑛2, … . . 𝑛𝑚) = 𝑁!⁄(𝑛1! 𝑛2! … . . 𝑛𝑚), memberikan jumlah cara untuk mempartisi N objek yang berbeda menjadi m
set ukuran ni (dengan𝑁 = ∑𝑚 𝑛𝑖).
Mathematica memberikan hasil bilangan bulat yang tepat untuk faktorial bilangan bulat.
Polinomial Bernoulli BernoulliB [n, x] memenuhi hubungan fungsi pembangkitt
𝑡 𝑒𝑥 𝑡⁄(𝑒1 − 1) = ∑∞ 𝐵𝑛 (𝑥) 𝑡𝑛⁄𝑛!
Fungsi partisi 𝑝 (𝑛) meningkat secara asimtotik seperti𝑒√𝑛. Perhatikan bahwa Anda tidak bisa begitu saja menggunakan
Plot untuk menghasilkan plot aberfungsi seperti PartitionsP karena fungsi hanya dapat dievaluasi dengan argumen
integer.
Fungsi tanda tangan Signature [{i1, i2, … }] memberikan tanda tangan permutasi. Itu sama dengan +1 untuk genap
permutasi (terdiri dari jumlah transposisi genap), dan ke -1 untuk permutasi ganjil. Fungsi tanda tangan dapat dianggap
sebagai tensor yang benar-benar antisimetris, simbol Levi-Civita atau simbol epsilon.
Mathematica memberikan hasil yang tepat untuk logaritma kapan pun itu bisa. Ini log2 1024.
Berikut adalah plot dari fungsi tangen hiperbolik. Ini memiliki bentuk "sigmoidal" yang khas.
Ketika menanyakan akar kuadrat s dari sebuah bilangan a, secara efektif meminta solusi untuk persamaan s2 =
a.Persamaan ini, bagaimanapun, secara umum memiliki dua solusi yang berbeda. Baik s = 2 dan s = -2, misalnya, adalah
solusi untukpersamaan s2 = 4.
Sebenarnya tidak ada cara untuk memilih √𝑧 sehingga kontinu untuk semua nilai kompleks z. Harus ada
"cabang"potong”—sebuah garis pada bidang kompleks di mana fungsi √𝑧 terputus- putus. Mathematica mengadopsi yang
biasakonvensi mengambil potongan cabang untuk √𝑧 berada di sepanjang sumbu real negatif.
Diskontinuitas sepanjang sumbu real negatif cukup jelas dalam gambar tiga dimensi dari bagian imajiner bujur sangkar
ini.fungsi akar.
Gambar tiga dimensi, menunjukkan dua potongan cabang untuk fungsi sin-1 (z).
Konstanta Matematika
Polinomial Ortogonal
Polinomial Legendre LegendreP[n, x] muncul dalam studi sistem dengan simetri bola tiga dimensi.Mereka memenuhi
persamaan diferensial (1 − 𝑥2)𝑦′′ − 2𝑥𝑦′ + 𝑛(𝑛 + 1)𝑦 = 0 dan hubungan ortogonalitas-∫ 1 𝑃 (𝑥)𝑃 (𝑥)𝑑𝑥 = 0 untuk m ≠
𝑛
−1 𝑚 𝑛
Ini memberikan kerapatan untuk keadaan tereksitasi dari osilator harmonik mekanika kuantum. Rata-rata goyangannya
kira-kira adalah hasil fisika klasik.
Fungsi Khusus
Banyak hasil eksak untuk fungsi gamma dan poligamma dibangun ke dalam Mathematica.
Berikut adalah gambar tiga dimensi dari fungsi zeta Riemann pada bidang kompleks.
Ini adalah plot nilai absolut dari fungsi zeta Riemann pada garis kritis Re 𝑧 = 1:. Anda dapat melihat beberapa nol
pertama dari fungsi zeta. 2
Fungsi Airy yang diplot di sini memberikan amplitudo mekanika kuantum untuk partikel dalam potensial yang meningkat
secara linier dari kirike kanan. Amplitudo teredam secara eksponensial di wilayah yang secara klasik tidak dapat diakses
di sebelah kanan.
Legendre dan Fungsi Terkait
Integral Elips
Fungsi Elips
Hal ini menunjukkan lima nilai karakteristik pertama ar sebagai fungsi dari q.
Mathematica secara otomatis menulis ini dalam bentuk konstanta matematika standar.
Di sini lagi Mathematica mereduksi kasus khusus fungsi Airy menjadi ekspresi yang melibatkan fungsi gamma.
Ini menggunakan rumus refleksi untuk fungsi gamma.
Ada beberapa cara untuk menulis polinomial. Fungsi Expand, FactorTerms dan Factor memberikan tiga cara umum.
Perluas menulis polinomial sebagai jumlah istilah sederhana, dengan semua produk diperluas. Faktor Istilah menarik
keluar faktor-faktor umum dari setiap istilah. Faktor melakukan anjak pimpis lengkap, menulis polinomial sebagai
produk istilah, masing-masing serendah mungkin.
Ketika Anda memiliki polinomial di lebih dari satu variabel, Anda dapat menempatkan polinomial dalam bentuk
different dengan pada dasarnya memilih variabel yang berbeda untuk menjadi "dominan". Collect[poly, x] mengambil
polinomial dalam beberapa variabel dan menulis ulang sebagai jumlah istilah yang mengandung kekuatan yang
berbeda dari "variabel dominan" x.
Berikut adalah polynomial dalam dua variabel In[5]:= Expand[ (1 + 2x + y)^3 ]
Out[5]= 1 + 6 x + 12 x2 + 8 x3 + 3 y + 12 x y + 12 x2 y + 3 y2 + 6 x y2 + y3
Mathematica tidak secara otomatis memperluas ekspresi bentuk (a b)^c kecuali ketika c adalah bilangan bulat.
Secara umum hanya benar untuk melakukan ekspansi ini jika a dan b adalah nyata positif. Namun demikian, fungsi
PowerExpand melakukan ekspansi, secara efektif dengan asumsi bahwa a dan b memang nyata positif.
Mathematica tidak secara otomatis memperluas ekspresi ini. In[10]:= (x y)^n Out[10]= (x y)^n
Berikut adalah ekspresi yang melibatkan berbagai fungsi f. In[14]:= t = 3 + x f[1] + x^2 f[1] + y f[2]^2 + z f[2]^2
Out[14]= 3 + x f[1] + x2 f[1] + y f[2]^] + z f[2]^2
Menemukan Struktur Polinomial
Untuk polinomial biasa, Faktor dan Memperluas memberikan bentuk yang paling penting. Untuk ekspresi rasional,
ada banyak bentuk berbeda yang dapat berguna.
Dalam istilah matematika, Apart menguraikan ekspresi rasional menjadi "pecahan parsial".
Dalam ekspresi dengan beberapa variabel, Anda dapat menggunakan Apart[expr, var] untuk melakukan
dekomposisi fraksi parsial sehubungan dengan variabel yang berbeda.
Untuk berbagai jenis perhitungan praktis, satu-satunya operasi yang perlu Anda lakukan pada polinomial pada
dasarnya adalah yang struktural yang dibahas di bagian sebelumnya.
Namun, jika Anda melakukan aljabar yang lebih maju dengan polinomial, Anda harus menggunakan operasi aljabar
yang dibahas di bagian ini.
Anda harus menyadari bahwa sebagian besar operasi yang dibahas dalam bagian ini hanya bekerja pada polinomial
biasa, dengan eksponen integer dan koefisien bilangan rasional untuk setiap istilah.
PolynomialMod pada dasarnya adalah analog untuk polinomial dari fungsi Mod untuk bilangan bulat. Ketika
modulus m adalah bilangan bulat, PolynomialMod [poly, m] hanya mengurangi setiap koefisien dalam modulo
poli bilangan bulat
m. Jika m adalah polinomial, maka PolynomialMod [poly, m] secara efektif mencoba untuk mendapatkan tingkat
serendah polinomial mungkin dengan mengurangi dari poli yang sesuai kelipatan q m. Pengganda q itu sendiri bisa
menjadi polinomial, tetapi derajatnya selalu kurang dari tingkat poli. PolynomialMod menghasilkan polinomial
akhir yang derajat dan koefisien terkemuka keduanya sekecil mungkin.
Ini mengurangi x2 modulo x + 1 . Hasilnya hanyalah sisa dari membagi polinomial.
integer.
Ini mengurangi polinomial x2 + 1 modulo baik x + 1 dan 2. In[8]:= PolynomialMod[x^2 + 1, {x + 1, 2}] Out[8]=
0
Fungsi Resultant [poly 1, poly2, x] digunakan dalam sejumlah algoritma aljabar klasik. Hasil dari dua polinomial a
dan b, keduanya dengan koefisien utama satu, diberikan oleh produk dari semua perbedaan ai - bj antara akar
polinomial. Ternyata untuk setiap pasang polinomial, yang dihasilkan selalu polinomial dalam koefisien mereka.
Dengan melihat kapan hasilnya nol, seseorang dapat mengetahui nilai parameter apa yang dimiliki dua polinomial
memiliki akar yang sama. Dua nomial poli dengan koefisien utama satu memiliki k akar umum jika tepat elemen k
pertama dalam daftar Subresultants [poly1, poly2, x] adalah nol.
Berikut adalah hasil sehubungan dengan y dari dua polinomial dalam x dan y. Polinomial asli memiliki akar umum
dalam y hanya untuk nilai-nilai x di mana yang dihasilkan menghilang.
(x + y)^2 secara efektif berlebihan, dan karenanya tidak muncul dalam basis In[10]:= GroebnerBasis[{(x+y),
(x+y)^2}, {x, y}]
Out[10]= {8x + y}
Faktor, FactorTerms dan FactorSquareFree melakukan berbagai tingkat anjak pikun pada polinomial. Faktor
melakukan anjak penuh atas bilangan bulat. FactorTerms mengekstrak "konten" polinomial. FactorSquareg Free
mengeluarkan beberapa faktor yang muncul.
Berikut adalah polinomial, dalam bentuk yang diperluas In[14]:= t = Expand[ 2 (1 + x)^2 (2 + x) (3 + x) ] Out[14]=
12 + 34 x + 34 x^2 + 14 x^3 + 2 x^4
Terutama ketika Anda menulis program yang bekerja dengan polinomial, Anda akan sering merasa nyaman untuk
memilih potongan polinomial dalam bentuk standar. Fungsi FactorList memberikan daftar semua faktor polinomial,
bersama dengan eksponen mereka. Elemen pertama dari daftar selalu merupakan faktor numerik keseluruhan untuk
polinomial.
Bentuk yang dikembalikan FactorList adalah analog untuk polinomial dari bentuk yang dihasilkan oleh
FactorInteger untuk bilangan bulat.
Berikut adalah daftar faktor-faktor polinomial dalam serangkaian contoh sebelumnya. Setiap elemen dari daftar
memberikan faktor, bersama dengan eksponennya.
In[18]:= FactorList[t]
Faktor dan fungsi terkait biasanya hanya menangani polinomial dengan integer biasa atau bilangan rasional
coefficients. Jika Anda mengatur opsi GaussianIntegers -> True, bagaimanapun, maka Faktor akan memungkinkan
polinomial dengan coeffi-cientsyang merupakan bilangan kompleks dengan bagian nyata dan imajiner rasional. Hal
ini sering memungkinkan anjakalisasi yang lebih luas untuk dilakukan.
Polinomial ini tidak dapat direduksi ketika hanya bilangan bulat biasa yang diizinkan.
Polinomial siklonik muncul sebagai "polinomial dasar" dalam berbagai algoritma aljabar. Polinomi-als siktomik
didefinisikan oleh Cn (x) = ℿk (x - e^2nikln), di mana k berjalan di atas semua bilangan bulat positif kurang dari n
yang relatif prima terhadap n.
Faktorisasi adalah salah satu cara penting untuk memecah polinomial menjadi bagian yang lebih sederhana. Cara
lain, sangat berbeda, adalah dekomposisi. Ketika salah satu faktor polinomial P (x), seseorang menulisnya sebagai
produk p1 (x) p2 (x) ... dari polinomials pi (x) . Dekolonisasi Q (x) polinomial terdiri dari menulisnya sebagai
komposisi polinomial dari bentuk q1 (q2 ( . (x)... )) .
Berikut adalah contoh sederhana dari Decompose. Polinomial asli x^4 + x^2 + 1 dapat ditulis sebagai polinomial
x^2 + x + 1, dimana x adalah polynomial x^2 In[23]:= Decompose[x^4 + x^2 + 1, x]
Mathematica dapat bekerja dengan polinomial yang koefisiennya berada di bidang terbatas Zp bilangan bulat
modulo p utama p.
Berikut adalah polinomial biasa. In[1]:= Expand[ (1 + x)^6 ]
Out[1]= 1 + 6 x + 15 x^2 + 20 x^3 + 15 x^4 + 6 x^5 + x^6
Fungsi seperti Faktor biasanya mengasumsikan bahwa semua koefisien dalam polinomial yang mereka hasilkan
harus hanya melibatkan bilangan rasional. Tetapi dengan menetapkan opsi Ekstensi Anda dapat memperluas domain
coefficients yang akan diizinkan.
Hanya memungkinkan koefisien bilangan rasional, polinomial ini tidak dapat diperhitungkan.
Ekspresi Trigonometri
Fungsi ComplexExpand memperluas ekspresi aljabar dan trigonometri, membuat asumsi yang pasti tentang variabel
yang muncul.
Ada beberapa cara untuk menulis variabel z yang kompleks dalam hal parameter nyata. Seperti di atas, misalnya, z
dapat ditulis dalam "bentuk Cartesian" Re [z]
+ I Im [z]. Tapi itu sama-sama dapat ditulis dengan baik dalam "bentuk polar" Abs[z]
Exp[I Arg[z].
Opsi TargetFunctions di ComplexExpand memungkinkan Anda untuk menentukan bagaimana variabel kompleks
harus ditulis. TargetFunctions dapat diatur ke daftar fungsi dari set {Re, Im, Abs, Arg, Conjugate, Sign} .
ComplexExpand akan mencoba memberikan hasil dalam hal fungsi apa pun yang Anda minta. Default biasanya
untuk memberikan hasil dalam hal Re dan Im.
Dalam menyederhanakan dan FullSimplify selalu ada masalah dari apa yang dianggap sebagai bentuk
"paling sederhana" dari ekspresi. Anda dapat
menggunakan opsi ComplexityFunction -> c untuk menyediakan fungsi untuk menentukan hal ini. Fungsi ini akan
diterapkan pada setiap bentuk kandidat dari ekspresi, dan salah satu yang memberikan nilai numerik terkecil akan
dianggap paling sederhana.
Mathematica biasanya membuat asumsi sesedikit mungkin tentang objek yang Anda minta untuk dimanipulasi. Ini
berarti bahwa hasil yang diberikannya se- umum mungkin. Tetapi kadang-kadang hasil ini jauh lebih rumit daripada
jika lebih banyak asumsi dibuat.
Sederhanakan secara default pada dasarnya tidak melakukan apa-apa dengan ekspresi ini.
Dengan menerapkan Sederhanakan dan Penyederhanaan Penuh dengan asumsi yang tepat untuk persamaan dan
ketidaksetaraan Anda dapat pada dasarnya menetapkan berbagai teorema.
Tanpa membuat asumsi tentang x kebenaran atau kepalsuan persamaan ini tidak dapat ditentukan.
In[6]:= Simplify[Abs[x] == x] Out[6]= x = Abs[x]
Sederhanakan dan Perkuat selalu mencoba menemukan bentuk ekspresi yang paling sederhana. Kadang-kadang,
bagaimanapun, Anda mungkin hanya ingin Mathematica mengikuti proses evaluasi biasa, tetapi dengan asumsi
tertentu dibuat. Anda dapat melakukan ini dengan menggunakan Refine. Cara kerjanya adalah bahwa Refine[expr,
assum] melakukan transformasi yang sama seperti Mathematica akan melakukan secara otomatis jika variabel
dalam expr digantikan oleh ekspresi numerik yang memuaskan asumsi assum.
Tidak ada bentuk sederhana yang dapat ditemukan oleh In[10]:= Simplify[Log[x], x < 0]
Out[10]= Log[x]
Kelas asumsi yang penting adalah yang menyatakan bahwa beberapa objek adalahe lemen dari domain tertentu.
Anda dapat mengatur asumsi tersebut menggunakan x dom,di mana "karakter dapat dimasukkan sebagai :eld:
atau \[Element].
Ini menegaskan bahwa pi adalah elemen dari domain bilangan real. In[12]:= Pi Reals
Out[12]= True
Jika n diasumsikan sebagai bilangan bulat, sin (n pi) adalah nol. In[17]:= Simplify[Sin[n Pi], n Integers]
Out[17]= 0
Dalam sesuatu seperti Simplify [expr, assum] atau Refine[expr, assum] Anda secara eksplisit memberikan asumsi
yang ingin Anda gunakan. Tetapi terkadang Anda mungkin ingin menentukan satu set asumsi untuk digunakan
dalam seluruh koleksi operasi. Anda dapat melakukan ini dengan menggunakan Asumsi.
Ini memberitahu Simplify untuk menggunakan asumsi default x > 0. In[26]:= Assuming[x > 0, Simplify[Sqrt[x^2]]]
Out[26]= x
Fungsi seperti Sederhanakan dan Perbaiki mengambil opsi Asumsi,yang menentukan asumsi default apa yang harus
mereka gunakan. Secara default, pengaturan untuk opsi ini adalah Asumsi: > $Assumptions. Cara Asumsi kemudian
bekerja adalah untuk menetapkan nilai lokal untuk $Assumptions,seperti di Blok.
Selain Menyederhanakan dan Memperbaiki,sejumlah fungsi lain mengambil opsi Asumsi, dan dengan demikian
dapat memiliki asumsi yang ditentukan untuk mereka dengan Mengasumsikan. Contohnya adalah FunctionExpand,
Integrate, Limit, Laplaceg Transform.
Anda dapat menggunakan fungsi Kurangi untuk mengurangi persamaan sehingga memberikan "solusi" untuk x.
Hasilnya, seperti persamaan asli, dapat dilihat sebagai pernyataan logis.
Persamaan kuadrat x ^ 2 + 3x == 2 dapat dianggap sebagai pernyataan implisit tentang nilai x. Seperti yang
ditunjukkan pada contoh di atas, Anda dapat menggunakan fungsi Kurangi untuk mendapatkan pernyataan yang
lebih eksplisit tentang nilai x. Ekspresi yang dihasilkan oleh Reduce memiliki bentuk x == r 1
|| x == r2 . Ekspresi ini sekali lagi merupakan pernyataan logis, yang menegaskan bahwa x sama dengan r 1, atau x
sama dengan r2. Nilai-nilai x yang konsisten dengan pernyataan ini persis sama dengan yang konsisten dengan
persamaan kuadrat asli. Namun, untuk banyak tujuan, bentuk yang diberikan Reduce jauh lebih berguna daripada
persamaan aslinya.
Anda dapat menggabungkan dan memanipulasi persamaan seperti pernyataan logis lainnya. Anda dapat
menggunakan koneksi logis seperti || dan untuk menentukan kondisi alternatif atau simultan. Anda dapat
menggunakan fungsi seperti LogicalExpand,serta FullSimplify,untuk menyederhanakan koleksi persamaan.
Untuk banyak tujuan, Anda akan merasa nyaman untuk memanipulasi persamaan hanya sebagai pernyataan logis.
Kadang-kadang, bagaimanapun, Anda benar-benar akan ingin menggunakan solusi eksplisit untuk persamaan dalam
perhitungan lain.
Dalam kasus seperti itu, adalah conve-nient untuk mengubah persamaan yang dinyatakan dalam bentuk lhs == rhs
menjadi aturan transformasi dari bentuk lhs
-> rhs. Setelah Anda memiliki solusi untuk persamaan dalam bentuk aturan transformasi eksplisit, Anda dapat
mengganti solusi menjadi ekspresi dengan menggunakan / . Operator.
Reduce menghasilkan pernyataan logis tentang nilai-nilai x yang sesuai dengan akar persamaan kuadratratic.
Persamaan utama yang memecahkan dan fungsi Mathematica terkait berurusan dengan adalah persamaan
polinomial.
Untuk persamaan kubik dan quartic hasilnya sering rumit, tetapi untuk semua persamaan dengan derajat hingga
empat Mathe-matica selalu mampu memberikan rumus eksplisit untuk solusi.
Fitur penting dari rumus-rumus ini adalah bahwa mereka hanya melibatkan radikal:kombinasi aritmatika akar
kuadrat, akar kubus dan akar yang lebih tinggi.
Ini adalah fakta matematika mendasar, bagaimanapun, bahwa untuk persamaan derajat lima atau lebih tinggi, tidak
mungkin lagi secara umum untuk memberikan rumus eksplisit untuk solusi dalam hal radikal.
Ada beberapa persamaan spesifik yang ini masih possible, tetapi dalam sebagian besar kasus itu tidak.
Tidak ada rumus eksplisit untuk solusi untuk persamaan ini dapat diberikan dalam hal radikal, sehingga
Mathematica menggunakan representasi simbolis implisit.
Objek akar memberikan representasi yang tepat, meskipun implisit, untuk akar polinomial. Anda dapat bekerja
dengan mereka sebanyak Anda akan bekerja dengan Sqrt [2] atau ekspresi lain yang mewakili kuantitas numerik
yang tepat.
Berikut adalah objek Root yang mewakili akar pertama polinomial yang dibahas di atas.
Solusi untuk persamaan ini dapat kembali diwakili oleh objek Root, tetapi sekarang setiap objek Root melibatkan
parameter a
In[28]:= Solve[Sin[x] == a, x]
Solve::ifun : Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for
complete solution information.
Out[28]= {{x → ArcSin[a]}}
Jika Anda meminta Solve untuk memecahkan persamaan yang melibatkan fungsi sewenang-wenang seperti f,secara
default akan mencoba untuk membangun solusi formal dalam hal fungsi terbalik.
Solve secara default menggunakan formal inverse untuk fungsi f. In[30]:= Solve[f[x] == a, x]
InverseFunction::ifun :
Inverse functions are being used. Values may be lost for multivalued inverses. Out[30]= {{x →
f{−1}[a]}} Ini adalah struktur fungsi terbalik In[31]:= InputForm[%] Out[31]//InputForm= {{x ->
InverseFunction[f, 1, 1][a]}}
Sementara Solve hanya dapat memberikan solusi spesifik untuk persamaan, Kurangi dapat memberikan representasi
dari seluruh set solusi. Untuk persamaan transendental, sering berakhir memperkenalkan parameter baru, katakanlah
dengan nilai-nilai yang berkisar di semuabilangan bulat possi-ble.
Seperti yang dibahas lebih panjang di Bagian 3.4.9, Kurangi memungkinkan Anda untuk membatasi domain
variabel. Kadang-kadang ini akan memungkinkan Anda menghasilkan solusi yang pasti untuk persamaan
transendental - atau menunjukkan bahwa mereka tidak ada.
Ketika Anda memasukkan objek Root, polinomial yang muncul di dalamnya secara otomatis dikurangi menjadi
bentuk minimal
In[1]:= Root[24 - 2 # + 4 #^5 &, 1] Out[1]= Root[12 − #1 + 2 #15 &, 1]
Objek akar adalah cara Mathematica mewakili bilangan aljabar. Nomor aljabar memiliki properti yang ketika Anda
melakukan operasi aljabar pada mereka, Anda selalu mendapatkan nomor aljabar tunggal sebagai hasilnya.
Jika Solve dan ToRadicals tidak berhasil mengekspresikan solusi untuk persamaan polinomial tertentu dalam hal
radikal, maka itu adalah tebakan yang baik bahwa ini pada dasarnya tidak dapat dilakukan. Namun, Anda harus
menyadari bahwa ada beberapa kasus khusus di mana pengurangan radikal pada prinsipnya mungkin, tetapi
Mathematica tidak dapat menemukannya. Contoh sim-plest adalah persamaan x5 + 20 x + 32 = 0, tetapi di sini
solusi dalam hal radikal sangat rumit. The equation x6 - 9 x4 - 4 x3 + 27 x2 - 36 x - 23 is another example, where now
x = 21/3+31/2 is a solution.
Ini memberikan objek Root yang melibatkan polinomial tingkat enam In[10]:= RootReduce[2^(1/3) + Sqrt[3]]
Out[10]= Root[−23 − 36 #1 + 27 #12 − 4 #13 − 9 #14 + #16 &, 2]
Di luar derajat empat, sebagian besar polinomial tidak memiliki akar yang dapat diekspresikan sama sekali dalam
hal radikal. Namun, untuk derajat lima ternyata akar selalu dapat dinyatakan dalam hal fungsi elips atau
hipergeometrik. Hasilnya, bagaimanapun, biasanya terlalu rumit untuk berguna dalam praktik.
Ini menghitung jumlah timbal balik dari akar 1 + 2 x + x5 In[12]:= RootSum[(1 + 2 # + #^5)&, (1/#)&]
Out[12]= −2
Persamaan Simultan
Anda dapat memberikan Memecahkan daftar persamaan simultan untuk dipecahkan. Solve dapat menemukan solusi
eksplisit untuk kelas besar persamaan polinomial simultan.
Berikut adalah persamaan linear sederhana dengan dua yang tidak diketahui.
Jika Anda membangun persamaan simultan dari matriks, Anda biasanya mendapatkan persamaan antara daftar
ekspresi.
Jika Anda memiliki persamaan seperti 2 x == 0,sangat jelas bahwa satu-satunya solusi yang mungkin adalah x -> 0.
Namun, jika Anda memiliki persamaan seperti x == 0,semuanya tidak begitujelas. Jika a tidak sama dengan nol,
maka x -> 0 sekali lagi adalah satu-satunya solusi. Namun, jika a sebenarnya sama dengan nol, maka nilai x adalah
solusi. Anda dapat melihat ini dengan menggunakan Reduce.
Solve secara implisit mengasumsikan bahwa parameter a tidak memiliki nilai khusus 0
Ini adalah solusi untuk persamaan linear sewenang-wenang yang diberikan oleh Solve.
Menghilangkan Variabel
Ketika Anda menuliskan satu set persamaan simultan dalam Mathematica,Anda menentukan kumpulan kendala
antara variabel. Ketika Anda menggunakan Solve,Anda menemukan nilai untuk beberapa variabel dalam hal yang
lain, tunduk pada kendala yang diwakili oleh persamaan.
Dalam berurusan dengan set persamaan, adalah umum untuk mempertimbangkan beberapa objek yang muncul
sebagai "variabel" sejati, dan yang lainnya sebagai "parameter". Dalam beberapa kasus, Anda mungkin perlu tahu
untuk apa nilai parameter hubungan tertentu antara variabel selalu puas.
Ini menemukan nilai parameter yang membuat persamaan bertahan untuk semua x In[9]:= SolveAlways[a + b x + c
x^2 == (1 + x)^2, x]
Out[9]= {{a → 1, b → 2, c → 1}}
Ketika Anda memberikan daftar persamaan untuk Dipecahkan,itu mengasumsikan bahwa Anda ingin semua
persamaan terpenuhi secara bersamaan. Hal ini juga
memungkinkan untuk memberikan Solve kombinasi logis yang lebih rumit dari persamaan.
Ketika Anda menggunakan Solve,hasil akhir yang Anda dapatkan adalah dalam bentuk aturan transformasi. Jika
Anda menggunakan Reduce atau Elimig nate,di sisilain, maka hasil Anda adalah pernyataan logis, yang dapat Anda
manipulasi lebih lanjut.
Input menggunakan notasi khusus untuk Implies dan Or. In[9]:= Reduce[x^2 == 1 ⇒ (x == 1 fi x == -1), x] Out[9]=
True
Ketidaksetaraan
Sama seperti persamaan x ^ 2 + 3x == 2 menegaskan bahwa x ^ 2 + 3x sama dengan 2, demikianjuga
ketidaksetaraan x ^ 2 + 3x > 2 menegaskan bahwa x
^ 2 + 3x lebih besar dari 2. Dalam Mathematica, kurangi karya tidak hanya pada persamaan, tetapi juga pada
ketidaksetaraan.
Pasangan ketidaksetaraan ini berkurang menjadi satu ketidaksetaraan. In[1]:= Reduce[{0 < x < 2, 1 < x < 4}, x]
Out[1]= 1 < x < 2
Jika Anda memiliki ketidaksetaraan yang melibatkan <= serta <,mungkin ada titik- titik terisolasi di mana
ketidaksetaraan dapat dikusp. Mengurangi mewakili poin- poin tersebut dengan memberikan persamaan.
Ketidaksetaraan ini dapat dipenuhi hanya pada dua titik yang terisolasi.
Untuk ketidaksetaraan yang melibatkan beberapa variabel, Kurangi hasil bersarangk oleksi spesifikasi interval, di
mana variabel kemudian memiliki batas yang tergantung pada variabel sebelumnya.
Dalam istilah geometris, setiap ketidaksetaraan linier membagi ruang menjadi dua bagian. Daftar ketidaksetaraan
linier sehingga mendefinisikan polyhe-dra, kadang-
kadang dibatasi, kadang-kadang tidak. Reduce mewakili polihedra tersebut dalam hal ketidaksetaraan bersarang.
Sudut-sudutpolihedra selalu muncul di antara titik akhir ketidaksetaraan ini.
Kurangi upaya untuk memberi Anda deskripsi lengkap tentang wilayah yang ditentukan oleh serangkaian
ketidaksetaraan. Kadang-kadang, bagaimanapun, Anda mungkin hanya ingin menemukan contoh individu nilai-nilai
variabel yang memenuhi ketidaksetaraan. Anda dapat melakukan ini menggunakan FindInstance.
Setiap kali Anda memanggil FindInstance dengan input tertentu, itu akan memberikan output yang sama. Dan ketika
ada contoh yang sesuai dengan poin khusus, membatasi, dari beberapa jenis, itu akan secara istimewa mengembalikan
ini. Tetapi secara umum, distribu-tion kasus yang dikembalikan oleh FindInstance biasanya akan tampak agak acak.
Setiap contoh, bagaimanapun, pada dasarnya
adalah bukti konstruktif bahwa ketidaksetaraan yang Anda berikan sebenarnya dapat dipenuhi.
Jika Anda meminta satu titik di disk unit, FindInstance memberikan asal. In[24]:= FindInstance[x^2 + y^2 <= 1, {x,
y}]
Out[24]= {{x → 0, y → 0}}
In[25]:= FindInstance[x^2 + y^2 <= 1, {x, y}, 500]; In[26]:= ListPlot[{x, y} /. %, AspectRatio->Automatic]
Mathematica biasanya mengasumsikan bahwa variabel yang muncul dalam persamaan dapat berdiri untuk bilangan
kompleks sewenang-wenang.Tetapi ketika Anda menggunakan Reduce, Anda dapat secara eksplisit memberi tahu
Mathematica bahwa variabel tersebut berarti objek di domain yang lebih terbatas.
Kurangi secara default mengasumsikan bahwa x bisa rumit, dan memberikan kelima solusi kompleks.
Persamaan polinomial tunggal dalam satu variabel akan selalu memiliki satu set terbatas solusi diskrit. Dan dalam
kasus seperti itu orang dapat memikirkan Reduce[eqns, vars, dom] hanya sebagai penyaringan solusi dengan
memilih yang kebetulan terletak di domain dom.
Tetapi begitu ada lebih banyak variabel, hal-hal dapat menjadi lebih rumit, dengan solusi untuk persamaan sesuai
dengan kurva parametrik atau permukaan dalam which nilai beberapa variabel dapat bergantung padanilai-nilai
orang lain. Seringkali ketergantungan ini dapat dijelaskan oleh beberapa koleksi persamaan atau ketidaksetaraan,
tetapi bentuk ini dapat berubah secara signifikan ketika seseorang beralih dari satu domain ke domain lainnya.
Jika input Anda hanya melibatkan persamaan, maka Kurangi secara default akan berasumsi bahwa semua variabel
itu rumit. Tetapi jika input Anda melibatkan ketidaksetaraan, maka Kurangi akan berasumsi bahwa setiap variabel
aljabar yang muncul di dalamnya adalah nyata, karena inequalities hanya dapat membandingkan jumlah nyata.
Untuk sistem polinomial atas domain nyata dan kompleks, solusi selalu terdiri dari sejumlah compo-nents yang
terbatas, di mana nilai-nilai variabel diberikan oleh angka atau fungsi aljabar.
Begitu seseorang memperkenalkan fungsi seperti Sin atau Exp,bahkan persamaan dalam variabel nyata atau
kompleks tunggal dapat memiliki solusi dengan jumlah komponen yang tak terbatas. Kurangi label komponen ini
dengan memperkenalkan parame-ters tambahan. Secara default, parameter nth dalam solusi yang diberikan akan
diberi nama C[n] . Secara umum Anda dapat menentukan bahwa itu harus diberi nama f[n] dengan memberikan
pengaturan opsi GeneratedParameters -> f.
Mengurangi dapat memecahkan sistem persamaan linier atau ketidaksetaraan atas bilangan bulat. Dengan persamaan
linear m dalam variabel n, parameter n - m biasanya perlu diperkenalkan. Tetapi dengan ketidaksetaraan, jumlah
parameter yang jauh lebih besar mungkin dibutuhkan.
Dengan dua variabel, Reduce dapat memecahkan persamaan kuadrat atas bilangan bulat. Hasilnya bisa berupa
urutan seperti Fibonacci, diwakili dalam hal kekuatan irasional kuadrat.
Mengubah sisi kanan menjadi 3,persamaan sekarang tidak memiliki solusi. In[19]:= Reduce[x^3 - 4 x y^2 + y^3 ==
3, {x, y}, Integers]
Out[19]= False
Persamaan atas bilangan bulat kadang-kadang memiliki koleksi solusi yang tampaknya cukup acak. Dan bahkan
perubahan kecil dalam persamaan sering dapat menyebabkan mereka tidak memiliki solusi sama sekali.
Untuk persamaan polinomial atas bilangan real dan kompleks, ada prosedur keputusan yang pasti untuk menentukan
apakah ada solusi atau tidak. Tetapi untuk persamaan polinomial di atas bilangan bulat, tidak terpecahkan dari
Masalah kesepuluh Hilbert demonstrates bahwa tidak pernah ada prosedur umum seperti itu
untuk kelas persamaan tertentu, bagaimanapun, prosedur dapat ditemukan, dan memang banyak yang
diimplementasikan dalam Kurangi.
Tetapi menangani kelas persamaan yang berbeda seringkali tampaknya memerlukan berbagai cabang teori bilangan,
dan jenis perhitungan yang sangat berbeda. Dan pada kenyataannya diketahui bahwa ada persamaan polinomial
integer universal, untuk yang mengisi beberapa variabel dapat membuat solusi untuk variabel lain sesuai dengan
output dari program yang benar-benar mungkin. Ini kemudian berarti bahwa untuk persamaan semacam itu tidak
pernah ada solusi bentuk tertutup yang dibangun dari elemen fixed seperti fungsi aljabar.
Jika seseorang menyertakan fungsi seperti Sin,maka bahkan untuk persamaan yang melibatkan bilangan real dan
kompleks, masalah yang sama dapat muncul.
Kurangi di sini secara efektif harus menyelesaikan persamaan di atas bilangan bulat.
Karena hanya ada sejumlah solusi yang mungkin untuk persamaan integer modulo n, Kurangi dapat systemati-cally
menemukannya.
Mengurangi biasanya memperlakukan variabel kompleks sebagai objek tunggal. Tetapi dalam berurusan dengan
fungsi yang tidak analitik atau memiliki pemotongan cabang, kadang-kadang harus memecahnya menjadi pasangan
variabel nyata Re[z] dan Im[z].
Jika FindInstance[expr, vars, dom] kembali {} maka ini berarti bahwa Mathematica telah secara efektif
membuktikan bahwa expr tidak dapat dipenuhi untuk nilai variabel apa pun dalam domain yang ditentukan. Ketika
expr dapat dipenuhi, FindInstance biasanya akan memilih cukup sewenang-wenang di antara nilai-nilai yang
melakukan ini, seperti yang dibahas untuk ketidaksetaraan dalam Bagian 3.4.8.
Khusus untuk persamaan integer, FindInstance sering dapat menemukan solusi khusus untuk persamaan bahkan
Ketika Reduce tidak dapat menemukan solusi
lengkap. Dalam kasus seperti itu biasanya mengembalikan salah satusolusi smallest ke persamaan.
In[29]:= FindInstance[{x^2 == y^3 + 12, x > 0, y > 0}, {x, y}, Integers] Out[29]= {{x → 47, y → 13}} Salah
satu fitur FindInstance adalah bahwa ia juga bekerja dengan ekspresi Boolean yang variabelnya dapat memiliki
nilai True or False. Anda dapat menggunakan FindInstance untuk menentukan apakah ekspresi tertentu dapat
dikenali,sehingga ada beberapa pilihan nilai kebenaran untuk variabelnyayang membuat ekspresi benar.
Ekspresi ini tidak dapat dipenuhi untuk pilihan p dan q. In[30]:= FindInstance[p && ! (p || ! q), {p, q}, Booleans]
Out[30]= {}
Tapi ini bisa.
In[31]:= FindInstance[p && ! (! p || ! q), {p, q}, Booleans] Out[31]= {{p → True, q → True}}
Topik Lanjutan: Representasi Set Solusi
Seseorang dapat memikirkan kombinasi persamaan atau ketidaksetaraan sebagai mendefinisikan suatu wilayah
secara implisit di beberapa jenis ruang. Fungsi dasar dari Reduce adalah untuk mengubah jenis deskripsi implisit ini
menjadi deskripsi eksplisit.
Descr iption implisitdalam hal persamaan atau ketidaksetaraan sudah cukup jika seseorang hanya ingin menguji
apakah titik yang ditentukan oleh nilai variabel ada
di wilayah tersebut. Tetapi untuk memahami struktur wilayah, atau untuk menghasilkan titik-titik di dalamnya,
satuly khasmembutuhkan deskripsi yang lebih eksplisit, dari jenis yang diperoleh dari Reduce.
Berikut adalah ketidaksetaraan yang secara implisit mendefinisikan wilayah setengah lingkaran.
In[1]:= semi = x > 0 && x^2 + y^2 < 1 Out[1]= x > 0 && x2 + y2 < 1
Ini menunjukkan bahwa titik (1/2, ½) terletak In[2]:= semi /. { x -> 1/2, y -> 1/2 }
Out[2]= True
Untuk persamaan polinomial atau ketidaksetaraan atas real, struktur hasil yang dikembalikan oleh Reduce biasanya
merupakan dekomposisi aljabar silinder atau CAD. Terkadang Reduce dapat menghasilkan bentuk yang lebih
sederhana. Tetapi dalam semua kasus Anda mendapatkan CAD lengkap dengan menggunakan
CylindricalDecomposition.
Dalam sebuah pernyataan seperti x ^ 4 + x ^ 2 > 0, Mathematica memperlakukan variabel x sebagai memiliki nilai
yang pasti, meskipun tidak ditentukan. Kadang- kadang, bagaimanapun, adalah berguna untuk dapat membuat
pernyataan tentang seluruh koleksi nilai yang mungkin untuk x. Anda dapat melakukan ini dengan menggunakan
quantifiers.
Anda dapat bekerja dengan kuantifikasi dalam Mathematica sama seperti Anda bekerja dengan persamaan,
ketidaksetaraan atau ikat logis. Dalam kebanyakan kasus, kuantifikasi tidak akan segera diubah dengan evaluasi.
Tetapi mereka dapat disederhanakan atau dikurangi dengan fungsi seperti FullSimplify dan Reduce.
Ini menegaskan bahwa x ada yang membuat ketidaksetaraan itu benar. Output di sini hanyalah versi input yang
diformat
Mathematica mendukung versi notasi standar untuk kuantifikasi yang digunakan dalam logika predikat dan
matematika murni. Anda dapat memasukkan "sebagai î[ForAll] atau Çfad,dan Anda dapat memasukkan $ sebagai
î[Exists] atau Çexd. Untuk membuat notasi tepat, bagaimanapun, Mathematica membuat variabel kuantitatif
subskrip. Kondisi pada variabel juga dapat diberikan dalam subskrip, dipisahkan oleh koma.
Mengingat pernyataan yang melibatkan kuantifikasi, ada kasus-kasus penting tertentu di mana dimungkinkan untuk
menyelesaikannya menjadi pernyataan yang setara di mana kuantifikasi telah dihilangkan. Agak seperti
memecahkan persamaan, elimination quantifier tersebut mengubah pernyataan implisit tentang apa yang benar
untuk semua x atau untuk beberapa x menjadi pernyataan eksplisit tentang kondisi di mana ini berlaku.
Ini menunjukkan bahwa x ada yang membuat persamaan itu benar. In[4]:= Resolve[Exists[x, x^2 == x^3]]
Out[4]= True
Ini menunjukkan bahwa persamaan hanya dapat dipenuhi jika c mematuhi kondisi tertentu
Ini menemukan kondisi untuk bentuk kuadrat atas real menjadi positif.
Ini menunjukkan bahwa ada cara untuk menetapkan nilai-nilai kebenaran ke p dan q yang membuat ekspresi itu
benar.
Minimalkan dan Maksimalkan daftar hasil yang memberikan nilai yang dicapai minimal atau maksimum, bersama
dengan aturan yang menentukan di mana minimum atau maksimum terjadi.
Jika Anda memberikan fungsi yang tidak terbatas, Minimalkan dan Maksimalkan akan kembali -¶ dan +¶ sebagai
minima dan maxima. Dan jika Anda memberikan kendala yang tidak pernah bisa dipenuhi, mereka akan kembali +¶
dan -¶ sebagai minima dan maxima, dan Indeterminate sebagai nilai variabel.
Salah satu masalah halus adalah bahwa Meminimalkan dan Memaksimalkan memungkinkan kedua ketidaksetaraan
non-ketat dari bentuk x < = v,dan yang ketat dari bentuk x < v. Dengan ketidaksetaraan yang tidak ketat tidak ada
masalah dengan minimum atau maksimum berbaring tepat pada batas x -> v. Tetapi dengan ketidaksetaraan yang
ketat, minimum atau maksimum pada prinsipnya harus setidaknya jauh di dalam batas.
Dengan ity inequal yang ketat, Mathematica mencetak peringatan, lalu mengembalikan titik pada batas
.Minimalkan dan Maksimalkan secara normal asumsikan bahwa semua variabel yang Anda berikan adalah nyata.
Tetapi dengan memberikan batasan seperti x "Bilangan bulat Anda dapat menentukan bahwa variabel sebenarnya
harus menjadi bilangan bulat.
Kalkulus
Diferensiasi
Anda dapat membedakan sehubungan dengan ekspresi apa pun yang tidak melibatkan operasi matematika eksplisit.
Ketika Anda menemukan turunan dari beberapa ekspresi f sehubungan dengan x, Anda secara efektif mencari tahu
seberapa cepat f berubah saat Anda bervariasi x. Seringkali f akan tergantung tidak hanya pada x, tetapi juga pada
variabel lain, katakanlah y dan z. Hasil yang Anda dapatkan kemudian tergantung pada bagaimana Anda
menganggap bahwa y dan z bervariasi saat Anda mengubah x
.Ada dua kasus umum. Baik y dan z diasumsikan tetap tetap ketika x berubah, atau mereka diizinkan untuk
bervariasi. dengan x. Dalam derivatif parsial standar δf/δx semua variabel selain x diasumsikan tetap. Di sisi lain,
secara total df/dx, semua variabel diperbolehkan untuk berubah dengan x.
Dalam Mathematica, D[f, x] memberikan turunan parsial, dengan semua variabel lain diasumsikan independen dari
x. Dt[f, x] memberikan turunan total, di mana semua variabel diasumsikan bergantung pada x. Dalam kedua kasus,
Anda dapat menambahkan argumen untuk memberikan informasi lebih lanjut tentang dependensi.
Membedakan fungsi yang tidak diketahui f memberikan hasil dalam In[2]:= D[f[x]^2, x]
Out[2]= 2 f[x] f[x]
Mathematica menerapkan aturan rantai untuk diferensiasi, dan meninggalkan hasilnya dalam hal f '
Pembedaan kembali memberikan hasil dalam hal f, f 'dan f''. In[4]:= D[%, x] Out[4]=
6 x f’[x2] + 4 x3 f’’[x2]
Topik Lanjutan: Representasi Derivatif
Derivatif dalam Matematika pada dasarnya bekerja sama seperti dalam matematika standar. Notasi matematika yang
biasa, bagaimanapun, sering menyembunyikan banyak detail. Untuk memahami bagaimana derivatif diwakili dalam
Mathematica,kita harus melihat rincian ini.
Dengan fungsi lebih dari satu argumen, notasi sederhana berdasarkan bilangan prima rusak. Anda tidak bisa
mengatakan untuk g’(0,1) stands for untuk hamper semua g, ini akan memiliki benar-benar nilai yang berbeda.
Sekali lagi, bagaimanapun, t hanyalah variabel boneka, yang satu-satunya tujuannya adalah untuk menunjukkan
sehubungan dengan g "slot" mana yang harus dibedakan.
Dalam Mathematica,seperti dalam beberapa cabang matematika, lebih mudah untuk berpikir tentang semacam
diferensiasi yang bertindak berdasarkan fungsi,bukanekspresi. Kita perlu operasi yang mengambil fungsi f, dan
memberi kita fungsi derivative f£. Operasi seperti ini yang bertindak berdasarkan fungsi,bukan variabel, dikenal
dalam matematika sebagai fungsi-als.
Objek f 'dalam Mathematica adalah hasil dari menerapkan diferensiasi fungsional untuk fungsi f. Bentuk lengkap
dari f' sebenarnya adalah Derivatif[1][f]. Derivatif[1] adalah fungsional diferensiasi Mathematica.
Argumen dalam Derivatif fungsional [n1, n2,... Menentukan berapa kali untuk membedakan sehubungan dengan
setiap "slot" dari fungsi di mana ia bertindak. Dengan menggunakan fungsional untuk mewakili diferensiasi,
Mathematica menghindari kebutuhan untuk memperkenalkan "variabel boneka" eksplisit.
Untuk mendefinisikan turunan fungsi dengan beberapa argumen, Anda harus menggunakan representasi umum
derivatif dalam Mathematica
Ini menggunakan definisi yang baru saja diberikan. In[9]:= D[g[a^2, x^2], x, x]
{0,1} 2 2
Out[9]= 4 x2 g2p[a2, x2] + 2 g [a , x ]
Fungsi Mathematica Integrate [f, x] memberi Anda integral yang tidak terbatas
∫fdx. Anda dapat menganggap operasi integrasi yang tidak terbatas sebagai kebalikan dari diferensiasi. Jika Anda
mengambil hasil dari Integrate [f, x], dankemudian membedakannya, Anda selalu mendapatkan hasil yang
merupakansekutu matematika yang sama dengan ekspresiasli f.
Secara umum, bagaimanapun, ada seluruh keluarga hasil yang memiliki properti bahwa derivatif mereka adalah f.
Integrasikan f, xmemberi Anda ekspresi yang turunannya adalah f. Anda bisa mendapatkan ekspresi laindengan
menambahkan konstanta integrasi arbi-trary, atau memang dengan menambahkan fungsi apa pun yang konstan
kecuali pada titik diskrit.
Jika Anda mengisi batas eksplisit untuk integral Anda, setiapkonstanta integrasi harus dibatalkan. Tetapi meskipun
integral yang tidak terbatas dapat memiliki konstanta sewenang-wenang yang ditambahkan, masih sering sangat
nyaman untuk memanipulasinya tanpa mengisi batas.
Mathematica menerapkan aturan standar untuk find integral yang tidak terbatas
Anda dapat menambahkan konstanta sewenang-wenang ke integral yang tidak terbatas, dan masih mendapatkan
turunan yang sama. Integrasikan hanya memberi Anda ekspresi dengan derivatif yang diperlukan.
Fungsi Integrasi mengasumsikan bahwa setiap objek yang tidak secara eksplisit mengandung variabel integrasi
adalah penyok yang tidak disarankan, dan dapat diperlakukan sebagai konstanta. Akibatnya, Integrate seperti
kebalikan dari fungsi diferensiasi parsial D.
Anda harus menyadari bahwa hasil untuk setiap integral tertentu sering dapat ditulis dalam berbagai bentuk.
Mathematica mencoba memberi Anda bentuk yang paling nyaman, mengikuti prinsip-prinsip seperti menghindari
angka kompleks eksplisit kecuali input Anda sudah contains mereka.
Mengevaluasi integral jauh lebih sulit daripada mengevaluasi derivatif. Untuk derivatif, ada prosedur sistematis
berdasarkan aturan rantai yang secara efektif memungkinkan setiap derivatif untuk dikerjakan. Tetapi untuk integral,
tidak adaprosedur sistematis such.
Salah satu masalah utama adalah sulit untuk mengetahui jenis fungsi apa yang diperlukan untuk mengevaluasi
integral tertentu. Ketika Anda mengerjakan turunan, Anda selalu berakhir dengan fungsi yang sama atau r
sederhanadaripada yang Anda mulai. Tetapi ketika Anda bekerja di luar integral, Anda sering berakhir perlu
menggunakan fungsi yang jauh lebih rumit daripada yang Anda mulai dengan.
Integral ini dapat dievaluasi dengan menggunakan jenis fungsi yang sama yang muncul
Mathematica mencakup berbagai fungsi matematika yang sangat luas, dan dengan menggunakan fungsi-fungsi ini
banyak integral dapat dilakukan. Tetapi masih mungkin untuk menemukanintegral yang cukup sederhana yang tidak
dapat dilakukan dalam hal fungsi matematika standar apapun.
Berikut adalah integral yang cukup sederhana yang tidak dapat dilakukan dalam hal fungsi matematika standar
Titik utama untuk dapat melakukan integral dalam hal fungsi matematika standar adalah memungkinkan seseorang
menggunakan sifat yang diketahui dari fungsi- fungsi ini untuk mengevaluasi atau memanipulasi hasil yang didapat
seseorang.
Dalam kasus yang paling nyaman, integral dapat dilakukan murni dalam hal fungsi dasar seperti eksponensial,
logaritma dan fungsi trigonometri. Bahkan, jika Anda memberikan integrand yang hanya melibatkan fungsi dasar
tersebut, maka salah satu kemampuan penting of Integrate adalah bahwa jika integral yang sesuai dapat dinyatakan
dalam hal fungsi dasar, maka Integrasi pada dasarnya akan selalu berhasil dalam menemukannya.
Integral dari fungsi rasional mudah untuk mengevaluasi, dan selalu keluar dalam halfungsi rasional, logaritma dan
fungsi trigonometri terbalik.
Selain bekerja dengan fungsi dasar, Integrasi mencakup sejumlah besar algoritma untuk menangani fungsi khusus.
Kadang-kadang menggunakan generalisasi langsung dari prosedur untukfungsi elementary. Tetapi lebih sering
strateginya adalah pertama mencoba menulis integrand dalam bentuk yang dapat diintegrasikan dalam hal fungsi
khusus canggih tertentu, dan kemudian melakukan ini untuk mencoba menemukan pengurangan fungsi-fungsi
canggih ini menjadi lebih familiar func-tions.
Sebuah buku besar tabel integral akan daftar mungkin beberapa ribu integral tak terbatas. Mathematica pada
dasarnya dapat melakukan semua bagian integral ini. Dan karena mengandung algoritma umum bukan hanya
kasuskasus tertentu, Mathematica benar-benar dapat melakukan berbagai integral yang jauh lebih luas.
Anda dapat berharap untuk menemukan integral ini dalam setiap buku besar tables integral
Terutama jika Anda memperkenalkan fungsi matematika baru Anda sendiri, Anda mungkin ingin mengajarkan
Mathematica jenis integral baru. Anda dapat melakukan ini dengan membuat definisi yang tepat untuk Integrasi.
Dalam kasus diferensiasi, aturan rantai memungkinkan seseorang untuk mengurangi semua derivatif ke bentuk
standar, diwakili dalam Mathematica menggunakan Derivatif. Tetapi untuk integrasi, tidak ada bentuk standar
serupa seperti itu, dan sebagai hasilnya Anda seringharus membuat definisi untuk beberapa versi yang berbeda
dari integral yang sama. Perubahan variabel dan transforma- tions lainnya jarang dapat dilakukan secara otomatis
oleh Integrate.
Integral ini tidak dapat dilakukan dalam hal salah satu fungsi matematika standar yang dibangun ke dalam
Mathematica
Sebelum Anda menambahkan aturan anda sendiri untuk integrasi, anda harus menghapus perlindungan menulis
Integral y dilakukan terlebih dahulu. Batasnya dapat bergantung pada nilai x. Pemesanan ini sama dengan yang
digunakan dalam fungsi seperti Sum dan Table.
Dalam kasus sederhana, integral yang pasti dapat dilakukan dengan menemukan bentuk yang tidak terbatas dan
kemudian menghitung batas yang sesuai. Tetapi ada berbagai macam integral yang bentuknya tidak terbatas tidak
dapat dinyatakan dalam hal fungsi matematika standar, tetapi bentuk yang pasti masih bisa.
Integral yang tidak terbatas ini tidak dapat dilakukan dalam hal fungsi matematika standar
Integral yang pasti ini, bagaimanapun, dapat dilakukan dalam halfungsi Bessel In[5]:= Integrate[Cos[Sin[x]], {x, 0,
2Pi}]
Out[5]= 2 π BesselJ[0,1]
Bahkan ketika Anda dapat menemukan bentuk integral yang tidak terbatas, Anda sering tidak akan mendapatkan
jawaban yang benar untuk integral yang pasti jika Anda hanya mengurangi nilai-nilai batas pada setiap titik akhir.
Masalahnya adalah bahwa dalam domain dalamtegra-tion mungkin ada singularitas yang efeknya diabaikan jika
Anda mengikuti prosedur ini.
Untuk integral yang pasti, bagaimanapun, n harus memenuhi suatu kondisi agar integral menjadi konvergen.
Ketika Mathematica tidak dapat memberi Anda hasil eksplisit untuk integral, ia meninggalkan integral dalam bentuk
simbolis. Hal ini sering berguna untuk memanipulasi bentuk simbolis ini.
Persamaan Diferensial
Seperti yang dibahas dalam Bagian 1.5.9, Anda dapat menggunakan fungsi Mathematica DSolve untuk menemukan
solusi simbolis untuk persamaan diferensial biasa dan parsial.
Memecahkan persamaan diferensial pada dasarnya terdiri dalam menemukan bentuk fungsi yang tidak diketahui.
Dalam Mathematica, fungsi yang tidak diketahui diwakili oleh expressions seperti y[x]. Turunan dari fungsi tersebut
diwakili oleh y'[x], y''[x] dan seterusnya.
Fungsi Mathematica DSolve kembali sebagai hasilnya daftar aturan untuk fungsi. Ada pertanyaan tentang
bagaimana fungsi-fungsi ini diwakili. Jika Anda meminta DSolve untuk menyelesaikan untuk y [x],maka DSolve
memang akan mengembalikan aturan untuk y[x]. Dalam beberapa kasus, aturan ini mungkin semua yang Anda
butuhkan. Tetapi aturan ini, dengan sendirinya, tidak memberikan nilai untuk y'[x] atau bahkan y[0]. Dalam banyak
kasus, oleh karenaitu, lebih baik meminta DSolve untuk menyelesaikan bukan untuk y [x],melainkan untuk y itu
sendiri. Dalam hal ini, apa yang akan dikembalikan DSolve adalah aturan yang memberi y sebagai fungsi murni,
dalam arti yang dibahas dalam Bagian 2.2.5.
Dalam notasi matematika standar, seseorang biasanya mewakili solusi untuk persamaan diferensial dengan secara
eksplisit memperkenalkan "variabel boneka" untuk mewakili argumen fungsi yang muncul. Jika yang Anda butuhkan
hanyalah bentuk simbolis untuk solusinya, then yang memperkenalkan variabel dummy semacam itu mungkin
nyaman. Namun, jika Anda benar-benar berniat untuk menggunakan solusi dalam berbagai perhitungan lainnya,
maka Anda biasanya akan merasa lebih baik untuk mendapatkan solusi dalam bentuk fungsi murni, tanpa variable
boneka. Perhatikan bahwa bentuk ini, meskipun mudah diwakili dalam Mathematica,tidak memiliki analog langsung
dalam notasi matematika standar.
Jika Anda meminta Mathematica untuk memecahkan satu set persamaan diferensial dan Anda tidak memberikan
kendala atau bumbu batas maka Mathematica akan mencoba menemukan solusi umum untuk persamaan Anda.
Solusi umum ini akan melibatkan berbagai onstants c yang belum ditentukan. Satu konstanta baru diperkenalkan
untuk setiap urutan derivatif dalam setiap persamaan yang Anda berikan.
Defaultnya adalah bahwa konstanta ini diberi nama C,di mana indeks n dimulai pada 1 untuk setiap permohonan
DSolve. Anda dapat mengesampingkan pilihan ini,dengan secara eksplisit memberikan pengaturan untukopsi
GeneratedParameters. Fungsi apa pun yang Anda berikan diterapkan pada setiap nilai indeks berturut-turut n untuk
mendapatkan konstanta yang digunakan untuk setiap pemanggilan DSolve.
Solusi umum untuk persamaan urutan keempat ini melibatkan empat konstanta yang belum ditentukan.
Anda harus menyadari bahwa menemukan rumus yang tepat untuk solusi untuk persamaan diferensial adalah
masalah yang sulit. Bahkan hanya ada beberapa jenis persamaan yang rumus tersebut dapat ditemukan, setidaknya
dalam hal fungsi matematika-matical standar.
Persamaan diferensial yang paling banyak diselidiki adalah yang linier, di mana fungsi yang Anda pecahkan, serta
turunannya, hanya muncul secara linear.
Ini adalah persamaan diferensial linear orde pertama yang homogen, dan solusinya cukup simple
Jika Anda hanya memiliki persamaan diferensial linier tunggal, dan hanya melibatkan turunan pertama dari fungsi
yang Anda pecahkan, maka ternyata solusinya selalu dapat ditemukan hanya dengan melakukan integral.
Tetapi begitu Anda memiliki lebih dari satu persamaan diferensial, atau lebih dari turunan first-order, ini tidak lagi
benar. Namun, beberapa persamaan diferensial linier orde kedua sederhana tetap dapat diselesaikan dengan
menggunakan berbagai fungsi khusus dari Bagian 3.2.10. Memang, secara historis banyak dari fungsi- fungsi khusus
ini pertama kali diperkenalkan secara khusus untuk mewakili solusi untuk persamaan tersebut.
Ini adalah persamaan Airy, yang diselesaikan dalam hal fungsi Airy
Di luar urutan kedua, jenis fungsi yang diperlukan untuk memecahkan persamaan diferensial linier yang cukup
sederhana menjadi sangat rumit. Pada urutan ketiga, fungsi Meijer G umum MeijerG kadang-kadang dapat
digunakan, tetapi pada urutan keempat dan di luar sama sekali tidak ada fungsi matematika standar biasanya
memadai, kecuali dalam kasus yang sangat khusus.
Berikut adalah persamaan diferensial linier urutan ketiga yang dapat diselesaikan dalam halctions menyenangkan
hipergeometrik umum
Untuk persamaan diferensial nonlinier, hanya kasus yang agak khusus yang biasanya dapat diselesaikan dalam hal
fungsi mathemati-cal standar. Namun
demikian, DSolve mencakup prosedur yang cukup umum yang memungkinkannya menangani hampir semua
persamaan diferensial nonlinier yang solusinya ditemukan dalam buku referensi standar.
Persamaan diferensial nonlinier orde pertama di mana x tidak muncul dengan sendirinya cukup mudah dipecahkan
Di luar persamaan diferensial biasa, seseorang dapat mempertimbangkan persamaan diferensial-aljabar yang
melibatkan campuran persamaan diferensial dan aljabar.
DSolve diatur untuk menangani tidak hanya persamaan diferensial biasa di mana hanya satu variabel independen
muncul, tetapi juga persamaan diferensial parsial di mana dua atau lebih bles varia independent muncul.
Ini menemukan solusi umum untuk persamaan diferensial parsial sederhana dengan dua variabel independen.
Matematika dasar persamaan diferensial parsial jauh lebih cocok daripada persamaandifferen-tial biasa. Salah satu
fitur adalah bahwa sedangkan solusi umum untuk persamaan diferensial biasa hanya melibatkan konstanta
sewenang- wenang, solusi umum untuk persamaan diferensial parsial, jika dapat ditemukan sama sekali, harus
melibatkan fungsi sewenang-wenang. Memang, dengan variabel
m independen, fungsi sewenang-wenang dari m - 1 argumen muncul. DSolve secara default menamai ion-ion funct
ini C[n].
Untuk persamaan diferensial biasa, dijamin bahwa solusi umum harus ada, dengan properti yang menambahkan
kondisi awal atau batas hanya sesuai dengan memaksa pilihan spesifik untuk konstanta sewenang-wenang dalam
larutan. Tetapi untuk persamaan diferensial partial ini tidak lagi benar. Memang, hanya untuk diferensial parsial linier
dan beberapa jenis khusus lainnya bahwa solusi umum tersebut ada.
Persamaan diferensial parsial lainnya dapat diselesaikan hanya ketika nilai awal atau batas tertentu diberikan, dan
dalam sebagian besar kasus tidak ada solusi yang dapat ditemukan sebagai rumus yang tepat dalam hal fungsi
matematika standar.
Karena y dan turunannya hanya muncul secara linear di sini, ada solusi umum.
Transformasi Laplace dari fungsi f (t) diberikan oleh TransformasiL aplace terbalik dari F(s)
diberikan for suitable
Berikut adalah transformasi Laplace yang sederhana
Transformasi Laplace memiliki properti yang mereka ubah integrasi dan diferensiasi menjadi operasi aljabar pada
dasarnya. Oleh karena itu mereka umumnya digunakan dalam mempelajari sistem yang diatur oleh persamaan
diferensial.
Integrasi menjadi perkalian dengan 1/s ketika seseorang melakukan transformasi Laplace.
Transformasi Fourier
Dalam bidang ilmiah dan teknis yang berbeda konvensi yang berbeda sering digunakan untuk mendefinisikan
transformasi Fourier. Pilihan FourierParameters dalam Mathematica memungkinkan Anda untuk memilih salah satu
konvensi yang Anda inginkan
Berikut adalah transformasi Fourier dengan pilihan parameter
Berikut adalah transformasi Fourier yang sama dengan pilihan parameter yang biasanya digunakan dalam
pemrosesan sinyal
Dalam beberapa aplikasi transformasi Fourier, lebih mudah untuk menghindari memperkenalkan eksponensial yang
kompleks. Fourier sinus dan cosine
transforms sesuai dengan integrasi masing-masing dengan sin(wt) dan cos(wt) bukan exp(iwt), dan menggunakan
batas 0 dan ∞ bukan -∞ dan ∞ .
Berikut adalah transformasi sinus dan cosine Fourier dari e-t.
Ini mengevaluasi transformasi Fourier dua dimensi
Z Transforms
Dalam banyak situasi praktis, lebih mudah untuk mempertimbangkan batasan di mana sejumlah tetap sesuatu
terkonsentrasi ke wilayah yang sangat kecil. Fungsi matematika biasa dari jenis yang biasanya ditemui dalam
kalkulus tidak dapat dengan mudah mewakili batas-batas tersebut. Namun, adalah mungkin untuk memperkenalkan
fungsi umum atau distribusi yang dapat mewakili batas-batas ini dalam integral dan jenis perhitungan lainnya
In[3]:= Integrate[Sqrt[n/Pi] Exp[-n x^2], {x, -Infinity, Infinity}, Assumptions -> n >
0]
Out[3]= 1
Batas fungsi untuk n tak terbatas secara efektif merupakan fungsi delta Dirac, yang integralnya lagi 1
Memasukkan fungsi delta dalam integral secara efektif menyebabkan integrand diambil sampelnya pada titik-titik
diskrit di mana argumen fungsi delta lenyap
Fungsi unit langkah UnitStep adalah secara efektif merupakan bagian integral tak terbatas dari fungsi delta.
Kadangkadang dikenal sebagai fungsi Heaviside,dan berbagaidilambangkan H (x), q (x), m (x), dan U (x). Tidak
perlu consid-ered sebagai fungsi umum, meskipun memiliki diskontinuitas pada x = 0. Fungsi langkah unit sering
digunakan dalam menyiapkan fungsi kontinu sekecil apa pun, dan dalam mewakili sinyal dan jumlah lain yang
menjadi non-nol hanya di luar titik sama
.Integral yang tidak terbatas dari fungsi delta adalah fungsi satuan In[9]:= Integrate[DiracDelta[x], x]
Out[9]= UnitStep[x]
Nilai integral tergantung pada apakah terletak pada interval (-2,2) In[12]:= Integrate[f[x] DiracDelta[x - a], {x, -2,
2}]
Out[12]= f[a]
DiracDelta dan UnitStep sering muncul dalam melakukan transformasi integral. Transformasi Fourier dari fungsi
konstan adalah fungsi delta
Transformasi Fourier dari cos HtL melibatkan jumlah dua fungsi delta
Fungsi delta dirac dapat digunakan di DSolve untuk menemukan respons impuls atau fungsi sistem Green yang
diwakili oleh persamaan diferensial linier dan tertentu lainnya.
Ini menemukan perilaku osilator harmonik yang mengalami impuls pada t = 0.
Terkait dengan fungsi delta Dirac multidimensi adalah dua fungsi integer: delta diskrit dan delta Kronecker. Delta
diskrit delta(n1,n2, adalah 1 jika semua ni = 0, dan nol sebaliknya. Kronecker delta n1 n2 ... Adalah 1 jika semua ni
sama, dan nol sebaliknya.
HAL 892
4
Berikut adalah ekspansi deret daya untuk exp ( x) tentang titik x = 0 untuk memesan x
Jika Mathematica tidak mengetahui perluasan deret dari fungsi tertentu, ia menulis hasilnya secara simbolis dalam bentuk
turunan.
Dalam istilah matematika, Deret dapat dilihat sebagai cara membangun deret Taylor untuk fungsi.
Rumus standar untuk ekspansi deret Taylor tentang titik x = x0 dari suatu fungsi g ( x ) dengan
∞ ∑ 𝑘 ( x0) ( 𝑥−𝑥0 )𝑘
turunan k g ( k (x) is g ( x) = 𝑘=0 . Kapan pun rumus ini
) 𝑘!
diterapkan, ia memberikan hasil yang sama dengan Seri. (Untuk fungsi umum, Seri namun secara internal menggunakan
algoritma yang agak lebih efisien.)
Deret juga dapat menghasilkan beberapa deret pangkat yang melibatkan pangkat pecahan dan pangkat negatif, yang tidak secara
langsung dicakup oleh rumus deret Taylor standar.
Tentu saja ada fungsi matematika yang tidak memiliki deret pangkat standar. Mathematica mengakui banyak kasus seperti itu.
1
Seri tetap dapat memberi Anda seri daya untuk exp (
𝑥
) tentang titik x = ∞
Terutama ketika kekuatan negatif terjadi, ada beberapa kehalusan dalam berapa banyak istilah dari rangkaian kekuatan tertentu
fungsi Seri akan menghasilkan.
Salah satu cara untuk memahami apa yang terjadi adalah dengan memikirkan analogi antara deret pangkat yang diambil pada urutan
tertentu, dan nyata angka yang diambil dengan presisi tertentu. Deret pangkat adalah "rumus perkiraan" dalam arti yang sama seperti
bilangan real presisi-hingga adalah bilangan perkiraan.
Prosedur yang diikuti Seri dalam membangun rangkaian daya sebagian besar analog dengan prosedur yang diikuti N dalam
membangun pendekatan bilangan real. Kedua fungsi secara efektif dimulai dengan mengganti bagian terkecil dari Anda ekspresi
dengan orde-hingga, atau presisi-hingga, aproksimasi, dan kemudian mengevaluasi ekspresi yang dihasilkan. Jika ada adalah,
misalnya, pembatalan, prosedur ini dapat memberikan hasil akhir yang urutan atau presisinya kurang dari urutan atau presisi yang
awalnya Anda minta. Seperti N, bagaimanapun, Seri memiliki beberapa kemampuan untuk mencoba kembali perhitungannya untuk
mendapatkan hasil untuk pesanan yang Anda minta.
Dalam kasus di mana itu tidak berhasil, Anda biasanya masih bisa mendapatkan hasil untuk pesanan tertentu dengan meminta
pesanan yang lebih tinggi dari yang Anda butuhkan.
3
Seri mengkompensasi pembatalan dalam perhitungan ini, dan berhasil memberi Anda hasil untuk memesan x .
Ketika Anda membuat ekspansi deret pangkat dalam variabel x, Mathematica mengasumsikan bahwa semua objek yang tidak secara
eksplisit mengandung x sebenarnya independen dari x. Seri dengan demikian melakukan turunan parsial (secara efektif
menggunakan D) untuk membangun Taylor seri.
Deret melakukan ekspansi deret berturut-turut terhadap setiap variabel. Hasil dalam kasus ini adalah deret dalam x, yang koefisien
adalah seri dalam y.
Dengan menggunakan objek SeriesData, bukan ekspresi biasa, untuk mewakili deret pangkat, Mathematica dapat menyimpan
melacak urutan dan titik ekspansi, dan melakukan operasi pada rangkaian daya dengan tepat. Anda seharusnya tidak biasanya perlu
mengetahui struktur internal objek SeriesData.
Anda dapat mengenali rangkaian daya yang dicetak dalam bentuk keluaran standar dengan adanya suku O[x]. Ini suku meniru notasi
matematika standar O (x), dan mewakili suku orde x yang dihilangkan. Untuk berbagai alasan konsistensi, Mathematica
n n menggunakan notasi O[x]^n untuk menghilangkan suku
orde x , sesuai dengan matematika notasi O (x) , daripada bentuk yang sedikit lebih akrab, meskipun setara, O (xn).
Setiap kali objek seperti O[x] muncul dalam jumlah suku, Mathematica sebenarnya akan mengubah seluruh jumlah menjadi seri
kekuasaan.
Kehadiran O[x] membuat Mathematica mengubah seluruh jumlah menjadi deret pangkat.
Saat Anda mengkuadratkan seri daya, Anda mendapatkan seri daya lain, juga akurat hingga urutan keempat.
4
Mengambil logaritma memberi Anda hasil 2x, tetapi hanya untuk memesan x .
Mathematica melacak urutan deret pangkat dengan cara yang sama seperti melacak presisi dari mendekati bilangan real. Seperti
halnya perhitungan numerik, ada operasi pada rangkaian daya yang dapat meningkat, atau penurunan, presisi (atau urutan) hasil
Anda.
Berikut adalah seri daya yang akurat untuk memesan x10 .
6
Ini memberikan rangkaian daya yang akurat hanya untuk orde x .
Saat Anda melakukan operasi yang melibatkan ekspresi normal dan deret pangkat, Mathematica "menyerap" ekspresi normal ke
dalam deret pangkat bila memungkinkan.
1 secara otomatis diserap ke dalam seri daya.
Jika Anda menambahkan Sin[x], Mathematica menghasilkan deret pangkat yang sesuai untuk Sin[x], dan
menggabungkannya dengan deret pangkat yang Anda memiliki.
Mathematica juga menyerap ekspresi yang mengalikan deret pangkat. Simbol a diasumsikan bebas dari x.
Mathematica tahu bagaimana menerapkan berbagai macam fungsi ke deret pangkat. Namun, jika Anda menerapkan
sewenangwenang fungsi ke deret pangkat, Mathematica tidak mungkin memberi Anda apa pun kecuali hasil simbolis.
Mathematica tidak tahu bagaimana menerapkan fungsi f ke deret pangkat, jadi hanya meninggalkan hasil simbolis
[Seri x ] n seri
5
Berikut adalah seri daya untuk exp (x) untuk memesan x .
Ini menggantikan variabel x dalam deret pangkat untuk exp (x) dengan deret pangkat untuk sin (x).
Jika Anda memiliki deret pangkat untuk fungsi f (y), maka seringkali mungkin untuk mendapatkan aproksimasi deret pangkat untuk
solusi untuk y dalam persamaan f (y) = x. Deret pangkat ini secara efektif memberikan fungsi invers f
-1
(x) sedemikian rupa sehingga f ( f-1 (x)) = x. Operasi pencarian deret pangkat untuk fungsi invers kadang-kadang dikenal
sebagai pembalikan dari seri kekuasaan. Berikut adalah seri untuk sin (y).
Seperti dibahas di atas, deret pangkat di Mathematica direpresentasikan dalam bentuk internal khusus, yang melacaknya: atribut
sebagai urutan ekspansi mereka.
Untuk beberapa tujuan, Anda mungkin ingin mengonversi deret pangkat ke ekspresi normal. Dari sudut pandang matematika, ini
sesuai dengan pemotongan deret pangkat, dan dengan asumsi bahwa semua suku orde tinggi adalah nol.
Mengkuadratkan seri daya memberi Anda seri daya lain, dengan jumlah istilah yang sesuai.
Deret Koefisien,[ seri n ] memberikan koefisien suku orde ke-n dalam deret
pangkat.
Deret Koefisien,[ seri n ] memberikan koefisien suku orde ke-n dalam deret pangkat.
Ini memberikan koefisien x7 dalam deret pangkat asli.
Ini memecahkan persamaan untuk koefisien a [i] . Anda juga dapat mengumpankan persamaan yang melibatkan deret pangkat
langsung ke penyelesaian.
Beberapa persamaan yang melibatkan deret pangkat juga dapat diselesaikan dengan menggunakan fungsi InverseSeries yang dibahas
dalam Bagian 3.6.4.
3. 6. 7 Penjumlahan Deret
Penjumalahan [ seri , { n, nmin, nmax } ] temukan jumlah seri saat n beralih dari
nmin ke nmax
x
Mathematica mengakui ini sebagai perluasan deret pangkat dari e .
Berikut adalah jumlah lain yang dapat dilakukan dalam hal fungsi khusus umum.
Ada banyak analogi antara jumlah dan integral. Dan seperti halnya mungkin untuk memiliki integral tak tentu, demikian pula jumlah
tak tentu dapat dibentuk dengan menggunakan variabel simbolik sebagai batas atas.
Jumlah ini keluar dalam hal fungsi gamma yang tidak lengkap.
Jumlah ini melibatkan fungsi poligami.
Mengambil perbedaan antara hasil untuk nilai n yang berurutan akan mengembalikan summand asli.
Mathematica pada dasarnya dapat melakukan semua jumlah yang ditemukan dalam buku tabel. Sama seperti integral tak tentu, tak
tentu jumlah ekspresi yang melibatkan fungsi sederhana cenderung memberikan jawaban yang melibatkan fungsi yang lebih rumit.
Pasti jumlah, seperti integral tertentu, sering kali muncul dalam bentuk fungsi yang lebih sederhana.
RSolve dapat dianggap sebagai analog diskrit dari DSolv. Banyak fungsi yang sama yang dihasilkan dalam
menyelesaikan persamaan diferensial juga muncul dalam menemukan solusi simbolis untuk persamaan perulangan. Ini
menghasilkan fungsi gamma, yang menggeneralisasi faktorial.
Persamaan perulangan orde kedua ini muncul dalam bentuk fungsi Bessel.
RSolve tidak mengharuskan Anda untuk menentukan nilai eksplisit untuk istilah seperti a[1]. Seperti DSolve, secara otomatis
memperkenalkan konstanta tak tentu C[i] untuk memberikan solusi umum.
Ini memberikan solusi umum dengan satu konstanta yang tidak ditentukan.
RSolve dapat menyelesaikan persamaan yang tidak bergantung hanya secara linear pada a[n]. Untuk persamaan nonlinier,
bagaimanapun, ada terkadang beberapa solusi berbeda yang harus diberikan. Sama seperti persamaan diferensial, ini adalah soal
yang sulit ditemukan solusi simbolis untuk persamaan perulangan, dan fungsi matematika standar hanya mencakup serangkaian
kasus yang terbatas.
RSolve tidak hanya dapat menyelesaikan persamaan perbedaan biasa di mana argumen dari a berbeda dengan bilangan bulat, tetapi
juga persamaan q- difference di mana argumen a dihubungkan oleh faktor perkalian.
ust sebagai seseorang dapat mengatur persamaan diferensial parsial yang melibatkan fungsi dari beberapa variabel, sehingga
seseorang juga dapat mengatur persamaan rekurensi parsial yang melibatkan barisan multidimensi.
Sama seperti dalam kasus persamaan diferensial, umum solusi untuk persamaan perulangan parsial dapat melibatkan fungsi yang
tidak ditentukan.
3. 6. 9 Menemukan Batas
Dalam melakukan berbagai macam perhitungan, Anda perlu mengevaluasi ekspresi ketika variabel mengambil nilai tertentu. Di
dalam dalam banyak kasus, Anda dapat melakukan ini hanya dengan menerapkan aturan transformasi untuk variabel menggunakan /.
Operator
Anda bisa mendapatkan nilai cos(x2) pada 0 hanya dengan secara eksplisit mengganti x dengan 0, lalu mengevaluasi hasilnya.
Perhatikan, misalnya, mencari nilai dari ekspresi sin(𝑥) ketika x = 0. Jika Anda
𝑥
cukup mengganti x dengan 0 dalam ekspresi, Anda mendapatkan hasil tak tentu
0
. Untuk menemukan nilai yang benar dari sin HxL x ketika x = 0, Anda perlu
0 mengambil
membatasi.
Limit dapat menemukan limit ini, meskipun Anda tidak dapat memperoleh deret pangkat biasa untuk x log (x) pada x = 0.
Tidak semua fungsi memiliki limit tertentu pada titik-titik tertentu. Misalnya, fungsi sin (1/ x) sering berosilasi tak terhingga dekat x
= 0, sehingga tidak memiliki batas yang pasti di sana. Namun demikian, setidaknya selama x tetap nyata, nilai-nilai fungsi dekat x =
0 selalu terletak antara -1 dan 1. Batas mewakili nilai dengan variasi terbatas menggunakan objek Interval.
Secara umum, Interval[{xmin, xmax}] mewakili nilai yang tidak pasti yang terletak di suatu tempat dalam interval x min ke x maks.
Limit mengembalikan objek Interval, yang mewakili kisaran nilai yang mungkin dari sin (1 /x) di dekat singularitas esensialnya pada
x = 0.
Mathematica mewakili batas ini secara simbolis dalam bentuk objek Interval.
Beberapa fungsi mungkin memiliki batas yang berbeda pada titik tertentu, tergantung pada arah dari mana Anda mendekati titik-titik
itu. Anda dapat menggunakan opsi Arah untuk Batas untuk menentukan arah yang Anda inginkan.
Fungsi 1/ x memiliki nilai pembatas yang berbeda pada x = 0, tergantung apakah Anda mendekati dari atas atau bawah.
In[11]:= Plot[1/x, {x, -1, 1}]
Mendekati dari bawah memberikan nilai pembatas -∞
Limit tidak membuat asumsi tentang fungsi seperti f[x] yang tidak memiliki pengetahuan pasti. Hasil dari, Batas tetap tidak
dievaluasi dalam banyak kasus yang melibatkan fungsi simbolis.
Limit tidak memiliki pengetahuan pasti tentang f, sehingga limit ini tidak dievaluasi.
3. 6. 10 Residu
Limit [expr, x - > x0] memberi tahu Anda berapa nilai expr ketika x cenderung ke x0 . Ketika nilai ini tak terhingga, seringkali
berguna sebagai gantinya untuk mengetahui sisa expr ketika x sama dengan x0 . Residu diberikan oleh koefisien( x - x0)-1 di ekspansi
deret daya dari expr tentang titik x0 .
Residu [ expr , { x, x0 }]residu expr ketika x sama dengan x0
3. 7 Aljabar linier
3. 7. 1 Membangun Matriks
Normal [himpunan jarang [ { { buat matriks dengan nilai bukan nol vk pada
ij} posisi { ik , jk}
v1, { i2, j2 −>v2 , …} , {m,
n} ] ]
Ini menghasilkan matriks 2x2 yang entri ke-i, ke-jnya adalah a[i, j].
Diagonal Matrix membuat matriks dengan nol di mana-mana kecuali pada diagonal utama.
Ini membuat matriks 3x4 dengan dua nilai bukan nol terisi
Matrix Form mencetak matriks dalam bentuk dua dimensi
Tabel mengevaluasi Random[ ] secara terpisah untuk setiap elemen, untuk memberikan nomor pseudorandom yang berbeda dalam
setiap kasus
Matriks di Mathematica direpresentasikan sebagai daftar daftar. Anda dapat menggunakan semua manipulasi daftar
Mathematica standar operasi pada matriks. Berikut adalah contoh matriks 3 x 3.
m = { { a11, a12 ,
Ini memilih submatriks. …
} , { a21 , a22 , …} , …} m [ [ I,
j]]=vm[[I]]=v
m [ [ I ] ] = { v1, v2, … }
…}
m [ [ All , j ] ] = v tetapkan m sebagai
m [ [ All , j ] ] = { v1, v2 matriks reset elemen { i, j }
menjadi v
reset semua elemen di baris i menjadi v
reset elemen pada baris i menjadi { v1, v2,
Mathematica mewakili matriks dan vektor menggunakan daftar. Apa pun yang bukan merupakan daftar yang dianggap Mathematica
sebagai skalar.
Sebuah vektor di Mathematica terdiri dari daftar skalar. Matriks terdiri dari daftar vektor, yang mewakili masing-masing baris.
Untuk menjadi matriks yang valid, semua baris harus memiliki panjang yang sama, sehingga elemen-elemen matriks efektif
membentuk barisan persegi panjang.
Apa pun yang bukan daftar secara nyata diperlakukan sebagai skalar, jadi menerapkan VectorQ memberikan False.
Untuk vektor, Dimensi memberikan daftar dengan elemen tunggal yang sama dengan hasil dari Panjang.
Objek ini tidak dihitung sebagai matriks karena panjang barisnya berbeda.
Sebagian besar fungsi matematika di Mathematica diatur untuk menerapkan diri mereka sendiri secara terpisah ke setiap elemen
dalam daftar. Ini adalah benar khususnya dari semua fungsi yang membawa atribut Listable.
Konsekuensinya adalah bahwa sebagian besar fungsi matematika diterapkan elemen demi elemen ke matriks dan vektor.
Log berlaku sendiri secara terpisah untuk setiap elemen dalam vektor.
Hal yang sama berlaku untuk matriks, atau, dalam hal ini, untuk daftar bersarang apa pun.
Fungsi diferensiasi D juga berlaku secara terpisah untuk setiap elemen dalam daftar.
Jika Anda mencoba menambahkan dua vektor dengan panjang yang berbeda, Anda mendapatkan kesalahan.
Objek apa pun yang bukan daftar secara nyata diperlakukan sebagai skalar. Di sini c diperlakukan sebagai skalar, dan ditambahkan
secara terpisah ke setiap elemen dalam vektor.
Penting untuk disadari bahwa Mathematica memperlakukan sebuah objek sebagai vektor dalam operasi tertentu hanya jika objeknya
adalah secara eksplisit daftar pada saat operasi dilakukan. Jika objek tidak secara eksplisit daftar, Mathematica selalu
memperlakukannya sebagai skalar. Ini berarti Anda bisa mendapatkan hasil yang berbeda, tergantung pada apakah Anda menetapkan
objek tertentu sebagai daftar sebelum atau sesudah Anda melakukan operasi tertentu.
Objek p diperlakukan sebagai skalar, dan ditambahkan secara terpisah ke setiap elemen dalam vektor.
Inilah yang terjadi jika Anda sekarang mengganti p dengan daftar {c, d}.
Anda akan mendapatkan hasil yang berbeda jika Anda mengganti p dengan {c, d} sebelum Anda melakukan operasi pertama
Anda juga dapat menggunakan titik untuk mengalikan matriks dengan vektor.
Titik juga merupakan notasi untuk perkalian matriks dalam Mathematica.
Penting untuk disadari bahwa Anda dapat menggunakan “titik” untuk perkalian vektor kiri dan kanan dengan matriks.
Mathematica tidak membedakan antara vektor "baris" dan "kolom". Dot melakukan operasi apa pun yang mungkin. (Di dalam
istilah formal, a.b mengontrak indeks terakhir dari tensor a dengan indeks pertama b.) Berikut adalah definisi untuk matriks m dan
vektor v.
Kiri ini mengalikan vektor v dengan m. Objek v secara efektif diperlakukan sebagai vektor kolom dalam kasus ini.
Anda juga dapat menggunakan titik untuk mengalikan kanan v dengan m. Sekarang v secara efektif diperlakukan sebagai vektor
baris.
Untuk beberapa tujuan, Anda mungkin perlu merepresentasikan vektor dan matriks secara simbolis, tanpa secara
eksplisit memberikan elemen. Anda dapat menggunakan titik untuk mewakili perkalian dari objek simbolis tersebut.
secara efektif bertindak di sini sebagai bentuk perkalian non-komutatif.
Ini, bagaimanapun, asosiatif.
Anda dapat menerapkan hukum distributif dalam kasus ini menggunakan fungsi Distribusikan, seperti yang dibahas dalam Bagian
2.2.10
Operator "titik" memberikan "produk dalam" dari vektor, matriks, dan sebagainya. Dalam perhitungan yang lebih maju, Anda dapat
juga perlu membangun produk luar atau Kronecker dari vektor dan matriks. Anda dapat menggunakan fungsi umum Luar untuk
melakukan hal ini.
Hasil kali luar dua buah vektor adalah matriks.
Hasil kali luar matriks dan vektor adalah tensor pangkat tiga.
3. 7. 6 Inversi Matriks
Ini memberikan kebalikan dari m. Dalam menghasilkan rumus ini, Mathematica secara implisit mengasumsikan bahwa determinan a
d - b c bukan nol.
Anda harus menggunakan Together untuk menghapus penyebut, dan mendapatkan kembali matriks identitas standar.
Jika Anda memberikan matriks dengan entri simbolis atau numerik yang tepat, Mathematica memberikan kebalikan yang tepat. Jika,
di sisi lain tangan, beberapa entri dalam matriks Anda adalah perkiraan bilangan real, maka Mathematica menemukan hasil numerik
perkiraan.
Berikut adalah matriks yang berisi perkiraan bilangan real.
Mengalikan dengan matriks asli memberi Anda matriks identitas dengan kesalahan numerik kecil.
Ketika Anda mencoba untuk membalikkan matriks dengan entri numerik yang tepat, Mathematica selalu dapat mengetahui apakah
matriks tersebut tunggal. Ketika Anda membalikkan matriks numerik perkiraan, Mathematica biasanya tidak dapat menentukan
dengan pasti apakah atau bukan matriksnya tunggal: yang dapat diketahui adalah misalnya bahwa determinannya kecil dibandingkan
dengan entri-entri dari matriks. Ketika Mathematica mencurigai bahwa Anda mencoba untuk membalikkan matriks numerik tunggal,
ia mencetak peringatan.
Mathematica mencetak peringatan jika Anda membalikkan matriks numerik yang diduga tunggal.
Jika Anda bekerja dengan angka perkiraan presisi tinggi, Mathematica akan melacak presisi invers matriks yang Anda
hasilkan
Ini mengambil matriks, mengalikannya dengan kebalikannya, dan menunjukkan baris pertama dari hasilnya.
Ini menghasilkan aproksimasi numerik 50 digit ke matriks Hilbert 6 x 6. Matriks Hilbert sangat sulit untuk dibalik secara numerik.
Hasilnya masih benar, tetapi angka nol sekarang memiliki akurasi yang lebih rendah.
Invers hanya bekerja pada matriks persegi. Bagian 3.7.10 membahas fungsi PseudoInverse, yang juga dapat menjadi
digunakan dengan matriks non-persegi.
Det [m] memberikan determinan matriks persegi m. Minors [m] adalah matriks yang elemennya ( i, j) th memberikan determinan i+
j submatriks yang diperoleh dengan menghapus baris ( n - i + 1 ) dan kolom ( n - j + 1) dari m. ( i, j) th kofaktor m adalah (-1)
kali elemen (n - i + 1, n - j + 1) dari matriks minor.
Minor[m, k] memberikan determinan dari submatriks k k yang diperoleh dengan memilih setiap himpunan yang mungkin dari k
baris dan k kolom dari m. Perhatikan bahwa Anda dapat menerapkan Minor ke matriks persegi panjang, serta persegi. Berikut
adalah determinan matriks 2 x 2 sederhana.
Ini menghasilkan matriks 3 x 3, yang entri ke-i, ke-j nya adalah a [i, j].
Jejak atau taji suatu matriks Tr[m] adalah jumlah suku-suku pada diagonal terdepan. Ini menemukan jejak matriks 2 x 2 sederhana.
Matrixpo n th matrix power
wer matrix exponential
Banyak perhitungan melibatkan pemecahan sistem persamaan linier. Dalam banyak kasus, Anda akan merasa nyaman untuk menulis
turunkan persamaan secara eksplisit, dan kemudian selesaikan menggunakan Solve.
Namun, dalam beberapa kasus, Anda mungkin lebih suka mengubah sistem persamaan linier menjadi persamaan matriks, dan
kemudian menerapkan operasi manipulasi matriks untuk menyelesaikannya. Pendekatan ini sering berguna ketika sistem persamaan
muncul sebagai: bagian dari algoritma umum, dan Anda tidak tahu sebelumnya berapa banyak variabel yang akan terlibat.
Suatu sistem persamaan linier dapat dinyatakan dalam bentuk matriks sebagai m.x = b, di mana x adalah vektor variabel.
Perhatikan bahwa jika sistem persamaan Anda lebih jarang, sehingga sebagian besar entri dalam matriks m adalah nol, maka yang
terbaik adalah mewakili matriks sebagai objek SparseArray. Seperti yang dibahas di Bagian 3.7.12, Anda dapat mengonversi dari
simbolik persamaan ke objek SparseArray menggunakan CoefficientArrays. Semua fungsi yang dijelaskan di bagian ini berfungsi
pada objek SparseArray serta matriks biasa.
LinearSolv yang linear kombinasi memenuhi persamaan
e [ m, b ] matriks m . x = MatrixRa nk [ m ]
Ruangkoson RowRedu
vektor x yang
menyelesaikan
persamaan
matriks jumlah baris bebas linier dari m
m . x = b daftar bentuk sederhana dari m
vektor basis diperoleh dengan membuat kombinasi linier
Anda dapat menggunakan Solve secara langsung untuk menyelesaikan persamaan ini.
Anda juga bisa mendapatkan vektor solusi dengan memanggil LinearSolve. Hasilnya setara dengan yang Anda dapatkan dari Solve.
Cara lain untuk menyelesaikan persamaan adalah dengan membalikkan matriks m, lalu mengalikan {a, b} dengan inversnya. Ini
tidak seefisien menggunakan LinearSolve.
RowReduce melakukan versi eliminasi Gaussian dan juga dapat digunakan untuk menyelesaikan persamaan.
Jika Anda memiliki matriks persegi m dengan determinan bukan nol, maka Anda selalu dapat menemukan solusi unik untuk matriks
tersebut persamaan m.x = b untuk sembarang b.
Namun, jika matriks m memiliki determinan nol, maka mungkin tidak ada vektor, atau an jumlah tak terbatas vektor x yang
memenuhi m.x = b untuk b tertentu. Ini terjadi ketika persamaan linier diwujudkan dalam m tidak independen.
Ketika m memiliki determinan nol, selalu mungkin untuk menemukan vektor tak nol x yang memenuhi m.x = 0. Himpunan dari
vektor x yang memenuhi persamaan ini membentuk ruang nol atau inti dari matriks m. Salah satu dari vektor ini dapat menjadi
dinyatakan sebagai kombinasi linier dari himpunan vektor basis tertentu, yang dapat diperoleh dengan menggunakan NullSpace[m].
Berikut adalah matriks sederhana, sesuai dengan dua persamaan linier identik.
LinearSolve tidak dapat menemukan solusi untuk persamaan m.x = b dalam kasus ini.
Mengalikan vektor basis untuk ruang nol dengan m menghasilkan vektor nol.
Ini meminta solusi untuk himpunan persamaan yang tidak konsisten x = 1 dan x = 0.
LinearSolve memberikan salah satu solusi yang mungkin untuk himpunan persamaan yang tidak ditentukan ini.
Ketika sebuah matriks mewakili sistem persamaan yang tidak ditentukan, matriks tersebut memiliki ruang nol non-trivial. Dalam hal
ini, null ruang direntang oleh satu vektor.
Jika Anda mengambil solusi yang Anda dapatkan dari LinearSolve, dan menambahkan kombinasi linear dari vektor basis untuk
ruang nol, Anda masih mendapatkan solusi.
Jumlah persamaan independen adalah pangkat matriks MatrixRank[m]. Jumlah persamaan redundan adalah Panjang[NullSpace[m]].
Perhatikan bahwa jumlah kuantitas ini selalu sama dengan jumlah kolom di m.
=b
Dalam beberapa aplikasi, Anda akan ingin menyelesaikan persamaan bentuk m.x = b berkali- kali dengan m yang sama, tetapi
berbeda B. Anda dapat melakukan ini secara efisien di Mathematica dengan menggunakan LinearSolve[m] untuk membuat satu
LinearSolveFuncg bahwa Anda dapat menerapkan sebanyak mungkin vektor yang Anda inginkan.
Anda mendapatkan hasil yang sama dengan memberikan vektor sebagai argumen eksplisit ke LinearSolve.
Tetapi Anda dapat menerapkan f ke vektor apa pun yang Anda inginkan.
3. 7 .9 Nilai Eigen dan Vektor Eigen
Nilai eigen dari matriks m adalah nilai x1 yang dapat dicari vektor bukan-nol v1 sedemikian rupa sehingga m.yi = x1 v1 .
eigenvectors adalah vektor v1 .
Karakteristik polinomial Karakteristik Polinomial [m, x] untuk matriks n x n diberikan oleh Det[m – x IdentityMatrix[n]]. Nilai
eigen adalah akar dari polinomial ini.
Menemukan nilai eigen dari matriks n x n secara umum melibatkan penyelesaian persamaan polinomial derajat ke-n. Untuk n 5, oleh
karena itu, hasilnya secara umum tidak dapat dinyatakan secara murni dalam istilah radikal eksplisit. Objek root tetap bisa selalu
digunakan, meskipun kecuali untuk matriks yang cukup jarang atau sederhana, ekspresi yang diperoleh sering kompleks yang tidak
terkendali.
Bahkan untuk matriks sesederhana ini, bentuk eksplisit dari nilai eigen cukup rumit.
Jika Anda memberikan matriks perkiraan bilangan real, Mathematica akan menemukan
perkiraan nilai eigen numerik dan vektor eigen.
Eigensystem menghitung nilai eigen dan vektor eigen secara bersamaan. Penugasan menetapkan vals ke daftar nilai eigen, dan vec
ke daftar vektor eigen.
Ini memverifikasi bahwa nilai eigen dan vektor eigen pertama memenuhi kondisi yang sesuai.
Ini menemukan nilai eigen dari matriks 4 x 4 acak. Untuk matriks non-simetris, nilai eigen dapat memiliki bagian imajiner.
Fungsi Nilai Eigen selalu memberi Anda daftar n nilai eigen untuk matriks n x n. Nilai eigennya sesuai ke akar polinomial
karakteristik untuk matriks, dan mungkin tidak harus berbeda. Vektor eigen, pada sisi lain, memberikan daftar vektor eigen yang
dijamin independen. Jika jumlah vektor eigen tersebut kurang dari n, maka vektor Eigen menambahkan nol vektor ke daftar yang
dikembalikannya, sehingga panjang total daftar adalah selalu n.
Namun, hanya ada satu vektor eigen independen untuk matriks. Vektor eigen menambahkan dua vektor nol untuk memberikan total
tiga vektor dalam hal ini.
Eigenvalues [ m, nilai eigen k terbesar dari m
vektor eigen yang sesuai dari m
k ] Eigenvectors [m, k ]
nilai eigen k terkecil dari m
Eigenvalues [ m, − k ]
Nilai eigen mengurutkan nilai eigen numerik sehingga nilai absolut yang besar didahulukan. Dalam banyak situasi, Anda mungkin
hanya tertarik pada nilai eigen terbesar atau terkecil dari suatu matriks. Anda bisa mendapatkannya secara efisien menggunakan
Nilai Eigen[m, k] dan Nilai Eigen[m, -k].
Ini menghitung nilai eigen yang tepat dari matriks bilangan bulat.
Nilai eigen umum untuk matriks m terhadap matriks a didefinisikan sebagai xi yang
m.vi = xi a.vi .
Nilai eigen umum sesuai dengan nol dari karakteristik umum polinomial Det[m - x a]
Perhatikan bahwa sementara nilai eigen matriks biasa selalu memiliki nilai yang pasti, beberapa nilai eigen yang digeneralisasi akan
selalu Tak tentu jika polinomial karakteristik umum menghilang, yang terjadi jika m dan a berbagi ruang nol. Perhatikan juga bahwa
nilai eigen yang digeneralisasikan dapat menjadi tak terhingga.
Kedua matriks ini berbagi ruang nol satu dimensi, jadi satu nilai eigen yang digeneralisasikana dalah Tak tentu.
Nilai singular matriks m adalah akar kuadrat dari nilai eigen m.m* , di mana * menunjukkan transpos Hermitian. Jumlah nilai
singular tersebut adalah dimensi yang lebih kecil dari matriks. SingularValueList mengurutkan nilai tunggal dari terbesar ke terkecil.
Nilai singular yang sangat kecil biasanya tidak berarti secara numerik. Dengan pengaturan opsi Toleransi -> t, SingularValueList
menjatuhkan nilai tunggal yang kurang dari pecahan t dari nilai tunggal terbesar. Untuk matriks numerik perkiraan, toleransi secara
default sedikit lebih besar dari nol.
Jika Anda mengalikan vektor untuk setiap titik dalam bola satuan dalam ruang n-dimensi dengan matriks män m, maka Anda
mendapatkan ellipsoid m-dimensi, yang sumbu utamanya memiliki panjang yang diberikan oleh nilai tunggal m.
Norma 2 dari suatu matriks Norma[m, 2] adalah sumbu utama terbesar dari ellipsoid, sama dengan nilai singular terbesar dari
matriks. Ini juga merupakan panjang maksimum 2-norma m.v untuk setiap vektor satuan yang mungkin v.
Norma-p suatu matriks Norma[m, p] secara umum adalah panjang norma-p maksimum m.v yang dapat dicapai. Kasus-kasus paling
sering dipertimbangkan adalah p = 1, p = 2 dan p = . Juga kadang-kadang dipertimbangkan adalah norma Frobenius, yang
kuadratnya adalah jejak m.m* .
Definisi standar untuk invers matriks gagal jika matriks tidak persegi atau tunggal. Kebalikan semu m(-1) dari matriks m masih
dapat didefinisikan. Ini diatur untuk meminimalkan jumlah kuadrat dari semua entri di m.m-1 , di mana I adalah matriks identitas.
Pseudoinverse
kadang-kadang dikenal sebagai invers umum, atau Kebalikan Moore-Penrose. Hal ini terutama digunakan dalam melakukan masalah
yang berkaitan dengan pemasangan kuadrat terkecil
Dekomposisi nilai singular, atau SVD, adalah elemen dasar dalam banyak algoritma matriks numerik. Ide dasarnya adalah menulis
sembarang matriks m dalam bentuk usv* , di mana s adalah matriks dengan nilai singular m pada diagonalnya, u dan v adalah
matriks ortonormal, dan v* adalah transpos Hermitian dari v.
Tensor adalah objek matematika yang memberikan generalisasi vektor dan matriks. Di Mathematica, tensor direpresentasikan
sebagai sekumpulan daftar, bersarang ke sejumlah level tertentu. Level bersarang adalah peringkat tensor.
Tensor peringkat k pada dasarnya adalah tabel nilai k-dimensi. Untuk menjadi tensor peringkat k sejati, itu harus mungkin untuk
menyusun elemen-elemen dalam tabel dalam array berbentuk kubus k-dimensi. Tidak boleh ada lubang atau tonjolan pada kubus.
Indeks yang menentukan elemen tertentu dalam tensor sesuai dengan koordinat dalam balok.
Dimensi tensor sesuai dengan panjang sisi balok.
Salah satu cara sederhana agar tensor rank k dapat muncul adalah dengan memberikan tabel nilai fungsi dari k variabel.
Dalam fisika, tensor yang terjadi biasanya memiliki indeks yang berjalan di atas kemungkinan arah dalam ruang atau
ruangwaktu.
Perhatikan, bagaimanapun, bahwa tidak ada gagasan bawaan tentang indeks tensor kovarian dan kontravarian di Mathematica: Anda
harus mengaturnya secara eksplisit menggunakan tensor metrik.
Table [ f , { i1 , n1 } , buat n1x n2 ...x nk
{i2 , n2 } , … , { ik , nk } ] tensor yang elemen-elemennya adalah nilai f Array [
a, { n1 , n2 , …, nk}] buat n1 n2 ... x nk tensor dengan elemen yang
diberikan dengan menerapkan a
ke
setiap set indeks
MatrixForm menampilkan elemen tensor dalam array dua dimensi. Anda dapat menganggap array sebagai matriks 2 x 3 dari vektor
kolom.
Peringkat tensor sama dengan jumlah indeks yang diperlukan untuk menentukan setiap elemen. Anda dapat memilih
subtensor dengan menggunakan jumlah indeks yang lebih kecil.
Berikut adalah matriks yang juga dapat Anda anggap sebagai tensor 2 x 3.
Menerapkan Transpose memberi Anda tensor 3 x 2. Transpose secara efektif menukar dua "slot" untuk indeks tensor.
Elemen m[[2, 3]] di tensor asli menjadi elemen m[[3, 2]] di tensor yang ditransposisikan.
Jika Anda memiliki tensor yang berisi daftar dengan panjang yang sama pada level yang berbeda, maka Anda dapat menggunakan
Transpose untuk menciutkan level yang berbeda secara efektif.
Ini meruntuhkan ketiga level, memberikan daftar elemen pada "diagonal utama"
Ini memberikan "f luar" dari dua vektor. Hasilnya adalah matriks.
Jika Anda mengambil "f luar" dari vektor panjang 3 dengan vektor panjang 2, Anda mendapatkan matriks 3 x 2.
Hasil pengambilan “f terluar” dari matriks 2x2 dan vektor dengan panjang 3 adalah tensor 2x2x 3.
Ini memberikan generalisasi dari produk skalar standar dari dua vektor.
Dalam banyak aplikasi tensor, Anda perlu menyisipkan tanda untuk menerapkan antisimetri. Fungsi Tanda Tangan[i1 , i2, … ], yang
memberikan tanda permutasi, seringkali berguna untuk tujuan ini.
Outer [ f , t1, t2, … ] membentuk produk luar umum dengan
menggabungkan elemen tingkat terendah dari t1 , t2 , …
Luar [ f , t1, t2, perlakukan hanya sublist pada level n sebagai
… , n ] terpisah elemen
Tapi di sini hanya sublist di level 1 yang diperlakukan sebagai elemen terpisah.
3. 7 . 12 Array Jarang
Banyak aplikasi aljabar linier skala besar melibatkan matriks yang memiliki banyak elemen, tetapi secara komparatif sedikit tidak
nol. Anda dapat merepresentasikan matriks jarang seperti itu secara efisien di Mathematica menggunakan objek SparseArray,
sebagai dibahas dalam Bagian 2.4.5. Objek SparseArray bekerja dengan memiliki daftar aturan yang menentukan di mana nilai
bukan nol muncul.
SparseArray [ daftar ] versi SparseArray dari daftar biasa
SparseArray [{ { i1, j1 } −> sebuah m x n sparse array dengan elemen { ik , jk }
v1,
{ i2, j2} −> v2, … } , { m, n array jarang
yang sama
}]
Seperti yang dibahas di Bagian 2.4.5, Anda dapat menggunakan pola untuk menentukan kumpulan elemen dalam larik jarang.
Anda juga bisa memiliki array jarang yang sesuai dengan tensor peringkat apa pun. Ini membuat matriks numerik renggang 50 x
50, dengan 148 elemen bukan nol.
Anda dapat menerapkan sebagian besar operasi struktural standar langsung ke objek SparseArray, seperti yang Anda lakukan pada
biasa daftar. Ketika hasilnya jarang, mereka biasanya mengembalikan objek SparseArray.
Dimensio dimensi array
ns [ m ] aturan untuk elemen bukan nol
ArrayRule dalam array
s[m] elem
m[[
en i , j baris
i, j ] ]
Ini memberikan kolom pertama m. Ini hanya memiliki 2 elemen bukan nol.
Ini memberikan aturan untuk elemen bukan nol pada baris kedua.
Diberikan daftar dengan n elemen xI ,Rata rata Mean [list] didefinisikan sebagai 𝜇 ( 𝑥 ) =
𝑥 = ∑ 𝑥𝑖/𝑛
Jika elemen-elemen dalam daftar dianggap dipilih secara acak menurut beberapa distribusi probabilitas, maka
mean memberikan perkiraan di mana pusat distribusi berada, sedangkan standar deviasi memberikan perkiraan
seberapa luas dispersi dalam distribusi.
Median Median[list] secara efektif memberikan nilai pada titik tengah dalam daftar yang diurutkan Sort[list]. Ini sering dianggap
sebagai ukuran yang lebih kuat dari pusat distribusi daripada rata-rata, karena kurang bergantung pada outlying nilai-nilai.
Kuantil qth Quantile[list, q] secara efektif memberikan nilai yaitu q dari jalan melalui daftar yang diurutkan Urutkan[daftar].
Untuk daftar dengan panjang n, Mathematica mendefinisikan Quantile[list, q] menjadi Sort [list] [[Ceiling [n q]]].
Namun, ada sekitar sepuluh definisi kuantil lain yang digunakan, semuanya berpotensi memberikan hasil yang sedikit berbeda.
Mathematica mencakup kasus-kasus umum dengan memperkenalkan empat parameter kuantil dalam bentuk Quantile[daftar, q, { {a,
b}, {c, d}
}]. Parameter a dan b yang berlaku menentukan di mana dalam daftar harus dianggap sebagai pecahan q jalan melalui. Jika ini sesuai
dengan posisi bilangan bulat, maka elemen pada posisi itu diambil sebagai kuantil ke-q. Jika bukan posisi bilangan bulat, maka
kombinasi linier elemen di kedua sisi digunakan, seperti yang ditentukan oleh c dan d .
Posisi dalam daftar terurut s untuk kuantil ke-q diambil sebagai k = a + (n + b) q. Jika k bilangan bulat, maka kuantilnya adalah s [ [
k ] ]. Jika tidak, itu adalah s [ [ Floor [k] ] ] + (s [ [Ceiling [ k] ] ] – s [ [ Floor [ k ] ] ] ) (c + d Fractionalg Bagian [ k ] ), dengan
indeks yang diambil menjadi 1 atau n jika berada di luar jangkauan.
{ { 0, 0}, {1, 0} } CDF empiris terbalik (default)
{ { 0, 0}, { 0, 1} } interpolasi linier (metode California)
{ { ½ , 0 } , { 0, 0} } elemen bernomor paling dekat dengan q n
{ { 1/2 , 0 } , { 0, 1} } interpolasi linier (metode hidrologi)
{ { 0, 1} , { 0, 1} } estimasi berbasis rata-rata (metode Weibull)
{ { 1, -1 } , { 0, 1} } perkiraan berbasis mode
{ { 1/3 , 1/3 } , { 0, 1 } } estimasi berbasis median
{ { 3/8 , ¼} , { 0, 1 } perkiraan distribusi normal
Kapan pun d = 0, nilai kuantil ke-q selalu sama dengan beberapa elemen aktual dalam daftar, sehingga hasilnya berubah
terputusputus karena q bervariasi. Untuk d = 1, kuantil ke-q menginterpolasi secara linier antara elemen-elemen yang berurutan
dalam daftar.
Median didefinisikan untuk menggunakan interpolasi seperti itu.
Perhatikan bahwa Kuantil [daftar, q] menghasilkan kuartil ketika q = m 4 dan persentil ketika q = m 100.
Ini secara terpisah menemukan rata-rata dari setiap "kolom" data.
Perhatikan bahwa Anda dapat mengekstrak elemen di i th "kolom" dari daftar multidimensi menggunakan list[[All, i]].
Paket standar yang didistribusikan dengan Mathematica mencakup beberapa untuk melakukan statistik yang lebih canggih analisis,
sebagaimana disebutkan dalam Bagian 1.6.7.
3. 8. 2 Pemasangan Kurva
Ada banyak situasi di mana seseorang ingin menemukan formula yang paling sesuai dengan kumpulan data tertentu. Salah satu cara
untuk melakukannya di Mathematica adalah menggunakan Fit.
Fit [ { f1, f2, …} , fi { temukan kombinasi linear dari funi yang paling sesuai dengan nilainya
fun1, fun2, … } , x ]
temukan kombinasi linear dari funi yang paling sesuai dengan nilai
Ini memberikan kecocokan linier ke daftar bilangan prima. Hasilnya adalah kombinasi linear terbaik dari fungsi 1 dan x.
Berikut adalah kecocokan yang ditumpangkan pada data asli.
Ini menunjukkan kecocokan yang ditumpangkan pada data asli. Kecocokan kuadrat lebih baik daripada kecocokan linier.
{ f1, titik data yang diperoleh ketika satu koordinat mengambil
2,… nilai 1 ,
{ { x1 , f1 }, {x2, f2 } , … } titik data yang diperoleh ketika satu koordinat
mengambil nilai
x1, x2, …
Jika Anda memberikan data dalam bentuk { f 1, f 2, … } maka Fit akan menganggap bahwa berturut-turut f i sesuai dengan nilai a
fungsi pada titik bilangan bulat berturut-turut 1, 2, … . Tetapi Anda juga dapat memberikan data Fit yang sesuai dengan nilai a
berfungsi pada titik sembarang, dalam satu atau lebih dimensi.
Ini memberikan tabel nilai x, y dan 1 + 5 x - x y. Anda perlu menggunakan Flatten untuk mendapatkannya dalam bentuk yang tepat
untuk Fit.
Ini cocok dengan daftar bilangan prima dengan kombinasi linear sederhana dari istilah.
Ini cocok dengan bentuk nonlinier, yang tidak dapat ditangani oleh Fit
Secara default, Fit dan FindFit menghasilkan kecocokan kuadrat terkecil, yang didefinisikan untuk meminimalkan kuantitas x 2 =∑ 𝑖
I1 ri I2 , di mana ri adalah residual yang memberikan perbedaan antara setiap titik data asli dan nilai pasnya. Seseorang dapat,
bagaimanapun, juga mempertimbangkan kecocokan berdasarkan norma-norma lain. Jika Anda mengatur opsi NormFunction -> u,
maka Findg Fit akan mencoba menemukan kecocokan yang meminimalkan kuantitas u[r], di mana r adalah daftar residu. Standarnya
adalah Norm Fungsi
-> Norma, sesuai dengan kecocokan kuadrat terkecil.
Ini menggunakan ∞-norma, yang meminimalkan jarak maksimum antara fit dan data. Hasilnya sedikit berbeda dari kuadrat terkecil.
FindFit bekerja dengan mencari nilai parameter yang menghasilkan paling cocok. Terkadang Anda mungkin harus memberi tahu di
mana untuk mulai melakukan pencarian ini. Anda dapat melakukannya dengan memberikan parameter dalam bentuk { {a, a 0 } { b,
b0 } , … }. Temukan juga memiliki berbagai opsi yang dapat Anda atur untuk mengontrol cara pencariannya.
3. 8. 3 Perkiraan Fungsi dan Interpolasi
Dalam banyak jenis perhitungan numerik, akan lebih mudah untuk memperkenalkan fungsi perkiraan. Perkiraan fungsi dapat
dianggap sebagai generalisasi dari perkiraan bilangan real biasa. Sementara perkiraan bilangan real memberikan nilai presisi tertentu
dari kuantitas numerik tunggal, fungsi perkiraan memberikan nilai tertentu presisi besaran yang bergantung pada satu atau lebih
parameter. Mathematica menggunakan fungsi perkiraan, untuk contoh,
untuk mewakili solusi numerik untuk persamaan diferensial yang diperoleh dengan ND Solve, seperti yang dibahas dalam Bagian
1.6.4.
Perkiraan fungsi dalam Mathematica diwakili oleh objek InterpolingFunction. Benda-benda ini berfungsi seperti fungsi murni yang
dibahas dalam Bagian 2.2.5. Ide dasarnya adalah ketika diberikan argumen tertentu, sebuah Interpog objek latingFunction
menemukan nilai fungsi perkiraan yang sesuai dengan argumen itu. objek InterpolatingFunction berisi representasi dari fungsi
perkiraan berdasarkan interpolasi. Biasanya berisi nilai dan mungkin turunan pada urutan titik. Ini secara efektif mengasumsikan
bahwa fungsi bervariasi dengan lancar di antara titik-titik ini. Akibatnya, ketika Anda menanyakan nilai fungsi dengan tertentu
argumen, objek InterpolingFunction dapat diinterpolasi untuk menemukan perkiraan ke nilai yang Anda inginkan.
Interpolasi [ { f1, f2, … } ] membangun fungsi perkiraan dengan nilai f
i pada bilangan bulat berurutan
Interpolasi [ { { x membangun fungsi perkiraan dengan nilai f i di titik xi
1, f1 }, { x2, f2}, …} ]
Ini juga memungkinkan Anda untuk mendapatkan nilai perkiraan di titik lain.
Dalam hal ini interpolasi adalah pendekatan yang cukup baik untuk fungsi sinus yang sebenarnya.
Anda dapat bekerja dengan fungsi perkiraan seperti yang Anda lakukan dengan fungsi Mathematica lainnya. Anda
dapat merencanakan fungsi perkiraan, atau melakukan operasi numerik seperti integrasi atau pencarian akar. Jika Anda
memberikan argumen non-numerik, fungsi perkiraan dibiarkan dalam bentuk simbolis
Berikut adalah integral numerik yang sama untuk fungsi sinus sebenarnya.
Plot dari fungsi perkiraan pada dasarnya tidak dapat dibedakan dari fungsi sinus yang sebenarnya.
Jika Anda membedakan fungsi perkiraan, Mathematica akan mengembalikan fungsip erkiraan lain yang mewakili turunan.
Ini menemukan turunan dari fungsi sinus perkiraan, dan mengevaluasinya pada 𝜋 /6
Jika Anda meminta nilai di luar domain, Mathematica mencetak peringatan, lalu
menggunakan ekstrapolasi untuk menemukan hasilnya.
Semakin banyak informasi yang Anda berikan tentang fungsi yang Anda coba aproksimasi, semakin baik aproksimasi konstruksi
Mathematica. Anda dapat, misalnya, menentukan tidak hanya nilai fungsi pada urutan titik, tetapi juga turunan.
Ini menciptakan fungsi perkiraan menggunakan interpolasi linier antara nilai-nilai dalam tabel.
Meningkatkan pengaturan untuk InterpolationOrder biasanya menghasilkan fungsi perkiraan yang lebih mulus.
Namun, jika Anda meningkatkan pengaturan terlalu banyak, goyangan palsu dapat berkembang.
(membangun fungsi perkiraan dari kisi-kisi nilai dua dimensi pada titik-titik bilangan bulat mengasumsikan
nilainilai tersebut berasal dari kisi spasi merata dengan domain yang ditentukan menganggap nilainya berasal dari
kisi dengan garis kisi yang ditentukan)
Ini menginterpolasi array nilai dari titik grid integer.
Untuk menginterpolasi array ini, Anda secara eksplisit harus memberi tahu Mathematica domain yang dicakupnya.
Interpolasi Daftar berfungsi untuk array dimensi apa pun, dan dalam setiap kasus ia menghasilkan objek Fungsi
Interpolasi yang mengambil jumlah argumen yang sesuai. Ini menginterpolasi array tiga dimensi.
Mathematica tidak hanya dapat menangani fungsi perkiraan numerik murni, tetapi juga fungsi yang melibatkan
simbolis parameter.
Ini menghasilkan Fungsi Interpolasi yang bergantung pada parameter a dan b.
Ini menunjukkan bagaimana nilai interpolasi pada 2.2 bergantung pada parameter
Dengan pengaturan default untuk InterpolationOrder yang digunakan, nilai pada titik ini tidak lagi bergantung pada
a.
Dalam bekerja dengan fungsi perkiraan, Anda cukup sering berakhir dengan kombinasi rumit Interpolatg ingFungsi
objek. Anda selalu dapat memberi tahu Mathematica untuk menghasilkan satu objek InterpolingFunction valid atas
domain tertentu dengan menggunakan FunctionInterpolation.
Ini menghasilkan objek InterpolatingFunction baru yang valid dalam domain 0 hingga 1.
(Membangun fungsi perkiraan dengan mengevaluasi Expr dengan x mulai dari xmin hingga xmax membangun fungsi
perkiraan dimensi yang lebih tinggi)
Transformasi Fourier
Operasi umum dalam menganalisis berbagai jenis data adalah menemukan transformasi Fourier, atau spektrum, dari
daftar nilai. Idenya biasanya untuk memilih komponen data dengan frekuensi tertentu, atau rentang frekuensi.
(Transformasi Fourier terbalik Transformasi Fourier)
Berikut adalah beberapa data, sesuai dengan pulsa persegi.
Berikut ini adalah transformasi Fourier dari data tersebut. Ini melibatkan bilangan kompleks.
Fourier berfungsi apakah daftar data Anda memiliki panjang yang merupakan kekuatan dua.
Ini menghasilkan daftar panjang-200 yang berisi sinyal periodik dengan noise acak ditambahkan.
Dalam bidang ilmiah dan teknis yang berbeda, konvensi yang berbeda sering digunakan untuk mendefinisikan
transformasi Fourier diskrit. Opsi FourierParameters di Mathematica memungkinkan Anda memilih salah satu
konvensi yang Anda inginkan.
Mathematica can find Fourier transforms for data in any number of dimensions. In n dimensions, the data is
specified by a list nested n levels deep. Two-dimensional Fourier transforms are often used in image processing.
Dalam membentuk sublist untuk digabungkan dengan kernel, selalu ada masalah tentang apa yang harus dilakukan
di akhir daftar data. Oleh default, ListConvolve dan ListCorrelate tidak pernah membentuk sublist yang akan
"menggantung" di ujung daftar data. Ini berarti bahwa output yang Anda dapatkan biasanya lebih pendek dari
daftar data asli.
Dalam praktiknya, seseorang sering ingin mendapatkan output sepanjang daftar data asli. Untuk melakukan ini,
perlu menyertakan sublist yang menjorok satu atau kedua ujung daftar data. Elemen tambahan yang diperlukan
untuk membentuk sublist ini harus diisi dengan semacam "padding".
Secara default, Mathematica mengambil salinan dari daftar asli untuk memberikan padding, jadi efektif
memperlakukan daftar sebagai siklus.
Sekarang suku pertama dari elemen pertama dan suku terakhir dari elemen terakhir keduanya melibatkan sampul.
Dalam kasus umum ListCorrelate[kernel, list, {kL, kR }] diatur sehingga pada elemen pertama dari hasil, Elemen
pertama dari daftar muncul dikalikan dengan elemen pada posisi kL di kernel, dan di elemen terakhir dari hasil,
elemen Elemen terakhir dari daftar muncul dikalikan dengan elemen pada posisi kR di kernel. Kasus default di
mana tidak ada overhang adalah Diperbolehkan di kedua sisi sehingga sesuai dengan ListCorrelate[kernel, list, {1,
-1}].
Dengan kernel dengan panjang 3, perataan {-1, 2} selalu membuat elemen pertama dan terakhir dari hasil sama.
Untuk banyak jenis data, lebih mudah untuk mengasumsikan bukan bahwa data itu siklis, melainkan diisi di kedua ujungnya
oleh beberapa elemen tetap, seringkali 0, atau oleh beberapa urutan elemen.
Hasilnya sesuai persis dengan koefisien dalam bentuk diperluas dari produk polinomial ini.
Ini dimulai dengan daftar yang diberikan, kemudian mengembangkan aturan 30 untuk empat langkah.
Ini menunjukkan 100 langkah evolusi aturan 30 dari kondisi awal acak.
Jika Anda memberikan daftar eksplisit nilai awal, CellularAutomaton akan mengambil elemen dalam daftar ini agar
sesuai dengan semua sel dalam sistem, diatur secara siklis. Tetangga kanan sel di akhir adalah sel di awal.
Seringkali lebih mudah untuk mengatur kondisi awal di mana ada wilayah "benih" kecil, ditumpangkan pada
konstanta "Latar Belakang". Secara default, CellularAutomaton secara otomatis mengisi latar belakang yang cukup
untuk menutupi ukuran pola yang dapat dihasilkan dalam jumlah langkah evolusi yang Anda tentukan.
Ini menunjukkan aturan 30 berkembang dari kondisi awal yang berisi satu sel hitam
Ini menunjukkan aturan 30 berkembang dari kondisi awal yang terdiri dari benih {1,1} pada latar belakang
{1,0,1,1} berulang blok.
Khususnya dalam mempelajari interaksi antar struktur, terkadang Anda mungkin ingin menentukan kondisi awal
untuk automata seluler di mana blok tertentu ditempatkan pada offset tertentu.
Ini mengatur kondisi awal dengan sel hitam pada offset 40
Dalam kasus yang paling sederhana, otomat seluler memungkinkan k nilai yang mungkin atau "warna" untuk
setiap sel, dan memiliki aturan yang melibatkan hingga r tetangga di setiap sisi. Digit dari "nomor aturan" n
kemudian menentukan warna sel baru untuk setiap kemungkinan konfigurasi lingkungan.
Ini menunjukkan warna baru sel tengah untuk masing-masing dari 8 lingkungan.
Untuk aturan 30, urutan ini sesuai dengan basis-2 digit angka 30.
Untuk aturan otomat seluler umum, setiap digit dari nomor aturan menentukan warna apa yang mungkin dihasilkan
oleh lingkungan yang berbeda dari 2 r + 1 sel. Untuk mengetahui digit mana yang sesuai dengan lingkungan mana,
seseorang secara efektif memperlakukansel-sel di lingkungan sebagai digit dalam nomor. Untuk r = 1 otomat
seluler, nomornya diperoleh dari daftar elemen neig di lingkungan dengan neig . [k^2, k, 1].
Kadang-kadang nyaman untuk mempertimbangkan automata seluler totalistik, di mana nilai baru sel hanya
bergantung pada total nilai di lingkungannya. Seseorang dapat menentukan automata seluler totalistik dengan
nomor aturan atau "kode" di yang setiap digit mengacu pada lingkungan dengan nilai total yang diberikan,
diperoleh misalnya dari neig . [1, 1, 1].
Secara umum, CellularAutomaton memungkinkan seseorang untuk menentukan aturan menggunakan urutan bobot
apa pun. Pilihan lain terkadang nyaman adalah [k, 1, k], yang menghasilkan aturan totalistik luar.
Ini menghasilkan tabel kebenaran untuk aturan 2-sel-neighborhood nomor 7, yang ternyata adalah fungsi Boolean
Nand.
Nomor aturan menyediakan cara yang sangat ringkas untuk menentukan aturan otomat seluler. Tapi terkadang lebih
nyaman untuk menentukan aturan dengan memberikan fungsi eksplisit yang harus diterapkan ke setiap lingkungan
yang mungkin.
Ini menjalankan otomat seluler aditif yang aturannya menambahkan semua nilai di setiap modulo lingkungan 4
Fungsi diberikan argumen kedua, sama dengan nomor langkah.
Saat Anda menentukan aturan berdasarkan fungsi, nilai sel tidak harus berupa bilangan bulat.
Mereka bahkan bisa menjadi simbolis.
Spec spesifikasi langkah bekerja sangat mirip dengan mengambil elemen dari daftar dengan Take. Namun, satu
perbedaannya adalah bahwa kondisi awal untuk otomat seluler dianggap sebagai langkah 0. Perhatikan bahwa
spesifikasi langkah apa pun dari form (… ) harus dilampirkan dalam daftar tambahan.
Ini berevolusi untuk 100 langkah, tetapi hanya mempertahankan setiap langkah lainnya.
Sebanyak yang Anda dapat menentukan langkah mana yang harus dipertahankan dalam evolusi otomat seluler,
Anda juga dapat menentukan sel mana yang akan menyimpan. Jika Anda memberikan kondisi awal
seperti {a1, a2, … }, blist, maka ai dianggap memiliki offset 0 untuk tujuan menentukan sel mana
yang akan disimpan.
Ini menjaga semua langkah, tetapi menjatuhkan sel pada offset lebih dari 20 di sebelah kiri.
Jika Anda memberikan kondisi awal seperti { {a1, a2, … }, blist}, maka CellularAutomaton akan selalu efektif
melakukannyaotomat seluler seolah-olah ada jumlah sel yang tak terbatas. Dengan menggunakan specx seperti {
x1, x2 } Anda bisa tahu CellularAutomaton untuk memasukkan hanya sel pada offset tertentu x1 hingga x2 dalam
outputnya. SelulerOtomatis secara default menyertakan sel cukup jauh sehingga nilainya tidak pernah tetap sama
seperti di blist latar belakang.
Secara default, hanya bagian yang tidak hitam konstan yang disimpan.
Menggunakan Semua untuk specx mencakup semua sel yang dapat dipengaruhi oleh otomat seluler dengan rentang
ini.
Ini adalah spesifikasi aturan untuk otomat seluler totalistik 9-tetangga dua dimensi dengan kode 797
Anda sekarang dapat mengambil bentuk simbolis dari integral, dan menanyakan perkiraan nilai numeriknya.
Ketika Mathematica tidak dapat menemukan hasil eksplisit untuk sesuatu seperti integral tertentu, ia
mengembalikan bentuk simbolis. Anda dapat mengambil bentuk simbolis ini, dan mencoba untuk mendapatkan
nilai numerik perkiraan dengan menerapkan N.
Dengan memberikan argumen kedua ke N, Anda dapat menentukan presisi numerik yang akan digunakan.
Jika Anda ingin mengevaluasi integral secara numerik di Mathematica, maka gunakan Integrasikan dan terapkan N ke
hasilnya adalah bukan cara yang paling efisien untuk melakukannya. Lebih baik daripada menggunakan fungsi
NIntegrate, yang segera memberikan a jawaban numerik, tanpa terlebih dahulu mencoba untuk mendapatkan hasil
yang tepat dan simbolis. Anda harus menyadari bahwa bahkan ketika Integ parut pada akhirnya tidak berhasil
memberi Anda hasil yang tepat, mungkin menghabiskan banyak waktu untuk melakukannya.
NIntegrate mengevaluasi integral numerik secara langsung, tanpa terlebih dahulu mencoba untuk mendapatkan hasil
simbolis.
Namun, jika Anda meminta integral dari -1000 hingga 1000, NIntegrate akan melewatkan puncak di dekat x = 0,
dan memberikan yang salah menjawab.
Integrasi Numerik
Fitur penting dari NIntegrate adalah kemampuannya untuk menangani fungsi yang "meledak" pada titik yang
diketahui. Ninteg parut secara otomatis memeriksa masalah seperti itu di titik akhir wilayah integrase
NIntegrate tidak secara otomatis mencari singularitas kecuali pada titik akhir wilayah integrasi Anda. Kapan
singularitas lain yang hadir, NIntegrate mungkin tidak memberikan jawaban yang tepat untuk integral. Namun
demikian, dalam mengikuti prosedur adaptifnya, NIntegrate akan sering mendeteksi keberadaan perilaku yang
berpotensi tunggal, dan akan memperingatkan Anda tentang hal itu.
Anda juga dapat menggunakan daftar titik tengah xi di NIntegrate untuk menentukan kontur integrasi yang akan
diikuti di pesawat yang kompleks. Kontur diambil terdiri dari urutan segmen garis, mulai dari xmin, melalui
masing-masing xi , dan berakhir di xmax.
Ini mengintegrasikan 1 x di sekitar kontur tertutup pada bidang kompleks, bergerak dari -1, melalui titik -i, 1 dan i,
lalu kembali ke -1.
Dengan pengaturan default untuk semua opsi, NIntegrate melewatkan puncak di exp H-x2L dekat x = 0, dan
memberikan jawaban yang salah untuk integral.
Dengan opsi MinRecursion->3, NIntegrate sampel cukup banyak titik yang memperhatikan puncak sekitar x = 0.
Dengan pengaturan default MaxRecursion, bagaimanapun, NIntegrate tidak dapat menggunakan titik sampel yang
cukup untuk dapat mengharapkan hasil yang akurat menjawab.
Dengan pengaturan MaxRecursion ini, NIntegrate bisa mendapatkan jawaban yang akurat untuk integral.
Cara lain untuk menyelesaikan masalah adalah dengan membuat NIntegrate memecah wilayah integrasi menjadi
beberapa bagian, dengan bagian kecil yang secara eksplisit mencakup lingkungan puncak.
Untuk integral dalam banyak dimensi, NIntegrate membutuhkan waktu yang lama untuk mendapatkan jawaban
yang tepat. Namun, oleh mengatur opsi MaxPoints, Anda dapat memberi tahu NIntegrate untuk memberi Anda
perkiraan kasar saja, mengambil sampel integrand hanya beberapa kali saja.
Anda juga bisa mendapatkan hasilnya, meskipun kurang efisien, dengan membangun bentuk simbolis dari
penjumlahan, kemudian mengevaluasinya secara numerik.
Anda dapat menggunakan NSolv untuk mendapatkan solusi numerik untuk persamaan polinomial secara langsung,
tanpa terlebih dahulu mencoba mencari hasil yang tepat.
NSolv akan selalu memberi Anda set lengkap solusi numerik untuk persamaan polinomial apa pun dalam satu
variabel.
Anda juga bisa mendapatkan solusi numerik untuk himpunan persamaan polinomial simultan. Anda dapat
menggunakan Solve untuk "bersantai" persamaan simultan, dan kemudian menerapkan N untuk mendapatkan hasil
numerik.
Memecahkan menulis solusi dalam hal akar polinomial dalam satu variabel.
Anda dapat menerapkan N untuk mendapatkan hasil numerik.
Persamaan sin (x) = 0 memiliki jumlah solusi tak terhingga dalam bentuk x = n p. Jika Anda mulai cukup dekat
dengan tertentu solusi, FindRoot akan memberi Anda solusi itu
Jika Anda mulai dengan x = 6, Anda mendapatkan pendekatan numerik untuk solusi x = 2
Jika Anda ingin FindRoot mencari solusi kompleks, maka Anda harus memberikan nilai awal yang kompleks
Variabel yang digunakan oleh FindRoot dapat memiliki nilai yang berupa daftar. Ini memungkinkan Anda untuk
menemukan akar fungsi yang mengambil vektor sebagai argumen.
Ini menemukan solusi untuk y dengan x dalam rentang 0 hingga 2, menggunakan kondisi awal untuk y[0].
Ini masih menemukan solusi dengan x dalam rentang 0 hingga 2, tetapi sekarang kondisi awalnya adalah untuk y[3].
With a third-order equation, you need to give initial conditions for up to second derivatives.
Mathematica memungkinkan Anda untuk menggunakan kombinasi linear yang sesuai dari nilai fungsi dan
turunannya sebagai syarat batas.
NDSove mengurangi ukuran langkah di sekitar x = 0 untuk mereproduksi ketegaran secara akurat.
Untuk mengambil solusi persamaan Lorenz sejauh ini, Anda perlu menghapus batas default pada MaxSteps.
Berikut adalah plot parametrik dari solusi dalam tiga dimensi.
Inilah solusinya.
Ini menemukan solusi numerik untuk persamaan gelombang. Hasilnya adalah fungsi interpolasi dua dimensi.
Ini adalah plot kepadatan resolusi yang lebih tinggi dari solusi
Optimasi Numerik
Ini memberikan minimum lokal di sebelah kiri, yang dalam hal ini juga minimum global.
Pola evaluasi yang dilakukan oleh algoritma di Mathematica bisa sangat rumit.
This solves a differential equation using method m, and returns the number of steps and evaluations needed.
With the method selected automatically, this is the number of steps and evaluations that are needed.
Ini menunjukkan apa yang terjadi dengan beberapa metode lain yang mungkin. Metode Adams yang dipilih secara
otomatis adalah yang tercepat
Ini menunjukkan proses pergeseran yang dicapai oleh FractionalPart[2 x] pada 8 digit biner pertama x.
Langkah-langkah yang berurutan menghasilkan jumlah presisi yang semakin rendah, dan akhirnya tidak ada presisi
sama sekali
Ini meminta ketepatan setiap nomor. Presisi nol menunjukkan bahwa tidak ada angka penting yang benar.
Jika Anda menggunakan angka presisi mesin, Mathematica tidak akan lagi melacak penurunan presisi apa pun.
Ini menghasilkan urutan yang tampaknya acak, bahkan mulai dari input sederhana
Setelah nilai-nilai telah dihitung, seseorang dapat dengan aman menemukan perkiraan numerik untuk mereka.
Berikut adalah 5 hasil terakhir setelah 1000 iterasi, dihitung menggunakan angka pasti.
𝑚 = 3 𝑎𝑡𝑎𝑢 𝑚 = 4
𝑦 = 𝐴𝑒3𝑥 + 𝐵𝑒4𝑥
2. Akar-akar nyata
dan sama (m = m1 𝑑 2𝑦 𝑑𝑦
= m2) 𝑦= 𝑒𝑚1𝑥(𝐴 + 𝐵𝑥) + 10 + 25𝑦 = 0
𝑑𝑥2 𝑑𝑥
𝑑 2𝑦 𝑑𝑦 𝑚2 + 10𝑚 + 25 = 0
𝑎 +𝑏 + 𝑐𝑦 = 0
𝑑𝑥2 𝑑𝑥
(𝑚 + 5)2 = 0
𝑚 = −5
𝑦 = 𝑒−5𝑥(𝐴+ 𝐵𝑥)
3. Akar kompleks (m =
𝜶 ± 𝒋𝜷) 𝑑 2𝑦 𝑑𝑦
𝑦= 𝑒𝛼𝑥(𝐴 cos 𝛽𝑥 + 𝐵 sin 𝛽𝑥) + 4 + 9𝑦 = 0
𝑑𝑥2 𝑑𝑥
𝑑 2𝑦 𝑑𝑦
𝑎 +𝑏 + 𝑐𝑦 = 0
𝑑𝑥2 𝑑𝑥 𝑚2 + 4𝑚 + 9 = 0
−4 ± √16 − 36
𝑚=
2
−4 ± √−20
𝑚=
2
−4 ± 2𝑗√5
𝑚=
2
𝑚 = −2 ± 𝑗√5
𝛼 = −2 𝑑𝑎𝑛 𝛽 = √5
4. Persamaan bentuk
𝑑2𝑦 𝑦 = 𝐴 cos 𝑛𝑥 + 𝐵 sin 𝑛𝑥 𝑑2𝑦
+ 𝑛2𝑦 = 0 + 16𝑦 = 0
𝑑𝑥2 𝑑𝑥2
𝑚2 = −16
𝑚 = ±𝑗4
𝑦 = 𝐴 cos 4𝑥 + 𝐵 sin 4𝑥
5. Persamaan bentuk
𝑑2𝑦 𝑦 = 𝐴 cosh 𝑛𝑥 + 𝐵 sinh 𝑛𝑥 𝑑2𝑦
− 𝑛2𝑦 = 0 − 25𝑦 = 0
𝑑𝑥2 𝑑𝑥2
𝑚2 = 25
𝑚= ±5
𝑦 = 𝐴 cosh 5𝑥 + 𝐵 sinh 5𝑥
𝑚2 − 5𝑚 + 6 = 0
(𝑚 − 2)(𝑚 − 3) =
𝑚 = 2 𝑎𝑡𝑎𝑢 𝑚 = 3
𝐶𝐹 → 𝑦 = 𝐴𝑒2𝑋 + 𝐵𝑒3𝑥
𝑀𝑒𝑛𝑒𝑛𝑡𝑢𝑘𝑎𝑛 𝑃𝐼:
𝑦 = 5𝐶𝑥2 + 𝐷𝑥 + 𝐸
𝑑𝑦
= 10𝐶𝑥 + 𝐷
𝑑𝑥
𝑑2𝑦
= 10𝐶
𝑑𝑥2
10𝐶 − 5(10𝐶𝑥 + 𝐷) + 6(5𝐶𝑥2 + 𝐷𝑥+ 𝐸) = 5𝑥2
𝑦 = 𝐶𝐹 + 𝑃𝐼
2
𝑦 = 𝐴𝑒2𝑋 + 𝐵𝑒3𝑥 + 𝑥 + 50𝑥+ 190
6 36 216
PERSAMAAN DIFFERENSIAL ORDE 1
𝐶
𝑌2 = 2𝑥2(ln 𝑥 + 𝐶)
Bandingkan dengan[dy + Py = Q]
dx
∴𝑃 𝑑𝑎𝑛 𝑄 = X2
x
IF = e∫Pdx 𝑥
∴ IF = 𝑒ln𝑥 = 𝑥
∴ IF = 𝑥
Solusinya adalah 𝑦. 𝐼𝐹 = ∫ 𝑄. 𝐼𝐹 𝑑𝑥 ,jadi
𝑦𝑥 = ∫ 𝑥2. 𝑥 𝑑𝑥 𝐶
𝑥4
𝐶
5 Persamaan Bernoulli: Bagi dengan 𝑦𝑛: lalu letakkan 𝑧 = 𝑑𝑦 + 1 𝑦 = 𝑥𝑦2
𝑦1−𝑛 𝑑𝑥 𝑥
𝑑𝑦 + 𝑃𝑦 = 𝑄𝑦𝑛 Mengurangi ke tipe (d) di atas. −2 𝑑𝑦 + 1 . 𝑦−1 = 𝑥
𝑑𝑥
𝑦
𝑑𝑥 𝑥
𝑑𝑧 𝑑𝑦
𝑧= 𝑦−1 = ∴ −𝑦−2
𝑑𝑥 𝑑𝑥
𝑑𝑦 1
−𝑦−2 − . 𝑦−1 = −𝑥
𝑑𝑥 𝑥
Sehingga 𝑑𝑧 − 1 𝑧 = −𝑥
𝑑𝑥 𝑥
𝑑𝑧 1
− 𝑧 = −𝑥
𝑑𝑥 𝑥
IF = 𝑒∫𝑃𝑑𝑥 ∫
𝑃𝑑𝑥 𝑥
z. IF
= ∫ Q. IF 𝑑𝑥 .
𝑥 𝑥 𝑑𝑥
𝑧
∴ = ∫ −1 𝑑𝑥 = −𝑥 + 𝐶
𝑥
∴ 𝑧 = 𝐶𝑥 − 𝑥2