Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Sinus preko Taylorovog reda
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
piccola
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2009. (15:39:50)
Postovi: (D7)16
Sarma = la pohva - posuda
= 10 - 8

PostPostano: 18:04 uto, 25. 10. 2011    Naslov: Sinus preko Taylorovog reda Citirajte i odgovorite

može pomoć oko zadatka:

Funkciju sin(x) definiramo ovako:

[latex]x - \frac{x^{3}}{3!} + \frac{x^{5}}{5!} - ... \pm \frac{x^{2n+1}}{(2n+1)!} [/latex]

Napišite program koji će za učitani x na navedeni način računati vrijednost

funkcije sin (x) sve dok opći član [latex] | \pm \frac{x^{2n+1}}{(2n+1)!} | [/latex]

ne postane manji od [latex] 5 * 10^{-5} [/latex] .

Zanima me samo kako bi mogla ubuduće u zadacima rješavat faktorijele ?
Je li moguće koristiti funkcije, npr. da napišem ovako :

[code:1]

int fakt(int a)
{
int i, f=1;
for (i = 1; i <= a; i++)
f *= i;
return f;
}
[/code:1]

Unaprijed zahvaljujem :D
može pomoć oko zadatka:

Funkciju sin(x) definiramo ovako:



Napišite program koji će za učitani x na navedeni način računati vrijednost

funkcije sin (x) sve dok opći član

ne postane manji od .

Zanima me samo kako bi mogla ubuduće u zadacima rješavat faktorijele ?
Je li moguće koristiti funkcije, npr. da napišem ovako :

Kod:


int fakt(int a)
{
int i, f=1;
for (i = 1; i <= a; i++)
f *= i;
return f;
}


Unaprijed zahvaljujem Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (355F)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:35 uto, 25. 10. 2011    Naslov: Citirajte i odgovorite

Moze, s time da faktorijele brzo rastu, pa je mozda bolje umjesto [tt]int[/tt] koristiti [tt]double[/tt]. Takodjer, puno je bolje u konkretnom slucaju racunati bez funkcije:

[code:1]fakt = 1;
n = 1;
xp = x;
x2 = x*x;
while (fabs(opci_clan) >= 5e-5) {
sum += opci_clan = xp / fakt;
fakt *= 2*n*(2*n+1);
++n;
xp *= -x2;
}[/code:1]

Pisano napamet, pa oprezno da nema kakva greska, no stvar se zapravo svodi na to da je
[tex]a_{n+1} = \frac{-x^2}{2n(2n+1)}a_n[/tex], za sve [tex]n > 1[/tex] (pri cemu je [tex]a_n[/tex] opci clan niza koji se sumira).
Moze, s time da faktorijele brzo rastu, pa je mozda bolje umjesto int koristiti double. Takodjer, puno je bolje u konkretnom slucaju racunati bez funkcije:

Kod:
fakt = 1;
n = 1;
xp = x;
x2 = x*x;
while (fabs(opci_clan) >= 5e-5) {
  sum += opci_clan = xp / fakt;
  fakt *= 2*n*(2*n+1);
  ++n;
  xp *= -x2;
}


Pisano napamet, pa oprezno da nema kakva greska, no stvar se zapravo svodi na to da je
[tex]a_{n+1} = \frac{-x^2}{2n(2n+1)}a_n[/tex], za sve [tex]n > 1[/tex] (pri cemu je [tex]a_n[/tex] opci clan niza koji se sumira).



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
piccola
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2009. (15:39:50)
Postovi: (D7)16
Sarma = la pohva - posuda
= 10 - 8

PostPostano: 21:00 uto, 25. 10. 2011    Naslov: Citirajte i odgovorite

Super! Ideja mi je bila da napravim nekakvu funkciju koju bi mogla koristiti i u daljnjim programima pa me zanimalo mogu li to.
A za ovaj zadatak mi se ovo rješenje čini prikladnijim.

Što se tiče int i double #-o uopće nisam razmišljala na taj način.

Hvala na brzom odgovoru :)
Super! Ideja mi je bila da napravim nekakvu funkciju koju bi mogla koristiti i u daljnjim programima pa me zanimalo mogu li to.
A za ovaj zadatak mi se ovo rješenje čini prikladnijim.

Što se tiče int i double d'oh! uopće nisam razmišljala na taj način.

Hvala na brzom odgovoru Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (355F)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 22:38 uto, 25. 10. 2011    Naslov: Citirajte i odgovorite

Naravno, moze i bolje (zaboravih napomenuti prvi put), ako se direktno iskoristi formula koju sam dao. Umjesto

[code:1] sum += opci_clan = xp / fakt;
fakt *= 2*n*(2*n+1);
++n;
xp *= -x2;[/code:1]
se stavi
[code:1] sum += opci_clan *= -x2 / (2*n*(2*n+1));
++n;[/code:1]

Na Numerickoj matematici cete uciti (ili ste ucili) zasto je ovako bolje (hint: manja sansa za overflow).

Ima tu jos mjesta za sitna poboljsanja (npr. onih 2 iz nazivnika direktno ugurati u [tt]x2[/tt]), no ovako bi trebalo biti u redu.

Ne znam gdje ti ovo treba, no ispravna implementacija bi [tt]x[/tt] prvo gurnula u raspon [tex]\left[-\frac{\pi}{2}, \frac{\pi}{2}\right][/tex], da brojke ne podivljaju za po apsolutnoj vrijednosti velike vrijednosti [tt]x[/tt]-a.
Naravno, moze i bolje (zaboravih napomenuti prvi put), ako se direktno iskoristi formula koju sam dao. Umjesto

Kod:
  sum += opci_clan = xp / fakt;
  fakt *= 2*n*(2*n+1);
  ++n;
  xp *= -x2;

se stavi
Kod:
  sum += opci_clan *= -x2 / (2*n*(2*n+1));
  ++n;


Na Numerickoj matematici cete uciti (ili ste ucili) zasto je ovako bolje (hint: manja sansa za overflow).

Ima tu jos mjesta za sitna poboljsanja (npr. onih 2 iz nazivnika direktno ugurati u x2), no ovako bi trebalo biti u redu.

Ne znam gdje ti ovo treba, no ispravna implementacija bi x prvo gurnula u raspon [tex]\left[-\frac{\pi}{2}, \frac{\pi}{2}\right][/tex], da brojke ne podivljaju za po apsolutnoj vrijednosti velike vrijednosti x-a.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan