Matematické Fórum

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

#1 20. 01. 2016 14:55

Lukáš Ba-mat-fyz
Místo: Bratislava
Příspěvky: 145
Škola: FMFI UK, Wien Uni
Pozice: double student
Reputace:   
 

Zjednodusenie kodu

Ahojte,

Tak po dlhej dobe som sem zavital, tentokrat len ja som uz mimo z toho. Uloha je len jednoducha logika, ale mne zial uchadza. Problem:

Mame premennu, volajme ju $AAA$. Ak je $AAA>0$ tak ju vynasobim vyrazom $(1,04)^\frac{1}{12}$ co je vzdy $>1$, teda $AAA = AAA * (1,04)^\frac{1}{12}$. Ak je $AAA<0$, tak $AAA$ ostava nezmenene.

uloha je, ze toto by sa malo dat jednoducho napisat bez toho, aby som pouzival logicke spojky ako IF.

Napada Vas nieco? Mna uz hodinu nic, teda iba, ze $AAA = \max ( AAA, AAA* (1,04)^\frac{1}{12})$

Dakujem velmi pekne


Ibaže by som sa mýlil.

Offline

  • (téma jako vyřešené označil(a) Lukáš Ba-mat-fyz)

#2 20. 01. 2016 16:38

mountdoom
Příspěvky: 186
Reputace:   
 

Re: Zjednodusenie kodu

Ahoj,
tvoje reseni neni bohuzel spravne. Pri AAA v intervalu (-1, 0) ho to stejne vynasobi tou konstantou (pokud jsem se neprehledl :) ).
Neco takoveto by mohlo fungovat:
$AAA  = ((AAA > 0) * AAA * k)  |  (AAA * (AAA <= 0))$


Vysvetleni: ty zavorky jsou navzajem disjunktni tzn. v kazdem pripade je jedna nulova a ta druha ne (pokud ovsem AAA neni nula, to pak je ale stejne jedno jaka se vybere). Ta zavorka, jejiz vysledek je nula tim padem neovlivni vysledek, protoze logicky OR s nulou vysledek nemeni. Vnitrni zavorky jsou typu boolean, takze vysledek te pravdive je prirazen do AAA.

Offline

 

#3 20. 01. 2016 19:58

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 920
Reputace:   63 
 

Re: Zjednodusenie kodu

Zdravím,
↑ Lukáš Ba-mat-fyz:
tvoje řešení je správné, připomínka, že se stejně číslo násobí konstantou je sice správná, nicméně v příkladu co uvedl ↑ mountdoom: se také násobí a dokonce vícekrát, takže vyhnout se tomu nelze.
Abych přispěl se svou troškou do mlýna tak mě napadlo ještě jedno trochu jiné řešení:

$AAA\,\left({{\left(k-1\right)\,\left({\it signum}\left(AAA\right)+1\right)}\over{2}}+1\right)$

Přičemž:
$k=\left(1.04\right)^{{{1}\over{12}}}$

(Funkce signum vrací +1 pro kladná čísla, -1 pro záporná a 0 pro nulu).


LibreOffice Verze: 25.8.4.2, Maxima 5.49.0 (SBCL)

Offline

 

#4 21. 01. 2016 08:29

Lukáš Ba-mat-fyz
Místo: Bratislava
Příspěvky: 145
Škola: FMFI UK, Wien Uni
Pozice: double student
Reputace:   
 

Re: Zjednodusenie kodu

Dakujem Vam velmi pekne, oboje akurat idem vyskusat,urcite budu fungovat:)

Ste super:)


Ibaže by som sa mýlil.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson