Nesne

3: Doğrusal Diofant Denklemleri


3: Doğrusal Diofant Denklemleri

Üç Değişkenli Lineer Diofant Denklemleri

Ancak şimdi iki denklem iki değişkene ($k,l$) ve bir değişkene $l$ bağlıdır. İlk çözümde bir denklem iki değişkene ve iki bir değişkene bağlıdır.

Genel çözüm için wolfram alfa'daki gibi bir temsilden, bir denklem dışında tüm denklemlerin tek bir farklı değişkene bağlı olduğu bir duruma nasıl gelebilirim?

Her zaman böyle bir temsil var mı?


$ax+by+cz = t$

Kanıt (“$Rightarrow$”): Önceki $ax+by = t$ durumuna benzer şekilde ilerler.

Kanıt (“$Leftarrow$”): Daha önce $ax+by = t$ örneğindeki kanıtı genelleyeceğiz.

$gcd(a,b,c) mathrelvert t Rightarrow gcd(a, gcd(b, c)) mathrelvert t Rightarrow balta + gcd(b,c)w = t$ $(x_0, w_0)$ tamsayı çözümüne sahiptir.

$gcd(b,c) = d$ olsun. $var olduğunu biliyoruz (y_0, z_0)$ öyle ki: egin b y_0 + c z_0 = d end Önceki denklemde yerine şunu elde ederiz: egin ax_0 + gcd(b,c)w_0 &= tLeftrightarrow ax_0 + dw_0 &= tLeftrightarrow ax_0 + (b y_0 + c z_0) w_0 &= tLeftrightarrow ax_0 + b w_0 y c w_0 z_0 &= t end Bu nedenle, bir tamsayı çözümü $(x_0, y_0 w_0, z_0 w_0)$'dır.

teorem (2'de Bölüm 6.2'den itibaren): Bu durumda, eğer $(x_0, y_0, z_0)$ bir tamsayı çözümse, tüm tamsayı çözümleri şu şekildedir: egin x &= x_0 + m b / gcd(a,b) - ell c / gcd(a,c)
y &= y_0 + k c / gcd(b,c) - m a / gcd(a, b)
z &= z_0 + ell a / gcd(a, c) - k b / gcd(b, c) end Burada $m,ell,k$ tam sayılardır ve $a,b$ veya $c$'dan en az biri $ e 0$'dır.

$ax+by+cz = 0$

Bu durumda, tüm tamsayı çözümleri şu şekildedir: egin x &= m b / gcd(a,b) - ell c / gcd(a,c)
y &= k c / gcd(b,c) - m a / gcd(a, b)
z &= ell a / gcd(a, c) - k b / gcd(b, c) end Burada $m,ell,k$ isteğe bağlı tam sayılardır.

Bir örnek

$n=3$ boyutundaki bir Catalano-Fiore vektör taahhüdünde (VC) 3, çarpışma direnci, $(ell+1)$-bit asal sayılarına sahip aşağıdaki denklemin $e_1,e_2,e_3$ $ell$-bit tamsayı çözümleri yok:

[e_2 e_3 v_1 + e_1 e_3 v_2 + e_1 e_2 v_3 = 0]

Yukarıdaki formül tarafından verilen tek tamsayı çözümleri en az $ell+1$ bit genişliğindedir: egin %x &= frac\
% &= frac = (m-ell)e_1
x &= m (e_1 e_3) / gcd(e_2 e_3, e_1 e_3) - ell (e_1 e_2) / gcd(e_2 e_3, e_1 e_2) =
&= m (e_1 e_3) / e_3 - ell (e_1 e_2) / e_2 = m’ e_1 ( ext m’=m-ell)
y &= k’ e_2
z &= ell’ e_3 end


Python3

Bu nasıl çalışıyor?
‘a’ ve ‘b’'nin GCD'si ‘g’ olsun. g a ve b'yi böler. Bu, g'nin de (ax + by) böldüğü anlamına gelir (eğer x ve y tam sayılarsa). Bu, gcd'nin ‘c’'yi ax + ile = c ilişkisini kullanarak böldüğü anlamına gelir. Daha fazla ayrıntı için bu wiki bağlantısına bakın.
Bu makale katkıda bulunan Ashutosh Kumar. GeeksforGeeks'i seviyorsanız ve katkıda bulunmak istiyorsanız, bir makale yazıp makalenizi [email protected] adresine postalayabilirsiniz. Makalenizi GeeksforGeeks ana sayfasında görün ve diğer Geeklere yardım edin.Yanlış bir şey bulursanız veya yukarıda tartışılan konu hakkında daha fazla bilgi paylaşmak istiyorsanız lütfen yorum yazın.

