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 14. 12. 2011 11:46

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Logaritmus proměnné v C

Ahoj, jak mám udělat logaritmus proměnné v Cécku, log(n) skončí chybou, napadlo mě udělat switch, kde bych pro každé n definoval log s číslem a ne proměnnou, ale to mi přijde značně neefektivní.

Jak to udělat efektivně a správně.

Díky moc


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

  • (téma jako vyřešené označil(a) ReVolt)

#2 14. 12. 2011 12:09 — Editoval cStP (14. 12. 2011 12:09)

cStP
Příspěvky: 39
Reputace:   
Web
 

Re: Logaritmus proměnné v C

Pro výpočet přirozeného logaritmu funguje "log(x)" (výpočet dekadického logaritmu je "log10(x)" ).

Chybou může být, že neimportuješ matematickou knihovnu <math.h> nebo že třeba nedeklaruješ danou proměnou nebo tam máš jinou syntaktickou chyba... ? Zkus zkontrolovat překlepy... případně tu vypiš chybové hlášení, co ti to píše.

Logaritmus ale jinak v Céčku určitě spočítat pomocí proměnné jde ;-)

Offline

 

#3 14. 12. 2011 12:15 — Editoval frank_horrigan (14. 12. 2011 12:17)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Logaritmus proměnné v C

Ahoj,

log (n), definovaný v math.h ti počítá přirozený logaritmus, na to pozor. Jakou chybou to končí?? chyba při překladu (například nemáš includnutý math.h)? pak dej číslo chyby (nebo se rovnou podívej na google).

A nebo, pokud ti to hází nesmyslné výsledky, tak možná jsi opomněl, že funkce ti spočítá přirozený logaritmus.

Potřebuješ-li binární, dekadický, nebo jakýkoli jiný, použij vzorce $\log_{base}(x) = \frac{\log(x)}{\log{(base)}}$

Logaritmus základu (tedy ten jmenovatel) si rovnou převypočti (do nějaké konstanty), a pak to děl rovnou konstantou, ať nevoláš docela pomalou funkci log zbytečně

EDIT: kolega mně předběhl, log10(x) v tom math.h mně nenapadla :)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#4 14. 12. 2011 12:16

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Re: Logaritmus proměnné v C

↑ cStP:
Knihovnu <math.h> importovanou mám, program jsem několikrát kontroval a překlepy jsem nenašel, ale teď mě napadlo jestii problém není v tomto:

mám pole hodnot (např. {10, 20, 50, .....}) a cyklem for přiřazuji do proměnné n postupně hodnoty uložené v poli (např, n = pole[i]) a potom pracuji s n a když chci provést log(n) tak při kompilaci GCCčkem mi to vyhodí následující chybu
logaritmus.c:(.text+0x6b): undefined reference to `log'

nemůže to být tím, že jsou hodnoty v poli? podle mě by mělo být jedno, kde jsou uloženy, ale v Céčku teprve začínám, tak nevím


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

 

#5 14. 12. 2011 12:19 — Editoval frank_horrigan (14. 12. 2011 12:20)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Logaritmus proměnné v C

To vypadá na špatně nastavený linker, našel jsem kolem toho tohle:
Odkaz, konkrétně:


Note that the problem appears to be a linkage error,
the compilation of the C++ code appearing to be successful.
You need to specify a library (maybe xosd.a or .o ?) to be
linked with your compiled file to have a complete application.

As this is an implementation-specific question, best would
be to post it in a forum dedicated to xosd or to your
platform/compiler (gcc).

EDIT: odkud proměnné bereš by nemělo rozhodovat, pokud je správného typu (těžko budeš logaritmovat ukazatel, nebo pole charů, že)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#6 14. 12. 2011 12:36

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Re: Logaritmus proměnné v C

↑ frank_horrigan:
proměnná n vždy nabývá celočíselných hodnot
nevím čím to může být :(


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

 

#7 14. 12. 2011 12:40

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Logaritmus proměnné v C

Zkus schválně jiný kompilátor a linker, ten by ti to měl přeložit bez problémů....

jinak určitě, viz ten článek, mrkni se na fórum kolem GCC, tam by určitě mělo být řečeno, co s tím - je to docela běžná chyba... funkci, kterou voláš, tak nemůže linker najít, a říká, že není definovaná....

nebo zkus k tomu přilinkovat math.o, math.lib, apod. kde by ta funkce měla být


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#8 14. 12. 2011 12:43

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Re: Logaritmus proměnné v C

↑ frank_horrigan:
to mi právě bylo nejvíc divné, že fci. log nezná

Díky moc


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson