Nejste přihlášen/a.

Přihlásit se do poradny

 

Jak to mám řešit v javě?

Od: zadna* odpovědí: 1 změna:

Dobrý den.
Věděl by si někdo rady s tímto programem v javě:

Zadejte z klávesnice reálné číslo x (desetinný oddělovač bude vždy tečka, např. 2.34). Bude-li číslo kladné, bude použito jako exponent základu 10 (tj. f(x) = 10 x. Bude-li záporné, vypočte se příslušná odmocnina (použije se absolutní hodnota) základu 10 (tj. f(x) = 10 1/|x|). Bude-li nulové, vypíše se text: Vstup = 0.0 (Pozor na možné chyby při porovnávání reálného čísla na rovnost!)
Vstup: x

Výstup by měl vypadat takto:

Zadej realne cislo: 2.1
-Vysledky-
10^2.1 = 125.89254117941675
Zadej realne cislo: -2.1
-Vysledky-
2.1 odmocnina z 10 = 2.99357729472049
Zadej realne cislo: 0
-Vysledky-
Vstup = 0.0

 

 

1 odpověď na otázku
Řazeno dle hodnocení

 

 

dzordz*
hodnocení

0x

V čem je problém? Potřebujete spočítat výsledek bez použití matematických knihoven?

Šel bych na to asi tak, že bych od zadaného čísla 2.34 odečetl celou část, 10^2.34 = 10^2 * 10^0.34. Spočítat 10^2 není problém, třeba v cyklu, nebo tam prostě vysázet daný počet nul, druhá část bude horší, budem na ni potřebovat tři vzorce.

Prvním bude převod jedné exponenciály na jinou, kterou dokážeme spočítat, třeba se základem e. 10^0.34 = e^y, po úpravě y = 0.34*ln(10).

Druhým bude dopočítání ln(10). Předpokládám, že budete mít uloženou konstantu e, jinak bych teda uložil rovnou ln(10) a nepočítal se s ním. Výpočet bude ln(10) = 2 + ln(10/e^2), aby se argument přiblížil víc k jedničce a dalo se aproximovat tímhle: mathworld.wolfram.com/..., řadu rozvinete, jak bude pro přesnost potřeba, ln(10/e^2) vyjde nějakých 0.302. Tím tedy máme spočítané ypsilon z jedničky: y = 0.34 * (2 + 0.302), zbývá to umocnit.

Třetím vzorcem je dopočítání e^y, což už máme jako e^0.78268. Použijeme další Taylorovu řadu, wolframalpha.com/....

Pak se to jen mezi sebou vynásobí, takže konečný úplný výsledek bude 10^2 * e^[0.34 * (2 + 0.302)]. Zbývá rozumným způsobem domyslet počítání řad, aby se zbytečně nenásobilo a využívaly se už známé hodnoty z předešlých polynomů, a taky zvolit podmínky pro ukončení cyklu rozvoje řad, aby byla dosažena požadovaná přesnost. No a odmocnina se udělá obdobně.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]