Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 02. 11. 2012 15:20

Dracke
Zelenáč
Příspěvky: 23
Reputace:   
 

Matematický problém v programování funkcí pomocí řad.

Ahoj. Programuji pomocí Taylorových řad různé matematické funkce s přesností na zadaný počet platných číslic. Když někdo zadá platnost na 3 číslice, tak to znamená např.: 1.23 nebo 0.00123 atd.
Mám naprogramovat funkci argument hyperbolického sinu:
$argsinh(x) = ln (x+\sqrt{x^{2} + 1})$
K tomu využívám funkce přirozeného logaritmu a mocninné funkce ($x^{\frac{1}{2}}$) namísto odmocniny. $x^{2}$ pod odmocninou si můžete odmyslet, pro řešení problému není podstatné.

K problému:
Potřebuji matematicky vypočítat, na kolik platných číslic se má počítat mocninná funkce (odmocnina), aby výsledek přirozeného logaritmu vycházel s přesností na zadaný počet míst. (výsledek přirozeného logaritmu bude mít stejný počet platných číslic jako výsledek hyperbolického sinu.

Offline

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

#2 02. 11. 2012 16:22

jarrro
Příspěvky: 5491
Škola: UMB BB Matematická analýza
Reputace:   303 
Web
 

Re: Matematický problém v programování funkcí pomocí řad.

stačí odhadnúť n+1 vú deriváciu, lebo
$f{\(x\)}=\sum_{i=0}^{n}{\frac{f^{\(i\)}{\(0\)}}{i!}x^i}+\frac{f^{\(n+1\)}{\(c\)}}{\(n+1\)!}x^{n+1}$
kde c je nejaké číslo medzi 0 a x (môže závisieť od x)
teda chyba je
$\left|\frac{f^{\(n+1\)}{\(c\)}}{\(n+1\)!}x^{n+1}\right|$


MATH IS THE BEST!!!

Offline

 

#3 02. 11. 2012 16:22

Bati
Příspěvky: 2469
Reputace:   192 
 

Re: Matematický problém v programování funkcí pomocí řad.

Ahoj,
především, Taylorova řada pro logaritmus se středem v 1 konverguje jen v intervalu od 0 do 2, což ale tvůj argument obecně nesplňuje.

Nicméně pro odhad chyby v příslušném intervalu, kde má taková aproximace smysl, lze použít Taylorovy zbytky (spíš jejich horní odhad), viz. např. http://cs.wikipedia.org/wiki/Taylorova_%C5%99ada

Offline

 

#4 02. 11. 2012 16:34 — Editoval Dracke (02. 11. 2012 16:37)

Dracke
Zelenáč
Příspěvky: 23
Reputace:   
 

Re: Matematický problém v programování funkcí pomocí řad.

Při výpočtu přirozeného logaritmu využívám heuristiky a čísla mimo konvergenci počítám: e^celá část * e^desetinná část přičemž celou část spočítám normálně v cyklu a na desetinnou část aplikuji řadu.

Offline

 

#5 02. 11. 2012 16:47

Dracke
Zelenáč
Příspěvky: 23
Reputace:   
 

Re: Matematický problém v programování funkcí pomocí řad.

↑ jarrro:
S matematikou mívám někdy problémy. Mohl by si být konkrétnější, s jakou přesností mám spočítat mocninnou funkci kdybych chtěl například výsledek logaritmu na 3 platné číslice? K výpočtu přirozeného logaritmu využívám:
$ln(x) = (x-1) - \frac{1}{2}.(x-1)^{2} + \frac{1}{3}.(x-1)^{3}-...$
Jak už jsem řekl, tuto řadu využívám pouze na desetinnou část zadaného čísla x.

Offline

 

#6 02. 11. 2012 20:18

kaja.marik
Veterán
Příspěvky: 1915
Reputace:   57 
 

Re: Matematický problém v programování funkcí pomocí řad.

Numericka matematika je obcas alchymie. Kouknete do starych knih z doby, kdy bylo potreba tyto ulohy resit :)

Pokud chci ln(y) na n desetinnych mist, postupuju takto

1) vyresim rovnici (1-x)/(x+1) = y

2) dosadim toto x do rozvoje funkce ln ( (1-x)/(1+x) ), ten rozvoj konverguje vsude a vypada velice jednoduse, zkuste si ho najit wolframem alpha nebo necim podobnym

3) vezmu tolik clenu kolik potrebuju. Protoze rozvoj funkce ln((1-x)/(1+x)) je alternujici rada, neni chyba vetsi nez posledni clen ktery beru v uvahu (nebo mozna dokonce posledni vynechany, ted si to presne napamatuju)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson