Články

3: Lineárne diofantické rovnice


3: Lineárne diofantické rovnice

Lineárne diofantické rovnice v troch premenných

Teraz však dve rovnice závisia od dvoch premenných ($ k, l $) a jednej od jednej premennej $ l $. V prvom riešení jedna rovnica závisí od dvoch premenných a dve od jednej premennej.

Ako môžem prísť z reprezentácie, ako je to od wolframu alfa pre všeobecné riešenie, k jednej, kde všetky rovnice závisia od jednej zreteľnej premennej okrem jednej rovnice.

Existuje vždy také zastúpenie?


$ ax + by + cz = t $

Dôkaz („$ Rightarrow $“): Postupuje sa analogicky k prípadu $ ax + predtým = t $.

Dôkaz („$ Leftarrow $“): Dôkaz z prípadu $ ax + zovšeobecníme predtým.

$ gcd (a, b, c) mathrel vert t Rightarrow gcd (a, gcd (b, c)) mathrel vert t Rightarrow sekera + gcd (b, c) w = t $ má celočíselné riešenie $ (x_0, w_0) $.

Nech $ gcd (b, c) = d $. Vieme, že $ existuje (y_0, z_0) $ také, že: begin b y_0 + c z_0 = d koniec Nahradením predchádzajúcej rovnice máme: begin ax_0 + gcd (b, c) w_0 & amp = t Leftrightarrow ax_0 + dw_0 & amp = t Leftrightarrow ax_0 + (b y_0 + c z_0) w_0 & amp = t Leftrightarrow ax_0 + b w_0 y_0 + c w_0 z_0 & amp = t end Celé riešenie teda predstavuje $ (x_0, y_0 w_0, z_0 w_0) $.

Veta (od časti 6.2 v 2): V tomto prípade, ak $ (x_0, y_0, z_0) $ je jedno celočíselné riešenie, potom sú všetky celočíselné riešenia v tvare: begin x & amp = x_0 + m b / gcd (a, b) - ell c / gcd (a, c)
y & amp = y_0 + k c / gcd (b, c) - m a / gcd (a, b)
z & amp = z_0 + ell a / gcd (a, c) - k b / gcd (b, c) end Tu $ m, ell, k $ sú celé čísla a aspoň jeden z $ a, b $ alebo $ c $ je $ ne 0 $.

$ ax + by + cz = 0 $

V takom prípade majú všetky celočíselné riešenia tvar: begin x & amp = m b / gcd (a, b) - ell c / gcd (a, c)
y & amp = k c / gcd (b, c) - m a / gcd (a, b)
z & amp = ell a / gcd (a, c) - k b / gcd (b, c) end Tu $ m, ell, k $ sú ľubovoľné celé čísla.

Príklad

Pri vektorovom záväzku (VC) Catalano-Fiore 3 o veľkosti $ n = 3 $ je odolnosť proti kolízii implikovaná skutočnosťou, že nasledujúca rovnica s $ ( ell + 1) $ - bit pripraví $ e_1, e_2, e_3 $ nemá žiadne $ ell $ -bit celočíselné riešenia:

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

Jediné celočíselné riešenia dané vyššie uvedeným vzorcom sú minimálne $ ell + 1 $ bit široké: begin % x & amp = frac\
% & amp = frac = (m- ell) e_1
x & amp = 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) =
& amp = m (e_1 e_3) / e_3 - ell (e_1 e_2) / e_2 = m ‘e_1 ( text m ‘= m- ell)
y & amp = k ‘e_2
z & amp = ell ‘e_3 end


Python3

Ako to funguje?
Nech je GCD & # 8216a & # 8217 a & # 8216b & # 8217 & # 8216g & # 8217. g rozdeľuje a a b. To znamená, že g tiež vydelí (ax +) (ak x a y sú celé čísla). To znamená, že gcd tiež vydelí & # 8216c & # 8217 pomocou vzťahu, ktorý ax +, = c. Ďalšie podrobnosti nájdete na tomto wiki odkaze.
K tomuto článku prispieva Ashutosh Kumar. Ak máte radi GeeksforGeeks a chceli by ste prispieť, môžete tiež napísať článok a poslať svoj príspevok poštou na adresu [email protected] Prečítajte si váš článok, ktorý sa objavuje na hlavnej stránke GeeksforGeeks, a pomôžte ďalším geekom. Ak nájdete niečo nesprávne alebo chcete zdieľať viac informácií o téme diskutovanej vyššie, napíšte komentáre.

