Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
surovec napsal(a):
↑↑ laszky:
hlavně ten objev rovnosti
O mnoho cennější než samotná rovnost je vědět jak takovou rovnost objevit.
Offline
↑↑ check_drummer:
Já myslím, že pokud řešení existuje, tak je jednoznačné. Pokud by bylo víc řešení, musela by mít laszkyho rovnice více řešení a to by její diskriminant
Offline
Tak ten můj postup zabere, není nutné řešit kubickou rovnici, ale ta podmínka tam není tak explicitní.
Např. vyjadřujeme
Potom aby byla splněna podmínka mod 3, je nutné volit jako dělitele y čísla x jen čísla 1 nebo 2. Ale celočíselné řešení rovnice má jen případ y=1, a pak máme c=1, d=3, tedy celkem
Offline
K #24 jsem dopsal nutné (a myslím že i postačující) podmínky, kdy lze vyjádření provést. každopádně je dost nešikovné, že je potřeba zkoušet téměř všechny dělitele čísla x - nebo minimálně neomezený počet těchto dělitelů....
Offline
laszky napsal(a):
Protoze je
Jak se vůbec na něco takového přijde?
Offline
↑↑ surovec:
K čemu to vlastně potřebuješ? Jde o to v jakém tvaru chceš tu podmínku formulovat?
Offline
↑↑ check_drummer:
Další zajímavá nutná podmínka je, že
Offline
↑↑ surovec:
Důvod proč to zvládne mákův algoritmus rychle (a možná i Wolfram) je ten, že to číslo nemá moc velký počet dělitelů.
Offline
Je to zajímavý, zkouším vymyslet nějaký příklad, kdy to číslo b má hodně dělitelů (aby mákův algoritmus a možná i Wofram běžely dlouho) a nedaří se - i když je to číslo b velké, tak vždy tam má nějaký velký prvočíselný dělitel....
Ale třeba je to statsticky dáno, že náhodné číslo má celkem málo prvnočíselných dělitelů a pár z nich bude hodně velkých.
Offline
↑ check_drummer:
Proste jsem tyto vztahy
laszky napsal(a):
chtel nejak odecist/secist, aby se mi povedlo vyjadrit
Btw, funguje to i kdyz tam misto treti odmocniny bude jakakoli jina odmocnina:
Zrejme to je tim, ze kdyz
A vynasobenim techto dvou rovnic ziskame
Asi to nejak souvisi s celymi algebraickymi cisly, takze by to mohlo jit i dale zobecnovat.
Offline
laszky napsal(a):
, pak taky
A vynasobenim techto dvou rovnic ziskame
To je ono, díky.
Offline
↑ check_drummer:
Podle všeho je počet dělitelů čísla n zhruba log(n), takže by ty algoritmy měly být rychlé.
Offline
Otázka je jak hledat celočíselná řešení rovnice - jedna cesta je právě přes dělitele absolutního členu (takže jsme vlastně tam kde jsme byli). Druhá možnost je přes explicitní vzorec a podívat se jestli je vypočtená hodnoat dostatečně blízko celému číslu.... To už je takové nečisté - nikde není dáno že nemůže vyjít neceločíselné řešení blízké k celému číslu. Tento postup navíc nepůjde použít pro vyšší odmocniny než 4.
Offline
Maximu online jsem našel pouze na adrese Odkaz
Program počítá hodnoty C a D a hodnot A a B podle rovnice:
(A+sqrt(B))^(1/3) = C+sqrt(D) = Z
Přičemž proměnou Z používá program.
Také využívá toho, že číslo B je beze zbytku dělitelné číslem D.
Dále, že číslo D je mnohem menší jak B.
Proto nejprve zjistí všechny dělitele čísla B a ze seznamu vybírá
od nejmenšího postupně jednotlivé hodnoty K jejíž druhou odmocninu
postupně buď přičte, nebo odečte od cílové hodnoty Z.
Pokud je zbytek celé číslo, pak jsme našli hodnotu C i D a program předčasně ukončíme.
Vzhledem k tomu, že výsledná hodnota D je nízká, tak počet testů je velmi malý.
Celkový počet testů je počet dělitelů čísla B, takže i pokud problém nemá řešení
a musí projít všechny dělitele, pak stejně program je poměrně rychlý.
U programu se zbytečně testují dělitelé K=[1,4,9,16, atd...], pokud tam jsou, jejíž druhá odmocnina je celé číslo.
Pokud jsem přidal test, který tyto hodnoty vylučuje, tak se program znatelně nezrychlí.
Rychlost programu je i na největší čísla pod 7 milisekund.
Offline
Zkoušel jsem i výpočet podle Laszky (kubická rovnice). Ten je podstatně rychlejší, i když program je třikrát delší, na mém počítači trvá cca 0.3 milisekundy.
Má však chybu, kterou neumím odstranit. Pokud je proměnná B záporná, pak vzniklá kubická rovnice vrací tři reálné řešení, z nichž ani jedno nevyhovuje (není celočíselné). Nepřišel jsem na to proč.
Vyřešil jsem to tak, že na začátku programu mám podmínku a pokud je B záporné, otočím znaménka u obou vstupních proměných [A, B], provedu výpočet - tentokrát program vrátí pouze jednu reálnou hodnotu, která je celočíselná a u výsledku otočím znaménka [C, D]. Pak je vše v pořádku.
Offline
↑ mák:
Takže ty máš Mximu staženou a nainstalovanou na lokální PC?
Offline
Offline
Ak tomu spravne rozumiem, tak ide o to aby sme pre dane a,b nasli c,d tak aby platilo
Moj navrh by bol takyto, ale neviem ci je efektivnejsi ako vyssie spominany program, ak by sa niekomu chcelo, tak moze skusit implementovat a uvidi sa (aj mna by to zaujimalo).
Po umocneni na tretiu dostavame
Teda
Zavedme
cize
Hladame racionalne korene tohoto polynomu, na co su standardne algoritmy. Ak najdeme nejake racionalne riesenie
Offline
↑ Honzc:
Mě to vyšlo C stejně,
a D jinak, ale taky funkčně:
nebo:
ten druhý výraz je vlastně identický s tvým (B je vždy větší jak A).
Offline
↑ surovec:
A jak jinak než pomocí vstupních údajů to chceš vyjádřit.
Ta tvá kubická rovnice snad používá jiné než zadané hodnoty?
Offline
↑ surovec:
To ale tak není
Výraz
Takže žádné 2x a x
Vždyť si můžeš dosadit hodnoty a,b z tvého příkladu v příspěvku #11
Offline