Saya telah memeriksa kode simulator Falstad dalam beberapa detail. Untuk rangkaian yang hanya terdiri dari komponen linier seperti resistor, sakelar, dan sumber tegangan (hal-hal seperti keluaran gerbang-logika dianggap sebagai sumber tegangan yang terhubung ke tanah untuk keperluan simulasi), simulator memperhatikan setiap simpul sirkuit, sumber tegangan (menghubungkan dua simpul) , atau kawat (juga) sebagai mendefinisikan persamaan linear dan variabel, sehingga jumlah persamaan dan jumlah variabel selalu sama. Untuk simpul rangkaian, variabelnya adalah tegangan simpul, dan persamaan menghitung total arus yang mengalir melaluinya sama dengan total arus yang diinjeksikan oleh sumber arus apa pun. Untuk sumber tegangan atau kawat (kawat ditangani sebagai sumber tegangan di mana beda potensial adalah nol),
Hal-hal seperti sumber dan resistor saat ini tidak terkait dengan resistor atau variabel. Alih-alih, sumber arus meningkatkan arus total yang diperlukan untuk satu simpul sirkuit (ingatlah bahwa setiap simpul rangkaian memiliki persamaan yang mengevaluasi arus total yang mengalir masuk dan keluar) dan menguranginya untuk yang lainnya. Resistor sedikit rumit: untuk setiap persamaan titik akhir, resistor menambahkan istilah untuk tegangan simpul dari setiap titik akhir.
Sebuah resistor 100-ohm yang menghubungkan simpul 1 dan 2, misalnya, akan mengatakan bahwa setiap kenaikan volt pada simpul 1 akan mengurangi arus yang mengalir ke simpul 1 sebesar 0,01 amp dan meningkatkan arus yang mengalir ke simpul 2 dengan jumlah yang sama. Demikian juga, setiap kenaikan volt pada simpul 2 akan meningkatkan arus yang mengalir ke simpul 1 sebesar 0,01 amp dan mengurangi arus yang mengalir ke simpul 2 dengan jumlah yang sama.
Pertimbangkan rangkaian dengan suplai 10 volt yang menghubungkan node 1 dan 5, dan 100 ohm resistor yang menghubungkan node 1 dan 2, 2 dan 3, 2 dan 4, dan 3 dan 4. Asumsikan lebih jauh bahwa ada ikon ground pada node 1. Jadi:
neg ---+-1---R100---2---R100---3---100---4---pos
gnd | |
+---------100--------+
Akan ada dua "sumber tegangan": kabel ground dan catu 10 volt (yang masing-masing dianggap sebagai persamaan / variabel 5 dan 6). Persamaannya adalah:
-X1*0.01 +X5 -X6 = 0 Node 1
+X1*0.01 -X2*0.01 +X4*0.01 = 0 Node 2
+X2*0.01 -X3*0.01 +X4*0.01 = 0 Node 3
+X2*0.01 -X4*0.01 +X6 = 0 Node 4
-X1*1 = 0 Volts 5 (voltage between 1 and gnd)
-X1*1 +X4*1 = 10 Volts 6 (voltage between 1 and 4)
Sistem persamaan ini dapat direpresentasikan sebagai matriks NxN plus array item N. Setiap persamaan diwakili oleh satu baris dalam matriks, dengan nilai pada setiap baris mewakili koefisien dari masing-masing variabel. Sisi kanan setiap persamaan disimpan dalam array yang terpisah. Sebelum menyelesaikan persamaan, orang akan tahu arus bersih yang mengalir ke setiap node (nol dalam kasus ini), dan perbedaan tegangan antara pasangan node yang dihubungkan oleh sumber tegangan. Memecahkan persamaan akan menghasilkan tegangan pada setiap node dan arus yang mengalir melalui masing-masing sumber tegangan.
Jika rangkaian berisi kapasitor, masing-masing akan dianggap sebagai sumber tegangan secara seri dengan resistor bernilai rendah; setelah setiap langkah simulasi, sumber tegangan akan disesuaikan sesuai dengan jumlah arus yang mengalir melaluinya. Induktor akan dianggap sebagai resistor bernilai tinggi yang mengumpan arus menjadi satu dan mengeluarkannya (jumlah arus disesuaikan sesuai dengan tegangan melintasi resistansi). Untuk kapasitor dan induktor, nilai resistansi akan dikontrol oleh jumlah waktu yang diwakili oleh langkah simulasi.
Elemen rangkaian yang lebih kompleks seperti transistor dianggap sebagai kombinasi sumber tegangan, sumber arus, dan resistor. Tidak seperti elemen rangkaian yang lebih sederhana yang memungkinkan semuanya diproses sekali per langkah waktu simulasi, elemen-elemen seperti transistor menghitung hambatan efektifnya dll. Berdasarkan pada voltase dan arus yang mereka lihat, mengevaluasi semua persamaan yang dihasilkan, dan mengevaluasi kembali resistansi mereka berdasarkan voltase dan arus baru, mengevaluasi kembali persamaan, dll. dalam upaya mencapai kesetimbangan di mana resistansi efektifnya seperti pada tegangan dan arus yang dilihat oleh transitor.
Simulator Falstad dapat menjadi cepat untuk sirkuit berukuran sedang yang seluruhnya terdiri dari elemen "linier". Waktu untuk berulang kali menyelesaikan sistem persamaan cukup masuk akal jika satu-satunya hal yang berubah adalah koefisien sisi kanan. Waktu menjadi jauh lebih lambat jika sisi kiri berubah (misalnya karena resistensi efektif transistor naik atau turun) karena sistem harus "refactor" persamaan. Harus melakukan refactor persamaan beberapa kali per langkah simulasi (mungkin diperlukan dengan transistor) membuat semuanya lebih lambat.
Menggunakan satu matriks besar untuk semuanya bukanlah pendekatan yang baik untuk simulasi besar; meskipun matriks akan cukup jarang, itu akan memakan ruang sebanding dengan kuadrat dari jumlah node plus sumber tegangan. Waktu yang diperlukan untuk menyelesaikan matriks pada setiap langkah simulasi akan sebanding dengan kuadrat ukuran matriks jika refactoring tidak diperlukan, atau ke kubus ukuran matriks jika refactoring diperlukan. Meskipun demikian, pendekatan tersebut memang memiliki keanggunan tertentu ketika datang untuk menunjukkan hubungan antara rangkaian dan sistem persamaan linear.