Dikkat okuyucu! Don's şimdi öğrenmeyi bırak. Rekabetçi programlama için tüm önemli matematiksel kavramlara sahip olun. CP Kursu için Temel Matematik öğrenci dostu bir fiyata. Bir dil öğrenmekten DS Algo'ya ve çok daha fazlasına kadar olan hazırlığınızı tamamlamak için lütfen bkz. Komple Mülakat Hazırlık Kursu.


Programlamada Lineer Diophant denklemleri nasıl çözülür?

ax+by=c gibi Doğrusal Diofant denklemleri hakkında okudum, diofant denklemleri olarak adlandırılır ve yalnızca gcd(a,b) c'yi bölerse bir tamsayı çözümü verir.

Bu denklemler programlama yarışmalarında büyük önem taşır. Bu sorunla karşılaştığımda internette araştırıyordum. Diophantine denklemlerinin bir varyasyonu olduğunu düşünüyorum.

İki kişim var, X Kişisi ve Y Kişisi bir ipin ortasında duruyorlar. X kişisi tek bir hareketle A veya B birimlerini sola veya sağa atlayabilir. Y kişisi tek hareketle C veya D birimlerini sola veya sağa atlayabilir. Şimdi, bana bir K numarası verildi ve hayır'ı bulmam gerekiyor. [-K,K] aralığında ip üzerindeki olası konumların sayısı, öyle ki her iki kişi de kendi filmlerini herhangi bir sayıda kullanarak bu konuma ulaşabilir. (A,B,C,D ve K soruda verilmiştir).

Diofant denklemleri kullanılarak problemin matematiksel olarak çözülebileceğini düşünüyorum.

X Kişisi için A x_1 + B y_1 = C_1 gibi bir denklem oluşturabilirim, burada C_1 [-K,K]'ye aittir ve benzer şekilde C x_2 + D y_2 = C_2 gibi Y Kişisi için C_2'nin [-K,K]'ye ait olduğu bir denklem oluşturabilirim.

Şimdi arama alanım, yalnızca C_1 ve C_2'nin aynı olduğu olası değerlerin sayısını bulmaya indirgeniyor. Bu soruna cevabım bu olacak.

Bu değerleri bulmak için sadece gcd(A,B) ve gcd(C,D) buluyorum ve ardından lcm bu ikisinden gcdLCM(gcd(A,B),gcd(C,D)) almak ve ardından [1,K] aralığında bunun katları olan noktaların sayısını hesaplamak lcm.

Son cevabım [1,K] + 1 içinde 2*no_of_multiples olacak.

Aynı tekniği C++ kodumda kullanmayı denedim ama çalışmıyor (Yanlış Cevap).

Sorum şu: Diofant denklemlerini doğru kullanıp kullanmadığımı kimse söyleyebilir mi?

Evet ise, herhangi biri bana mantığımın başarısız olduğu olası durumları söyleyebilir.

Bunlar, sitede sorun bildirimi ile verilen test durumlarından bazılarıdır.

A B C D K aynı sırayla giriş olarak verilir ve karşılık gelen çıkış sonraki satırda verilir:

Bu, orijinal sorunun bağlantısıdır. Orijinal soruyu basit bir dille yazdım. Zor bulabilirsin, ama istersen kontrol edebilirsin:

Lütfen bana bazı test durumları verin, böylece nerede yanlış yaptığımı anlayabilirim?


3: Doğrusal Diofant Denklemleri

Cebir sınavıma hazırlanmak için yazılımını kullandım. Adım adım çözüm sürecini ve açıklamalarını çok beğendim.
J.R. Turnston, NY

Bu bir mucize! İşe yarayacak gibi görünüyor. Neredeyse tüm sorunları çözmeye çok yaklaştım ve bu program dualarıma cevap verdi!
John Doer, Teksas

