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:
c,d jsou vyjádřena pomocí a,b, což je chtěné. Ale co tam chybí jsou podmínky, kdy lze toto provést - aby c,d byla celá. Ale možná stačí šalamounsky říct, že to platí pokud po tomto výpočtu budou c,d celá. Tady ale můžeme namítnout jak to algoritmicky určit, že je třeba c celé....
Offline
↑ check_drummer:
Přesně, o to mi jde. Ten výraz sice můžeme dosadit do kalkulačky, ale nikdy si nemůžeme být jistí, že to opravdu JE celé číslo. Proto hledám jasnou úpravu.
↑ Honzc:
Honzc napsal(a):
Podmínkou je, že
je celé číslo
Tahle podmínka nestačí, např.
↑↑ Honzc: Asi bych měl osvětlit, oč mi celou dobu jde. Při řešení kubické rovnice vyjde výraz typu
Taková ukázka: kořen kubické rovnice vyjde
Kdybych shrnul dosavadní poznatky (hlavně zásluha laszkyho) a ještě je trochu posunul, tak:
Online
↑ surovec:
A jak explicitně poznáš, že nějaké číslo je celočíselným řešením kubické rovnice? Takže stejně předem nevíš jestli má úloha řešení, dokud tu kubickou rovnici nevyřešíš.... Lepší by bylo najít nějakou jasnou explicitní podmínku...
Offline
Jinak v #24 máš jinou podmínku (resp. ty 3 podmínky), kdy lze úpravu provést. Výhoda je, že tam neoperuju s kubickou rovnicí.
Offline
↑ check_drummer:
Nemusím řešit, jen dosadím. Např.
1: nevyhovuje rovnosti
2: nevyhovuje rovnosti
3: vyhovuje, dál nemusím pokračovat (to testování můžu ukončit, jakmile výraz vlevo změní znaménko, buď s úspěchem, nebo takový dělitel neexistuje).
Takže
Neznámá
check_drummer napsal(a):
Jinak v #24 máš jinou podmínku...
Možná, ale výše uvedené mi připadá jednodušší.
Online
↑ surovec:
Někdy (nebo spíš často) jednodušší postup neznamená jednodušší (rychlejší) algoritmus. Ale možná budou existovat rychlejší postupy než zkoušet všechny dělitele absolutního členu...
Založil jsem samostatné téma zde, zda by tu moji podmínku nebylo možné nějak zjednodušit:
Offline
↑ surovec:
U větších číel narazíš na problém, že bude obtížné uspořádat jejich dělitele podle velikosti, pokud je generuješ postupně. Ale ten samý problém je i u mého postupu - tam taky musím procházet dělitele a příliš velcí mě už nezajímají.
Offline
↑ surovec: (reakce na #53 )
Aby úloha měla řešení můžou a a b nabývat pouze určitých hodnot
Podmínky:
Když
pak i=0
jinak i=1
Takže a nemůže být 5
Asi tě to neuspokojí, protože pak není co počítat, protože pokud dodržíš podmínky pak
c=n a d=k
Offline
↑ Honzc:
Jasně, že to není 13, chtěl jsem tím ukázat, že vyhodnocení na kalkulačce nestačí, mohu takto nalézt jiné mocniny libovolně blízko celému číslu a kalkulačka neodhalí, zda to je či není celé číslo. Proto mi jde o ten postup a proto ten výraz
Ty podmínky skutečně použít nejdou, ale každopádně jsou velmi zajímavé a opravdu fungují, s tím sis tedy asi dal...
Online
↑ surovec:
Dobře tedy.
Žádné 3-tí odmocniny.
Ukážu na tvém příkladu a=3341474, b=333446676300
Nejprve prvočíselý rozklad čísla a
3341474=1x2x149x11213
Ze vztahu
n=1 k není přirozené
n=2 k=556911, c=2, d=556911 ovšem kontrolou b=172733313429167319 není řešení
n=149 k=75, c=149, d=75 kontrola b=333446676300 - řešení
Pro další dělitele by už k vyšly záporné
Vše se odehrálo na obyčejné kalkulačce z Windows
(Nejtěžší je pro velká čísla udělat ten prvočíselný rozklad)
Offline
Zdravím, nejde využít toho, že hledaná hodnota k prvociselneho rozkladu čísla a je přibližně třetí odmocninou čísla a a tím si ulehčit spoustu počítání?
Offline
↑ mák:
Jak to víš, že k je součástí prvočíselného rozkladu čísla a?
teď čtu, že Honzc to značí n - ale n obecně nemusí být prvočíslo ne?
Offline
↑ Honzc:
Zajímavé je že všichni používáte prvočíselný rozklad čísla a já používám dělitele b - resp. tu část čísla b, jejíž čtverec dělí b. Tedy v závislosti na velikosti a,b lze vybrat první nebo druhý postup.
Offline
↑ Honzc:
Zajímavý alternativní postup.
Pro srovnání výpočet pomocí metody založené na laszkyho poznatcích:
rozklad
první dělitel 1: neplatí (už od pohledu, bez kalkulačky)
druhý dělitel 2: neplatí (už od pohledu, bez kalkulačky)
třetí dělitel 149: platí,
(Mimochodem i čtvrtý dělitel 298 se dá bez kalkulačky snadno odhadnout, že už neplatí.)
Online
↑ surovec:
Pravdepodobne to neni to, co hledas, ale napadlo me jeste toto: co takhle to
Offline
↑ laszky:
To už jsme tady zavrhli, protože když počítáš s omezenou přsností tak může být necelé číslo k nerozeznání od celého.
Offline
↑ surovec:
Dobře, tak jste mě přemluvili a uvedu i svůj postup. :-)
Vy ta čísla značíte a=3341474, b=333446676300, já si nejdřív z b "vytáhnu" čtverec a tedy mám
Postupně zkouším dělitele y čísla x dokud nesplní ty mé podmínky, tedy 1,2,3 nevyhoví, pak přijde na řadu y=5:
z=x/y=6.11113
d=y^2.b=5^2.3
z=d (mod 3) - splněno
(z-d)/3 +3d dělí a - splněno
a tedy
c=a / ((z-d)/3 +3d) = 149
tj. výsledek:
Offline
Pokud nebudu chtít řešit podmínky a budu chtít mít co nejjednodušší řešení pak:
Vypočítám celočíselnou hodnotu C dle vzorce (round je zaokrouhlení na nejbližší celou hodnotu):
C = round(((sqrt(B)+A)^(1/3)+(A-sqrt(B))^(1/3))/2)
Zní vypočítám jednoduše hodnotu D:
D = (A-C^3)/(3·C)
A správnost výsledku zkontroluji zpětným výpočtem:
X = 3*C*D+C^3
Y = D*(D+3*C^2)^2
A pokud platí X=A a současně Y=B, pak je výsledek správný.
Offline
↑ mák:
Ovšem aby byl algoritmus korektní, je potřeba pracovat s nekonečným počtem desetinných míst. :-)
Offline
↑ check_drummer:
Samozřejmě,
hodnoty A a B nesmí překročit 15 platných číslic,
větší hodnoty Excel (Calc) nezvládne a musí se použít specializovaný software s vyšší přesností.
Pro zajímavost vypíšu některé vysoké hodnoty, které je možno tímto postupem spočítat:
vstup A=994350314 a B=1008964684765625 spočítá správně C=998 a D=113,
vstup A=433575828 a B=1938870840769451 spočítá správně C=756 a D=659.
Offline
↑ mák:
Napadá mě, že by se tak děl udělat test na prvočíselnost nebo možná i na hledání dělitelů - tato úloha by se neřešila tím postupem přes dělitele, ale přes ty odmocniny a když vyjde celé číslo, tak lze nepřímo naít dělitele z toho výsledného vyjádření....
Offline