Pozor čitateľ! Don & rsquot prestať učiť sa teraz. Získať všetky dôležité matematické koncepty pre konkurenčné programovanie pomocou Kurz základnej matematiky pre kurz CP za študentskú cenu. Ak chcete dokončiť svoju prípravu od výučby jazyka po program DS Algo a mnoho ďalších, prečítajte si Kompletný kurz prípravy rozhovoru.


Ako vyriešiť lineárne diofantické rovnice v programovaní?

Čítal som o lineárnych diofantických rovniciach, ako napríklad ax + by = c, sa nazývajú diofantické rovnice a poskytujú celočíselné riešenie iba vtedy, ak gcd (a, b) rozdeľuje c.

Tieto rovnice majú veľký význam v programovacích súťažiach. Akurát som hľadal na internete, keď som narazil na tento problém. Myslím, že je to variácia diofantických rovníc.

Mám dve osoby, Osoba X a Osoba Y, obe stoja uprostred lana. Osoba X môže jedným ťahom skákať buď z jednotiek A alebo B doľava alebo doprava. Osoba Y môže jedným ťahom skákať buď z jednotiek C alebo D doľava alebo doprava. Teraz som dostal číslo K a musím nájsť č. možných polôh na lane v rozsahu [-K, K] tak, aby obe osoby mohli dosiahnuť túto pozíciu pomocou svojich príslušných filmov ľubovoľný počet opakovaní. (A, B, C, D a K sú uvedené).

Myslím si, že problém je možné vyriešiť matematicky pomocou diofantických rovníc.

Môžem vytvoriť rovnicu pre osobu X ako A x_1 + B y_1 = C_1, kde C_1 patrí [-K, K] a podobne pre osobu Y ako C x_2 + D y_2 = C_2, kde C_2 patrí [-K, K].

Teraz sa môj vyhľadávací priestor redukuje iba na nájdenie počtu možných hodnôt, pre ktoré sú C_1 a C_2 rovnaké. Toto bude moja odpoveď na tento problém.

Na nájdenie týchto hodnôt iba nájdem gcd (A, B) a gcd (C, D) a potom vezmem lcm z týchto dvoch gcdDostaneme LCM (gcd (A, B), gcd (C, D)) a potom jednoducho vypočítame počet bodov v rozsahu [1, K], ktoré sú násobkami tejto hodnoty lcm.

Moja konečná odpoveď bude 2 * no_of_multiples v jazyku [1, K] + 1.

Rovnakú techniku ​​som skúsil použiť aj v kóde C ++, ale nefunguje to (nesprávna odpoveď).

Moja otázka znie: vie mi niekto povedať, či správne používam diofantické rovnice?

Ak áno, môže mi niekto povedať možné prípady, keď moja logika zlyhá.

Toto sú niektoré z testovacích prípadov, ktoré boli uvedené na stránkach s vyhlásením o probléme.

A B C D K sú dané ako vstup v rovnakom poradí a zodpovedajúci výstup je uvedený na ďalšom riadku:

Toto je odkaz na pôvodný problém. Pôvodnú otázku som napísal jednoduchým jazykom. Môže sa vám to zdať ťažké, ale ak chcete, môžete to skontrolovať:

Dajte mi prosím nejaké testovacie prípady, aby som mohol zistiť, kde robím chybu?


3: Lineárne diofantické rovnice

Použil som váš softvér na prípravu mojej skúšky z algebry. Veľmi sa mi páči postupný postup riešenia a vysvetlenia.
J. R. Turnston, NY

Je to zázrak! Vyzerám, že to pôjde. Som tak blízko pri riešení takmer všetkých problémov a tento program odpovedal na moje modlitby!
John Doer, TX

