Matematiksel Altyapı
A gerçek sayıların bir N by N matrisi, N gerçek sayıların ba vektörü ve xa vektör N bilinmeyen gerçek sayıların olsun. Bir matris denklemi Ax = b'dir.
Jacobi'nin yöntemi şöyledir: ayrıştırma A = D + R; burada D, diyagonallerin matrisidir ve R, kalan girdilerdir.
ilk tahmin çözümünü x0 yaparsanız, gelişmiş bir çözüm x1 = ters (D) * (b - Rx) olur, burada tüm çarpmalar matris-vektör çarpımı ve ters (D) matris tersidir.
Sorun özellikleri
- Girdi : Tüm programınız girdi olarak şu verileri kabul etmelidir: A matrisi, b vektörü, bir ilk tahmin x0 ve bir 'hata' sayısı e.
- Çıktı : Program, en son çözümün gerçek çözümden en fazla e farklı olması için minimum yineleme sayısını vermelidir. Bu, vektörlerin mutlak büyüklükteki her bir bileşeninin en fazla e kadar değiştiği anlamına gelir. Yinelemeler için Jacobi'nin yöntemini kullanmalısınız.
Verilerin nasıl girildiği sizin seçiminizdir ; bir komut satırında kendi sözdiziminiz olabilir, ne seçerseniz seçin bir dosyadan girdi alabilirsiniz.
Nasıl veriler çıkarılmaktadır olan seçim ; bir dosyaya yazılabilir, komut satırında görüntülenebilir, ASCII sanatı olarak yazılabilir, her şey, bir insan tarafından okunabildiği sürece.
Daha fazla ayrıntı
Size gerçek çözüm verilmez: gerçek çözümü nasıl hesapladığınız tamamen size bağlıdır. Örneğin Cramer kuralıyla veya doğrudan tersini hesaplayarak çözebilirsiniz. Önemli olan yinelemeleri karşılaştırabilmek için gerçek bir çözümünüz olması.
Hassasiyet bir konudur; bazı insanların karşılaştırma için 'kesin çözümleri' farklı olabilir. Bu kod golf amaçları için kesin çözüm 10 ondalık basamağa kadar doğru olmalıdır.
Kesinlikle net olmak gerekirse, mevcut yineleme çözümünüzün bir bileşeni bile gerçek çözümdeki ilgili bileşenini e ile aşarsa, yinelemeyi sürdürmeniz gerekir.
N'nin üst sınırı, kullandığınız donanımı ve programı çalıştırmak için ne kadar zaman harcamak istediğinize bağlı olarak değişir. Bu kod golf amacıyla, maksimum N = 50 olduğunu varsayın.
Ön koşullar
Programınız çağrıldığında, aşağıdakilerin her zaman geçerli olduğunu varsaymakta özgürsünüz:
- N> 1 ve N <51, yani asla bir skaler denklem, her zaman bir matris denklemi verilmeyecektir.
- Tüm girdiler gerçek sayılar alanı üzerindedir ve asla karmaşık olmayacaktır.
- A matrisi her zaman yöntemin gerçek çözüme yaklaşacağı şekildedir, böylece hatayı (yukarıda tanımlandığı gibi) en aza indirmek veya her zaman e'ye eşitlemek için her zaman bir dizi yineleme bulabilirsiniz.
- A asla sıfır matris veya kimlik matrisi değildir, yani bir çözüm vardır.
Test Durumları
A = ((9, -2), (1, 3)), b = (3,4), x0 = (1,1), e = 0.04
Gerçek çözüm (0.586, 1.138) 'dir. İlk iterasyon, gerçek çözeltiden 0.04'ten fazla, x1 = (5/9, 1), en az bir bileşen verir. Başka bir yinelemeyle, x2 = (0.555, 1.148), 0.04'ten (0.586, 1.138) farklıdır. Böylece çıktı
2
A = ((2, 3), (1, 4)), b = (2, -1), x0 = (2.7, -0.7), e = 1.0
Bu durumda gerçek çözüm (2.2, -0.8) 'dir ve ilk tahmin x0 zaten e = 1.0'dan daha az hataya sahiptir, bu nedenle 0 çıkarırız. Yani, bir yineleme yapmanız gerekmediğinde,
0
Başvuru Değerlendirmesi
Bu kod golf, burada tüm standart boşluklar izin verilmiyor. En kısa doğru tam program (veya işlev), yani en düşük bayt sayısı kazanır. Bu edilir cesaretini bir fonksiyonun içine gerekli adımları bir sürü sarmak, ancak istedikleri dili kullanma Mathematica gibi kullanım şeyler.