Falstad simülatörünün kodunu ayrıntılı olarak inceledim. Sadece dirençler, anahtarlar ve voltaj kaynakları gibi doğrusal bileşenlerden oluşan devreler için (mantık-geçit çıkışları gibi şeyler simülasyon için topraklara bağlı voltaj kaynakları olarak kabul edilir), simülatör her devre düğümünü, voltaj kaynağını (iki düğümü bağlar) dikkate alır. veya lineer bir denklemi ve bir değişkeni tanımlayan tel (aynı şekilde), öyle ki denklem sayısı ve değişken sayısı daima eşit olacaktır. Bir devre düğümü için değişken, düğümün voltajıdır ve denklem, içinden geçen toplam akımı, herhangi bir akım kaynağı tarafından enjekte edilen toplam akıma eşit olarak hesaplar. Bir voltaj kaynağı veya kablo için (potansiyel farkın sıfır olduğu bir voltaj kaynağı olarak kullanılan bir kablo),
Mevcut kaynaklar ve dirençler gibi şeyler dirençler veya değişkenlerle ilişkili değildir. Bunun yerine, akım kaynakları bir devre düğümü için gereken toplam akımı arttırır (her devre düğümünün içeri ve dışarı akan toplam akımı değerlendiren bir denklemi olduğunu unutmayın) ve diğer için azaltın. Dirençler biraz daha zorlayıcıdır: her uç nokta denklemi için, direnç her uç noktanın düğüm voltajı için terimler ekler.
Örneğin 1 ve 2 nolu düğüm düğümlerini bağlayan 100-ohm'luk bir direnç, 1 nolu düğümdeki her bir volt artışının, 1 nolu düğümün içine akan akımı 0,01 amp azaltacağını ve 2 nolu düğümün içine akan akımı benzer bir miktarda arttıracağını söyleyecektir. Benzer şekilde, düğüm 2'deki her bir volt artışı, düğüm 1'e akan akımı 0.01 amper arttıracak ve düğüm 2'ye akan akımı benzer bir miktarda azaltacaktır.
Düğüm 1 ve 5'i bağlayan 10 voltluk bir besleme kaynağına ve düğüm 1 ve 2, 2 ve 3, 2 ve 4 ve 3 ve 4'ü bağlayan 100 ohm dirençlere sahip bir devre düşünün. Ayrıca: 1. düğümde bir toprak simgesi olduğunu varsayalım.
neg ---+-1---R100---2---R100---3---100---4---pos
gnd | |
+---------100--------+
İki "voltaj kaynağı" olacaktır: topraklama kablosu ve 10 voltluk besleme (sırasıyla denklem / değişken 5 ve 6 olarak kabul edilir). Böylece denklemler şöyle olacaktır:
-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)
Bu denklem sistemi bir NxN matrisi artı bir N madde dizisi olarak gösterilebilir. Her denklem matristeki bir satırla temsil edilir, her satırdaki değerler her değişkenin katsayılarını temsil eder. Her denklemin sağ tarafı ayrı dizide saklanır. Denklemleri çözmeden önce, her bir düğüme akan net akımı (bu durumda sıfır) ve voltaj kaynaklarıyla bağlanan düğüm çiftleri arasındaki voltaj farkını bilir. Denklemlerin çözülmesi, her düğümdeki gerilimi ve her gerilim kaynağından geçen akımı verecektir.
Devre kapasitör içeriyorsa, bunların her biri düşük değerli dirençli seri halinde bir voltaj kaynağı olarak kabul edilecektir; Her simülasyon adımından sonra, voltaj kaynağı içinden geçen akım miktarına göre ayarlanacaktır. İndüktörler akımı bir birine besleyen ve diğerini alan yüksek değerli dirençler olarak kabul edilecektir (akımın direnci arasındaki gerilime göre ayarlanmaktadır). Hem kondansatörler hem de indüktörler için, direnç değeri, bir simülasyon aşaması tarafından temsil edilen zaman miktarı ile kontrol edilecektir.
Transistörler gibi daha karmaşık devre elemanları, voltaj kaynakları, akım kaynakları ve dirençlerin kombinasyonları olarak kabul edilir. Simülasyon zaman adımı başına her şeyin bir kez işlenmesini sağlayan daha basit devre elemanlarının aksine, transistörler gibi elementler gördükleri gerilimlere ve akımlara dayanarak etkin dirençlerini hesaplarlar, gördükleri gerilimlere ve akımlara dayalı olarak yeniden hesaplarlar. Yeni gerilimler ve akımlar, denklemcilerin vb. etkilerini, dirençlerinin gördüğü gerilim ve akım için olması gerektiği gibi bir dengeye ulaşmak amacıyla yeniden değerlendirir.
Falstad simülatörü, tamamen "doğrusal" elemanlardan oluşan orta büyüklükteki devreler için oldukça hızlı olabilir. Değişen tek şey sağ taraftaki katsayılar ise, bir denklem sistemini tekrar tekrar çözme zamanı oldukça makul. Sistemin denklemleri "yeniden aktive etmesi" gerektiğinden, eğer sol taraf değişirse (örneğin, bir transistörün etkin direncinin yükselmesi veya azalması nedeniyle) zaman çok yavaşlar. Refaktörün her bir simülasyon basamağında (transistörlerde gerekli olabilir) denklemlere birden fazla kez yapılması, işleri daha da yavaşlatır.
Her şey için bir büyük matris kullanmak, büyük simülasyonlar için iyi bir yaklaşım değildir; Matris oldukça seyrek görünse de, düğüm sayısı artı voltaj kaynakları karesiyle orantılı yer kaplar. Her simülasyon adımında matrisi çözmek için gereken süre, yeniden yapılandırma gerekmiyorsa matris büyüklüğü karesiyle veya yeniden düzenleme gerekliyse matris büyüklüğü küpüyle orantılı olacaktır. Bununla birlikte, bir devre ve doğrusal denklem sistemleri arasındaki ilişkiyi gösterme konusunda yaklaşımın belirli bir zarafeti vardır.