Nemám žiadne problémy. Len som vás chcel informovať, že som rád, že som si kúpil váš produkt. Oceňujem tiež aktualizácie, pretože nielenže vytvárajú lepšie vyzerajúci produkt, ale zdá sa, že teraz sú aj užívateľsky prívetivejšie.
Daniel Cotton, NV

Tento softvér pre algebru poskytuje mojej dcére schopnosť samostatného učenia sa, poskytuje fakty a užitočné rady skôr, ako poskytne problémy na riešenie. Vychádza to veľmi dobre. . . Myslím si, že softvér pekne pomáha študentom počas celého roka tým, že dopĺňa všetky materiály, ktoré dostanú v bežnej učebni.
Christopher Bowman, TX

Najcennejší lektor algebry, s akým som sa kedy stretol. Poskytuje služby nielen základným študentom, ale aj študentom, ktorí sa venujú pokročilej algebre. Podrobné riešenie problémov sprevádzané vysvetlením každého kroku robí tento softvér neoceniteľným matematickým nástrojom.
Lisa Schuster, NY


Kalkulačka lineárnych diofantických rovníc

Lineárna diofantická rovnica v dvoch premenných je rovnica tvaru:

Táto kalkulačka je založená na rozšírenom euklidovskom algoritme písanom ako pokračujúci zlomok. V niektorých prípadoch (napríklad keď je koeficient) sa však používajú jednoduchšie metódy. Kalkulačka tiež nezohľadňuje rovnice s aspoň jedným z koeficientov alebo rovných, pretože tieto prípady vedú k obyčajnej lineárnej rovnici.

Ak koeficient nie je vydelený, potom lineárna diofantická rovnica v dvoch premenných nemá riešenie. Naopak, ak je delené, potom má zadaná rovnica nekonečne veľa riešení v celých číslach.

Ak chcete vyriešiť lineárnu diofantickú rovnicu v dvoch premenných, musíte najskôr nájsť konkrétne riešenie a potom nájsť všeobecné riešenie pomocou vzorcov:

Zvážte príklad riešenia a lineárna diofantínová rovnica v dvoch premenných:

Koeficienty rovnice:.

Pretože je delená, táto rovnica má riešenia v celých číslach.

Ďalej nájdite nejaké konkrétne (konkrétne) riešenie a pôvodnú rovnicu. Aby ste to dosiahli, musíte najskôr nájsť konkrétne riešenie a pomocnú rovnicu s koeficientom:

a potom vynásobte získané konkrétne riešenie a pomocnú rovnicu a získajte konkrétne riešenie a pôvodnú rovnicu:

Na nájdenie konkrétneho riešenia pomocnej rovnice použijeme spojité zlomky. Za týmto účelom zostavíme zlomok, ktorý je pomerom koeficientov a а знаменателем коэффициент.

Transformujte tento zlomok na súvislý zlomok:

Vo výslednej pokračujúcej frakcii zahoďte poslednú frakciu:

Výsledný zlomok je pomer konkrétnych riešení a zvolený so správnym znamienkom:

Dosadením štyroch hodnôt do pomocnej rovnice určite, že konkrétne riešenie je:

Teraz, aby sme našli konkrétne riešenie a pôvodnú rovnicu, vynásobíme získané konkrétne riešenie a pomocnú rovnicu:

Nakoniec nájdite konečnú odpoveď pomocou vzorcov pre všeobecné riešenie:

Naša online kalkulačka je schopná vyriešiť ľubovoľnú lineárnu diofantínovú rovnicu s dvoma neznámymi pomocou postupného riešenia. Na začiatok je potrebné zadať rovnicu a nastaviť hľadané premenné.


Otázka: 10.11 Program 3: Lineárne diofantické rovnice Študenti, Tento obsah riadi váš inštruktor a nejde o obsah zyBook. Otázky alebo obavy týkajúce sa tohto obsahu smerujte na vášho inštruktora. Ak máte akékoľvek technické problémy so systémom podávania zyLab, použite tlačidlo & quotTrouble with lab? & Quot v dolnej časti. V tomto PROGRAME budete riešiť lineárne

Tento obsah riadi váš inštruktor a nejde o obsah zyBook. Otázky alebo obavy týkajúce sa tohto obsahu smerujte na vášho inštruktora. Ak máte akékoľvek technické problémy so systémom podávania zyLab, použite „Problémy s laboratóriou?“ tlačidlo v dolnej časti.

V tomto PROGRAME budete riešiť lineárne diofantické rovnice rekurzívne.

Lineárna diofantínová rovnica je rovnica v tvare:

kde a, b a c sú všetky celé čísla a riešenia budú tiež celé čísla.

Pozri nasledujúcu položku na Wikipédii: Lineárne diofantické rovnice.

Toto budete riešiť pomocou rekurzívnej verzie rozšíreného euklidovského algoritmu na nájdenie celých čísel x a y v identite Bezouta:

Budete potrebovať najväčšiu pomocnú funkciu spoločného deliteľa gcd (int x, int y):

Rekurzívny algoritmus pre GCD:

GCD x a y je y, ak x mod y je 0
inak GCD je GCD y a zvyšok x / y

Požadovaná rekurzívna funkcia

Ak gcd (a, b) nerozdeľuje c, potom neexistuje riešenie.

Ak b delí a (zvyšok a / b je 0), potom stačí deliť b, aby ste dostali riešenie: x = 0, y = c / b.

V opačnom prípade (b nerozdeľuje a), pomocou substitučnej metódy môžeme prísť s jednoduchšou verziou pôvodného problému a vyriešiť jednoduchší problém pomocou rekurzie.

kde q je (a / b) (s použitím celočíselného delenia) ar je zvyšok (a% b).

Striedanie (bq + r) v tejto chvíli:

a teraz máme rovnicu v rovnakom tvare, len s menšími koeficientmi:

Na záver rekurzívne zavoláte svoju funkciu na túto jednoduchšiu verziu pôvodného problému. Nezabudnite, že toto rekurzívne volanie v tomto prípade skutočne vyrieši u a vin, takže aby ste dostali riešenie pôvodného problému, musíte ešte vyriešiť x a y:


Troj premenný lineárny diofantín sľubuje problém

Vzhľadom na $ a, b, c, s in Bbb N $ také, že $ (a, b, c) = 1 $ s prísľubom, že máme najviac jeden trojitý $ x, y, z in Bbb N $ taký že $ ax + by + cz = s $, aký je dobrý algoritmus, ktorý beží v čase $ O ( log (abcs)) $ na nájdenie takejto trojky alebo návrat prázdny?

Snažím sa používať FrobeniusSolve podľa odporúčaní v komentároch v tejto prijatej odpovedi tu Frobenius číslo pre tri čísla. Avšak zdá sa to dosť pomalé (to sa nezdá logaritmické v $ abcs $).

Aká je zložitosť tejto metódy, ktorá je implementovaná v $ mathsf$? Existuje metóda časovej zložitosti $ O ( log (abcs)) $ alebo niečo podobné?


Lineárne diofantické rovnice v dvoch premenných

Interakcia na počítači, mobile a cloude s bezplatným prehrávačom Wolfram Player alebo inými produktmi Wolfram Language.

Lineárna diofantínová rovnica v dvoch premenných má tvar , s , a celé čísla, kde sa riešenia hľadajú v celých číslach. Zodpovedajúca homogénna rovnica je , a vždy má nekonečne veľa riešení , kde je celé číslo. Ak je riešením nehomogénnej rovnice, všetky jej riešenia majú tvar . Predpokladajme a sú pozitívne a relatívne prvočísla. Potom je vzdialenosť medzi dvoma po sebe nasledujúcimi riešeniami , takže rovnica má vždy riešenie v nezáporných celých číslach, ak .

Prispievateľ: Izidor Hafner & # xA0 (január 2014)
Kód od: Emmanuel Garces Medina
Otvorený obsah s licenciou podľa CC BY-NC-SA


Pozri si video: Linearni rovnice 001 (Október 2021).