Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C - Rekurentní problémy, platné číslice, přesnost epsilon

Zdravím. Řeším projekt, kde máme počítat matematické funkce arctg, argsinh a powxa pomocí Taylorova rozvoje. Přesnost na počet platných číslic je zadána jako celé číslo, např. 3. Jak přepočítat toto celé číslo na přesnost epsilon, pomocí kterého ukončuji cyklus výpočtu funkcí? Ukončení je realizováno podmínkou if( (fabs(predchozi_clen - aktualni_clen)) < eps). Snad víte, co tím myslím. Kdyžtak upřesním. Není mi úplně jasné, jak to funguje. Číslo v plovoucí čárce má mantisu o určitém počtu cifer a to je ta přesnost? Chce se po nás tohle měnit? Děkuji.

Předmět Autor Datum
asi by som to neriesil nejako exaktne, bud by som dal eps ako dost male cislo, vypocital rad a vysle…
nl12345 29.10.2012 19:21
nl12345
Ok dík za radu, ale zřejmě to nebude to pravé. Máme k programu napsat dokumentaci, kde mj. máme pops…
Niko Bellic 29.10.2012 20:11
Niko Bellic
A co ten návrh na e = 0.0005?
Wikan 29.10.2012 20:16
Wikan
Pokud takto nastavím epsilon, vyjde mi např. argsinh 12.00 = 3.175992
Niko Bellic 29.10.2012 20:31
Niko Bellic
a kolko by to malo vyjst? ako inac vyzera ten rad, mozes to sem napisat, nech mam aspon predstavu ak…
nl12345 29.10.2012 21:19
nl12345
No napíšu sem arkus tangens (argsinh totiž počítám pomocí dalších dvou funkcí exp(x) a ln(x)). Použi…
Niko Bellic 30.10.2012 17:01
Niko Bellic
skusim taku logicku uvahu: pokial ten rad je typu, ze jeden clen pricitas, dalsi odcitas atd., tak s…
nl12345 30.10.2012 18:03
nl12345
Aha takže předělat ukončovací podmínku cyklů na porovnávání současného a předchozího součtu. Zkusím. poslední
Niko Bellic 01.11.2012 15:36
Niko Bellic
Přesností se určitě rozumí odhad zbytku, tzn. rozdílu skutečné funkční hodnoty a její aproximace Tay…
hynajs 30.10.2012 22:18
hynajs

a kolko by to malo vyjst? ako inac vyzera ten rad, mozes to sem napisat, nech mam aspon predstavu ako by to malo konvergovat

edit:
tuto ukoncovaciu podmienku mate v zadani? - if( (fabs(predchozi_clen - aktualni_clen)) < eps). Co keby si neporovnaval posledne dva cleny radu, ale posledne dva konecne vysledky (teda vysledok po scitani n clenov radu - vysledok po scitani n+1 clenov radu)

No napíšu sem arkus tangens (argsinh totiž počítám pomocí dalších dvou funkcí exp(x) a ln(x)). Použitý rozvoj:

[http://upload.wikimedia.org/math/0/6/d/06d44829255 db19360fefd2a3b1e3929.png]

Definiční obor je upraven na R úpravou podle vzorce arctg(x) = PI/2 - arctg(1/x). Tady jsou výsledky pro x = 5 s různě nastaveným epsilon:

1.3734008220e+00 eps = 0.00001
1.3733989935e+00 eps = 0.0001
1.3733989935e+00 eps = 0.0005
1.3733989935e+00 eps = 0.001
1.3734629935e+00 eps = 0.01
1.3734629935e+00 eps = 0.1

Správný výsledek neznáme, ani jeho správnou podobu pro konkrétní přesnost. Je pouze řečeno:
"Přesnost na N cifer neznamená, že cifry od N+1 pozice dále budou nuly, ale že na nich již nezáleží. "

Jak tedy upravit epsilon, aby byla přesnost např. na ty tři platné číslice?

skusim taku logicku uvahu: pokial ten rad je typu, ze jeden clen pricitas, dalsi odcitas atd., tak spravny vysledok by mal lezat vzdy medzi suctom prvych n clenov a n+1 clenov. Takisto ak spocitas prvych n clenov, tak odchylka od spravneho vysledku by nemala byt vacsia ako hodnota clena n+1 (Ak sucet prvych 10 clenov radu je 100 a hodnota 11 clena je 2, tak spravny vysledok bude lezat medzi 100 a 102).

Teda vy ak hladate presnost na N cifier, tvoj vysledok by mal byt nieco ako 1.373 +- 0.0005

Z toho by som usudzoval, ze ta hodnota epsilon by mohla byt 0.0005

Nespravny vysledok by mohol byt sposobeny aj reprezentaciou realnych cisel v PC

P.S. a mozno je to cele uplne zle :)

Přesností se určitě rozumí odhad zbytku, tzn. rozdílu skutečné funkční hodnoty a její aproximace Taylorovou řadou.
Tento zbytek lze vyjádřit např. v Cauchyho nebo Langrageově tvaru.
Podrobnosti najdeš v libovolném pojednání o Taylorových řadách, přednášce z matematické analýzy apod.

Zpět do poradny Odpovědět na původní otázku Nahoru