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 [mathjax]a^2-b[/mathjax]
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 [mathjax]K^3-a^2=(a^2-b)-a^2=-b[/mathjax] musel být kladný, ale pak by [mathjax]b[/mathjax] muselo být záporné, což odporuje podmínce pro druhou odmocninu...
Offline
Tak ten můj postup zabere, není nutné řešit kubickou rovnici, ale ta podmínka tam není tak explicitní.
Např. vyjadřujeme [mathjax]\sqrt[3]{10+\sqrt{108}}[/mathjax], což po přepsání na čtvercůprosté b znamená [mathjax]\sqrt[3]{10+6.\sqrt{3}}[/mathjax]. Tedy a=10,b=3,x=6.
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 [mathjax]1+\sqrt{3}[/mathjax].
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 [mathjax] a^2-b = (c^2-d)^3 [/mathjax]
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 [mathjax]c^2+3b[/mathjax] dělí a, takže c můžeme hledat i tak, že budeme postupně k 3b přičítat čtverce a zkoumat zda výsledek dělí a. A navíc musí i c dělit a, takže jen čtverce takových čísel stačí uvažovat.
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):
[mathjax] a = c^3 + 3cd[/mathjax]
[mathjax] b = d(3c^2+d)^2 [/mathjax]
chtel nejak odecist/secist, aby se mi povedlo vyjadrit [mathjax]c[/mathjax] nebo [mathjax]d[/mathjax]. K tomu bylo nutne umocnit [mathjax]a[/mathjax] na druhou, a pak uz to vyslo. Takze nic extra sofistikovanyho.
Btw, funguje to i kdyz tam misto treti odmocniny bude jakakoli jina odmocnina:
[mathjax] a+\sqrt{b} = (c + \sqrt{d})^k \;\; \Leftrightarrow \;\; a^2-b = (c^2-d)^k [/mathjax]
Zrejme to je tim, ze kdyz
[mathjax] a+\sqrt{b} = (c + \sqrt{d})^k [/mathjax], pak taky
[mathjax] a-\sqrt{b} = (c - \sqrt{d})^k [/mathjax]
A vynasobenim techto dvou rovnic ziskame
[mathjax] a^2-b = (c^2-d)^k [/mathjax]
Asi to nejak souvisi s celymi algebraickymi cisly, takze by to mohlo jit i dale zobecnovat.
Offline
laszky napsal(a):
[mathjax] a+\sqrt{b} = (c + \sqrt{d})^k [/mathjax], pak taky
[mathjax] a-\sqrt{b} = (c - \sqrt{d})^k [/mathjax]
A vynasobenim techto dvou rovnic ziskame
[mathjax] a^2-b = (c^2-d)^k [/mathjax]
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
↑ surovec:
Tak mi to nedalo a řešením by mělo být
[mathjax]c=\frac{\sqrt[3]{a+\sqrt{b}}+\sqrt[3]{a-\sqrt{b}}}{2}[/mathjax]
[mathjax]d=c^{2}-\sqrt[3]{a^{2}-b}[/mathjax]
Offline
Ak tomu spravne rozumiem, tak ide o to aby sme pre dane a,b nasli c,d tak aby platilo [mathjax]\sqrt[3]{a+\sqrt{b}}=c+\sqrt{d}[/mathjax].
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).
[mathjax]\sqrt[3]{a+\sqrt{b}}[/mathjax] sa da jednoznacne upravit na tvar [mathjax]\sqrt[3]{\alpha+\beta\sqrt{u}}[/mathjax], kde u je bezstvorcove; podobne [mathjax]c+\sqrt{d}[/mathjax] na [mathjax]=\gamma+\delta\sqrt{v}[/mathjax], kde v je bezstvorcove.
Po umocneni na tretiu dostavame [mathjax2]\alpha+\beta\sqrt{u}=(\gamma^3+3\gamma\delta^2v)+(3\gamma^2\delta+\delta^3v)\sqrt{v}.[/mathjax2] Ja som presvedceny ze toto implikuje ze nutne [mathjax]u=v[/mathjax], ale bolo by to treba overit/dokazat.
Teda [mathjax2]\alpha=\gamma^3+3\gamma\delta^2u,[/mathjax2][mathjax2]\beta=3\gamma^2\delta+\delta^3u.[/mathjax2]
Zavedme [mathjax]x=\gamma/\delta[/mathjax] a dostaneme
[mathjax2]\frac{\alpha}{\beta}=\frac{x^3+3xu}{3x^2+u}[/mathjax2]
cize
[mathjax2]\beta x^3-3\alpha x^2+3\beta u x-\alpha u=0.[/mathjax2]
Hladame racionalne korene tohoto polynomu, na co su standardne algoritmy. Ak najdeme nejake racionalne riesenie [mathjax]x[/mathjax], tak [mathjax]\gamma=\delta x[/mathjax] dosadime do prvej rovnice a dostaneme
[mathjax2]\delta = \sqrt[3]{\frac{\alpha}{x^3+3xu}},[/mathjax2] co ak nie je cele cislo tak nemame riesenie, ak je tak OK a doratame [mathjax]\gamma[/mathjax]
Offline
↑ Honzc:
Mě to vyšlo C stejně,
a D jinak, ale taky funkčně:
[mathjax]D=\frac{A-C^{3}}{3 \cdot C}[/mathjax]
nebo:
[mathjax]D=C^{2}+\sqrt[3]{B-A^{2}}[/mathjax]
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 [mathjax]\sqrt[3]{a+\sqrt{b}}[/mathjax] je přeci něco jiného než výraz [mathjax]\sqrt[3]{a-\sqrt{b}}[/mathjax]
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