Herhangi bir sorunum yok. Ürününüzü aldığıma memnun olduğumu bildirmek istedim. Ayrıca, yalnızca daha iyi görünen bir ürün sağlamakla kalmayıp, aynı zamanda işler artık daha kullanıcı dostu göründüğü için güncellemeleri takdir ediyorum.
Daniel Cotton, NV

Bu cebir yazılımı, kızıma çözmesi için problemler sunmadan önce gerçekler ve faydalı ipuçları sunarak bağımsız olarak öğrenme yeteneği sağlar. Çok iyi gidiyor. . . Yazılımın, normal bir sınıfta aldıkları herhangi bir materyali tamamlayarak yıl boyunca öğrencilere yardımcı olmaya çok uygun olduğunu düşünüyorum.
Christopher Bowman, Teksas

Karşılaştığım en değerli cebir öğretmeni. Sadece temel öğrencilere değil, aynı zamanda ileri cebir yapan öğrencilere de hitap eder. Her adımın açıklamasının eşlik ettiği problemlere adım adım çözüm, bu yazılımı paha biçilmez bir matematiksel araç haline getiriyor.
Lisa Schuster, New York


Doğrusal diofant denklemleri hesaplayıcısı

İki değişkenli lineer diofant denklemi, formun denklemidir:

Bu hesap makinesi, sürekli bir kesir olarak yazılan genişletilmiş Öklid algoritmasına dayanmaktadır. Ancak bazı durumlarda (örneğin katsayı olduğunda) daha basit yöntemler kullanılır. Ayrıca, hesap makinesi, katsayılarından en az biri veya eşit olan denklemleri dikkate almaz, çünkü bu durumlar sıradan doğrusal denkleme yol açar.

Katsayı 'ye bölünmezse, iki değişkenli lineer diofant denkleminin çözümü yoktur. Aksine, eğer bölünürse, belirtilen denklemin tamsayılarda sonsuz sayıda çözümü vardır.

İki değişkenli doğrusal bir diofant denklemini çözmek için, önce belirli bir çözüm bulmalı ve sonra formülleri kullanarak genel çözümü bulmalısınız:

Bir çözümün bir örneğini düşünün lineer diofant denklemi iki değişkende:

Denklemin katsayıları: .

ile bölündüğünden, bu denklemin tamsayılarda çözümleri vardır.

Ardından, orijinal denklemin belirli (belirli) bir çözümünü bulun. Bunu yapmak için, önce belirli bir çözüm ve katsayılı yardımcı denklemin bulunması gerekir:

ve sonra elde edilen özel çözümü ve yardımcı denklemi şu ile çarpın ve özel bir çözüm ve orijinal denklemi elde edin:

Yardımcı denklemin belirli bir çözümünü bulmak için sürekli kesirler kullanırız. Bunu yapmak için, katsayıların oranı olan bir kesir oluşturuyoruz ve а знаменателем коэфициент .

Bu kesri sürekli kesre dönüştürün:

Elde edilen sürekli fraksiyonda, son fraksiyonu atın:

Ortaya çıkan kesir, belirli çözümlerin oranıdır ve doğru işaretle seçilir:

Bir yardımcı denklemde dört değeri değiştirerek, belirli bir çözümün şu olduğunu belirleyin:

Şimdi, belirli bir çözümü ve orijinal denklemi bulmak için, elde edilen özel çözümü ve yardımcı denklemi şu şekilde çarparız:

Son olarak, genel çözüm için formülleri kullanarak nihai cevabı bulun:

Çevrimiçi hesap makinemiz, adım adım çözümle iki bilinmeyenli herhangi bir doğrusal diofant denklemini çözebilir. Başlamak için, denklemin girilmesi ve bulunacak değişkenlerin ayarlanması gerekir.


Soru : 10.11 Program 3: Lineer Diophantine Denklemleri Öğrenciler, Bu içerik eğitmeniniz tarafından kontrol edilmektedir ve zyBook içeriği değildir. Bu içerikle ilgili sorularınızı veya endişelerinizi eğitmeninize yöneltin. zyLab gönderim sistemiyle ilgili herhangi bir teknik sorununuz varsa, alttaki "Laboratuvarda sorun mu var?" düğmesini kullanın. Bu PROGRAM'da doğrusal çözeceksiniz.

Bu içerik eğitmeniniz tarafından kontrol edilir ve zyBook içeriği değildir. Bu içerikle ilgili sorularınızı veya endişelerinizi eğitmeninize yöneltin. zyLab gönderim sistemiyle ilgili herhangi bir teknik sorununuz varsa, "Laboratuvarla ilgili sorun mu var?" alttaki düğme.

Bu PROGRAM'da lineer Diophant denklemlerini özyinelemeli olarak çözeceksiniz.

Doğrusal bir Diofant denklemi şu şekilde bir denklemdir:

burada a, b ve c'nin tümü tam sayılardır ve çözümler de tamsayı olacaktır.

Wikipedia'da şu girdiye bakın: Doğrusal Diofant denklemleri.

Bunu, Bezout'un kimliğinde x ve y tamsayılarını bulmak için Genişletilmiş Öklid algoritmasının özyinelemeli sürümünü kullanarak çözeceksiniz:

Bir En Büyük Ortak Bölen yardımcı işlevine ihtiyacınız olacak gcd(int x, int y):

GCD için özyinelemeli bir algoritma:

x mod y 0 ise, x ve y'nin GCD'si y'dir
aksi halde OBEB, y'nin OBEB'i ve x/y'nin geri kalanıdır

Gerekli Özyinelemeli İşlev

gcd(a,b) c'yi bölmezse, çözüm yoktur.

b a'yı bölerse (a / b'nin kalanı 0'dır), o zaman çözümü elde etmek için b'ye bölebilirsiniz: x = 0, y = c / b.

Aksi takdirde (b a'yı bölmez), bir ikame yöntemi ile orijinal problemin daha basit bir versiyonunu bulabilir ve daha basit problemi özyineleme kullanarak çözebiliriz.

burada q (a / b) (tamsayı bölümü kullanılarak) ve r kalandır (a % b).

Şimdilik (bq + r) yerine koymak:

ve şimdi aynı formda denklemimiz var, sadece daha küçük katsayılarla:

Son olarak, orijinal sorunun bu daha basit versiyonunda işlevinizi yinelemeli olarak çağırırsınız. Bu özyinelemeli çağrının aslında bu durumda u ve vin için çözeceğini unutmayın, bu nedenle orijinal sorunun çözümünü elde etmek için yine de x ve y'yi çözmeniz gerekir:


Üç değişkenli doğrusal diofantin vaat problemi

$(a,b,c)=1$ olacak şekilde $a,b,c,sinBbb N$ verildiğinde, en fazla böyle bir $x,y,zinBbb N$ üçlüsüne sahip olduğumuz sözü verilir $ax+by+cz=s$, böyle bir üçlü bulmak veya boş dönmek için $O(log(abcs))$ zamanında çalışan iyi bir algoritma nedir?

FrobeniusSolve'u bu kabul edilen cevaptaki yorumlarda önerildiği gibi kullanmaya çalışıyorum burada üç sayı için Frobenius numarası. Ancak oldukça yavaş görünüyor (bu, $abcs$'da logaritmik görünmüyor).

$mathsf içinde uygulanan bu yöntemin karmaşıklığı nedir?$? $O(log(abcs))$ zaman karmaşıklığı yöntemi veya buna yakın bir şey var mı?


İki Değişkenli Lineer Diofant Denklemleri

Ücretsiz Wolfram Player veya diğer Wolfram Language ürünleriyle masaüstünde, mobilde ve bulutta etkileşim kurun.

İki değişkenli doğrusal bir Diophant denklemi şu şekildedir: , ile birlikte , , ve tamsayılar, tamsayılarda çözümler aranır. Karşılık gelen homojen denklem ve her zaman sonsuz sayıda çözümü vardır , nerede bir tamsayıdır. Eğer homojen olmayan denklemin bir çözümüdür, tüm çözümleri şu şekildedir . Sanmak ve pozitif ve göreli asaldır. Ardışık iki çözüm arasındaki uzaklık , bu nedenle denklemin her zaman negatif olmayan tamsayılarda bir çözümü vardır. .

Katkıda bulunan: Izidor Hafner'sxA0 (Ocak 2014)
Kod kaynağı: Emmanuel Garces Medina
CC BY-NC-SA kapsamında lisanslı açık içerik


Videoyu izle: LINEAR DIOPHANTINE EQUATION With Proof.. (Aralık 2021).