7 doğrusal olmayan denklem sisteminin sembolik çözümü


9

Sıradan diferansiyel denklemler sistemim var - 7 denklem ve hastalık bulaşmasının matematiksel bir modelinin bir parçası olarak davranışlarını yöneten ~ 30 parametre. Ben istiyorum gibi değiştirilmesi bu denklemler için kararlı durumlarını bulmak için dx/dt = rest of the equationiçin 0 = equationdenklem her bir basit cebir problemi bulursunuz. Bu elle yapılabilir, ancak bu tür hesaplamalarda gülünç derecede kötüyüm.

Bu sorunun daha küçük sürümlerini işleyebilen Mathematica'yı kullanmayı denedim ( buraya bakın ), ancak Mathematica bu sorun üzerinde durmak için öğütüyor. Buna yaklaşmanın daha etkili / etkili bir yolu var mı? Daha verimli bir sembolik matematik sistemi mi? Diğer öneriler?

Birkaç güncelleme (21 Mart):

  • Amaç gerçekten onları sembolik olarak çözmek - sayısal cevaplar güzel ama şimdilik hedef, sembolik versiyon.
  • En az bir denge var. Aslında oturmadım ve bunu kanıtlamadım , ancak tasarımla, başlangıçta hiçbirinin enfekte olmadığı en az bir önemsiz olana sahip olması gerekir. Bunun dışında hiçbir şey olmayabilir , ama bu beni başka bir şey kadar içerik haline getirir.
  • Aşağıda konuşulan gerçek denklemler dizisi verilmiştir.

resim açıklamasını buraya girin

Özetle, 7 değişkente 7 kuadratik denklem sisteminin çözümü için sembolik ifadeler arıyorum.


Denklemleri yazabilir misiniz? Büyük, kısıtsız, doğrusal olmayan denklemler sisteminin çözümü genellikle Newton yöntemi veya değişkenlerinden biri kullanılarak sayısal olarak yapılır. Buradaki seçim, orijinal denklem sistemi hakkında ne kadar bilgiye sahip olduğunuza bağlı olacaktır - en önemlisi, Jacobian denklemler sisteminin mevcut, hesaplanabilir veya kolayca yaklaşılabilir mi?
Aron Ahmadia

ahh! Denklemlerinizin Mathematica sitesinde ayrıntılı olarak görüldüğünü görüyorum. Onları buraya getirmeyi düşünür müsün? (Bu, özellikle sizin için Mathematica'nın yapabileceklerinin ötesinde sayısal çözümler önereceksek, çapraz gönderim değildir).
Aron Ahmadia

Denklemleri Mathematica'dan bugün daha sonra getireceğim - 5 saatlik sürüşten sonra yoldan çekilmeliyim.
Mart'ta Fomite

1
değil dUsdt=dHdt. Yukarıdaki denklemlerden öyle görünüyor. Bir şey mi kaçırıyorum?
ja72

1
@GeoffOxberry: bu nedenle türevler sıfıra eşitlendiğinde, # 1 ve # 2 denklemleri aynıdır ve biri ommite edilebilir.
ja72

Yanıtlar:


13

Paydaları temizledikten sonra uğraştığınız denklemlerin hepsi polinom gibi görünüyor. Bu iyi bir şey (transandantal fonksiyonlar genellikle cebirsel olarak uğraşmak için biraz daha zordur). Ancak, denklemlerinizin kapalı biçimli bir çözümü olduğu garanti değildir. Bu, teorik olarak biliyor olsalar bile, birçok insanın gerçekten "alamadığı" önemli bir noktadır, bu yüzden yeniden düzenlemeyi gerektirir: açısından basit bir polinom denklem sistemleri vardır. (nth) kökler vb. Ünlü bir örnek (bir değişkente) x5x+1=0. Ayrıca bu wikipedia sayfasına bakınız .

Tabii ki , çözülebilecek denklem sistemleri de var ve sisteminizin bunlardan biri olup olmadığını kontrol etmek faydalı olacaktır. Sisteminiz çözülemese bile, denklem sisteminiz için bir anlamda daha basit bir form bulmak yine de mümkün olabilir. Örneğin, sadece ilk değişkeni içeren (bir cebirsel olarak çözülemese bile), sonra yalnızca birinci ve ikinci değişkeni, vb. İçeren ikinci bir denklem bulun. polinom sistemlerinin; en iyi bilinen Groebner temel teorisidir ve rakip olan düzenli zincirlerin teorisidir.

Bilgisayar cebir sisteminde Maple (tam açıklama: onlar için çalışıyorum) her ikisi de uygulanır. solveKomut genellikle inanıyorum Groebner temeli yöntemini çağırır ve bu hızla benim laptop durma noktasına biler. Düzenli zincir hesaplamasını çalıştırmayı denedim ve sabrımdan daha uzun sürüyor, ancak bellek açısından kötü görünmüyor. İlgileniyorsanız, kullandığım komutun yardım sayfası burada ve kullandığım kod:

restart;
sys, vars := {theta*H - rho_p*sigma_p*
       Cp*(Us/N) - rho_d*sigma_d*D*(Us/N)*rho_a*sigma_a*
       Ca*(Us/N) = 0, 
         rho_p*sigma_p*Cp*(Us/N) + rho_d*sigma_d*
       D*(Us/N)*rho_a*sigma_a*Ca*(Us/N) + theta*H = 0, 
         (1/omega)*Ua - alpha*Up - rho_p*psi_p*
       Up*(H/N) - Mu_p*sigma_p*Up*(Cp/N) - 
             Mu_a*sigma_a*Up*(Ca/N) - Theta_p*
       Up + Nu_up*(Theta_*M + Zeta_*D) = 0, 
         alpha*Up - (1/omega)*Ua - rho_a*psi_a*
       Ua*(H/N) - Mu_p*sigma_p*Ua*(Cp/N) - 
             Mu_a*sigma_a*Ua*(Ca/N) - Theta_a*
       Ua + Nu_ua*(Theta_*M + Zeta_*D) = 0, 
         (1/omega)*Ca + Gamma_*Phi_*D + rho_p*psi_p*
       Up*(H/N) + Mu_p*sigma_p*Up*(Cp/N) + 
             Mu_a*sigma_a*Up*(Ca/N) - alpha*Cp - Kappa_*
       Cp - Theta_p*Cp + Nu_cp*(Theta_*M + Zeta_*D) = 0, 
         alpha*Cp + Gamma_*(1 - Phi_)*D + rho_a*psi_a*
       Ua*(H/N) + Mu_p*sigma_p*Ua*(Cp/N) + 
             Mu_a*sigma_a*Ua*(Ca/N) - (1/omega)*
       Ca - Kappa_*Tau_*Ca - Theta_a*Ca + 
             Nu_ca*(Theta_*M + Zeta_*D) = 
     0, Kappa_*Cp + Kappa_*Tau_*Ca - Gamma_*Phi_*
       D - Gamma_*(1 - Phi_)*D - 
             Zeta_*D + Nu_d*(Theta_*M + Zeta_*D) = 0, 
    Us + H + Up + Ua + Cp + Ca + D = 0, 
         Up + Ua + Cp + Ca + D = 0}, {Us, H, Up, Ua, Cp, Ca, D, N, 
    M}:

sys := subs(D = DD, sys):
vars := subs(D = DD, vars):
params := indets(sys, name) minus vars:
ineqs := [theta > 0 , rho_p > 0 , sigma_p > 
       0 , rho_d > 0 , sigma_d > 0 , 
            rho_a > 0 , sigma_a > 0 , 
      omega > 0 , alpha > 0 , psi_p > 0 , Mu_p > 0 , 
            Mu_a > 0 , Theta_p > 0 , Nu_up > 0 , Theta_ > 
       0 , Zeta_ > 0 , psi_a > 0 , 
            Theta_a > 0 , Nu_ua > 0 , Gamma_ > 0 , Phi_ > 
       0 , Kappa_ > 0 , Nu_cp > 0 , 
            Tau_ > 0 , Nu_ca > 0]:
with(RegularChains):
R := PolynomialRing([vars[], params[]]):
sys2 := map(numer, map(lhs - rhs, normal([sys[]]))):
sol := LazyRealTriangularize(sys2,[],map(rhs, ineqs),[],R);

7

Profesyonel yol, denklemlerinizi AMPL veya GAMS gibi bir modelleme dilinde yazmak ve IPOPT gibi bir çözücü ile çözmektir.

AMPL ticari bir sistemdir, ancak AMPL'nin ücretsiz bir öğrenci sürümü 300'e kadar denklem ve değişkenle sorun yaratabilir.

Sadece bir veya birkaç problemi çözmek istiyorsanız, optimizasyon için NEOS sunucusunu kullanarak çevrimiçi olarak özgürce çözülmesini sağlayabilirsiniz - sadece AMPL açıklamasını gönderin ve cevabın size geri dönmesini bekleyin.

Bu sistemleri daha büyük bir çalışmanın parçası olarak tekrar tekrar çözmeniz gerekiyorsa (örn. Parametreleri değiştirme), IPOPT'u (çok liberal bir lisans altındaki yazılımdır) indirmelisiniz.

Düzenleme: Anlaşılır olan sembolik çözümlerin genellikle oldukça küçük problemlerle sınırlı olduğunu unutmayın - genellikle Groebner tabanının büyüklüğü değişkenlerin sayısı veya polinomların derecesi ve daha fazla işlem süresi ile patlayıcı bir şekilde büyür. Bu yüzden Mathematica ile bir saat veya daha uzun bir bekleme süresi, sembolik çözümünüzün tamamen anlaşılmaz olacağının bir işareti (bir kanıt olmasa da). Dahası, böyle uzun bir ifadeyi değerlendirmenin sayısal olarak kararsız olması muhtemeldir, bu nedenle anlamlı sonuçlar elde etmek için değerlendirmede yüksek hassasiyete ihtiyacınız olacaktır.


6

Tüm çözümü yazmak mantık içinde imkansızdır. Ancak sistemi biraz düşürmek için bazı denklemler:

US denklem 1 ve 2 dışındaki herhangi bir denklemde görünmez. Ayrıca, bu denklemler bağımlı bir kümedir (denklem 1, denklem 2'nin çarpı 2'dir), bu nedenle denklem 1 için çözülebilir US diğer tüm değişkenler açısından ve denklem 2 atılabilir.

US=HNθ(γ+ζ)CAKA+Cp+KD
nerede KA=γρAσA+κρDσDτ+ρAσAζ ve KD=γρpσp+κρDσD+ρpσpζ

Denklem 7 tüm değişkenlerde lineerdir ve çözmek için yeniden düzenlenebilir D:

D=κ(CAτ+Cp)γ+ζ.

Ortaya çıkan ifade, kalan değişkenler için CA ve CP; sadece 6 bağımsız denklemimiz olduğundan, yapabileceğimiz en iyi şey sistemi iki değişkente bir denkleme indirmektir.

Neyse ki, 3 ve 5 denklemlerini birlikte eklemek tüm değişkenlerde doğrusal olan ve UA veya UP. Denklem 4 ve 6'nın birlikte eklenmesi, tüm değişkenlerde doğrusal olan ve bunun için çözülebilen bir denklem de verir.UA veya UP (3 ve 5 denklemlerini birlikte eklerken hangisi için çözülmediyse).

Bu noktada, ifadelerimiz olmalı. UA ve UP açısından H, CA, ve CP (çünkü ortadan kaldırabilirsiniz Dyukarıdaki ifadeyi kullanarak). 1, 2, 5, 6 ve 7 denklemlerini kullandık; 3 ve 4 denklemlerini koruyacağız çünkü daha basitler.

Çözmek için 3 veya 4 denklemini kullanabiliriz. H açısından CA ve CP. Daha sonra, gerekli tüm ikameleri yaparken, kalan denklem sadeceCA ve CP. Bu denklemin kökleri sistemin kararlı durumlarını belirleyecektir; bu kökleri sembolik olarak bulmak mümkün olabilir veya olmayabilir.

İyi şanslar!


US1 ve 2 denklemleri dışında herhangi bir denklemde görünmüyor. 1, 2 ve 7 denklemlerini ortadan kaldırdığınızı varsayıyorum. (Bunlar çözülmesi en kolay olanlardır.) 3 ve 5 denklemlerini eklemek size tüm değişkenlerde doğrusal olan bir denklem verir, ve böylece çözülmesi kolaydır. Benzer şekilde, 4 ve 6 denklemlerini eklemek size tüm değişkenlerde doğrusal olan ve böylece çözülmesi kolay bir denklem verir. Böylece 7'nin 4 değişkeniyle ilgilenir (D, UA, UP, ve US), böylece her şey H, CA, ve CP.
Geoff Oxberry

Bu noktada, 3 ve 4 denklemlerimiz kaldı. (Denklem 5 ve 6'nın daha fazla terimi vardır, hadi bunları atalım.) Bunlardan birini çözmek için kullanabilirsiniz.H açısından CA ve CPve bu noktada, iki değişken açısından tek bir denklem vardır: CA ve CP, bu durumda denklemleri tamamen yanlış anlamadığım sürece sembolik çözümler bulmak daha kolay olabilir.
Geoff Oxberry

Kesinlikle doğru. @GeoffOxberry, sanırım yorumlarınızı doğrudan ja72'nin cevabına eklemelisiniz.
David Ketcheson

@DavidKetcheson: Tamamlandı; Ben vikileştirmekten endişe etmiyorum, çünkü temsilci önemli değil. Henüz geri dönmedim ve sembolik manipülasyonları doldurmadım.
Geoff Oxberry

3

Denklemlerinizin yapısına bağlıdır.

Denklem setinizin tüm kararlı durumlarını arıyorsanız ve ErikP'nin polinomlara söylediği gibi bunları yeniden düzenleyebiliyorsanız, tüm sayısal çözümleri yüksek hassasiyete hesaplamak için gerçek cebirsel geometriden yöntemleri kullanabilirsiniz. Bertini bildiğim bir paket, ama başkaları da var. Notre Dame'de birkaç yıl önce Bertini'nin kimyasal kinetikten ODE'lerin sabit durumlarını bulmak için kullanıldığı bir konferansa gittim; Bertini Notre Dame'de geliştirildi.

Başka bir olasılık MD Stuber, V. Kumar ve PI Barton, BIT Sayısal Matematik 50 (4), 885-917, DOI: DOI: 10.1007 / s10543-010-0280-6 ; bu yöntemler denklem sisteminin polinom olmasını gerektirmez. Paul Barton benim danışmanım ve Matt Stuber benim bir meslektaşım; İsterseniz, yazılımı isteyebilir ve size gönderebilirim. Bu makale global optimizasyon ve aralık aritmetiği yöntemlerini (ArnoldNeumaier'in kitabından bahsediyor) ve Newton'un yöntemini kullanıyor. Bu yöntemin avantajı, tüm çözümleri bulmasıdır; dezavantajı karmaşık olmasıdır.

Açık değilse, ArnoldNeumaier bunu çözmek yerine F(x)=0 doğrudan Newton'un yöntemi gibi bir şey kullanarak (genellikle iyi bir başlangıç ​​tahmini verirseniz, bir çözüme yeterince yakın) çalışır, çözersiniz

minxSF(x),

burada , çözmeye çalışmak yerine probleminizle ilgili kısıtlamalar ile tanımlanan bazı uygulanabilir bir kümedir. Çok kaba bir seviyede, doğrusal olmayan doğrusal bir programlama çözücüsü kullanmak, Newton'un yöntemini kullanmaya benzer, sağlamlık ve performans için ek algoritmik karmaşıklık. IPOPT bu amaç için gerçekten iyi bir yazılım parçasıdır; Orada diğer çözücülerin bir litani var (sadece GAMS , AMPL veya NEOS için mevcut çözücüler listesine bakın . Böyle bir yöntem seçerseniz, birkaç uyarıdan haberdar olun:S

  • Bir seferde en fazla bir çözüm bulacaktır. Ek çözümler bulmak için, bulduğunuz önceki çözümlerin tümünü hariç tutan kısıtlamalar eklemeniz gerekir.
  • Optimizasyon probleminiz dışbükeyse, IPOPT veya benzer çözücüler kullanmak için, denklemlerinizin bir çözümüne (Newton'un yöntemiyle aynı temel ilke) yakın bir yerde iyi bir başlangıç ​​tahminine veya BARON , Couenne , Bonmin gibi bir dışbükey olmayan optimizasyon çözücüsüne ihtiyacınız olacaktır. Her dışbükey doğrusal olmayan programlama çözücüsünün performansı probleme bağlı olduğundan, ellerinizi aldığınız her çözücüyü denemelisiniz.

1

Homotopi bir yönteme bakmanızı öneririm. Sembolik olmasa da, probleminizin tüm çözümlerini üretecektir. Kolay bir kütüphaneye göz atmak için:

http://homepages.math.uic.edu/~jan/PHCpack/phcpack.html


Evet! Homotopy devam yöntemleri katlanarak zordur ( başlangıç ​​'başlangıç' koşullarını göz önünde bulundurmanız gerekir ), ancak bu küçük bir sorun için hesaplanabilir olarak izlenebilir ve en aza indirgeme sorununun küresel optimumluğunu garanti edebilirsiniz. 2n
Aron Ahmadia

Ahmadia, açıkçası homotopi yöntemleri ile ilgili literatürü takip etmediniz. Lütfen Jan'ın yayınlarını okuyun ve bu numarayı gözden geçirin.
aterrel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.