» »

[NALOGA][Java] Sinus

[NALOGA][Java] Sinus

Lukeatluke ::

A mi lahko kdo pove kaj je tu narobe.Sam že nekaj časa gledam, a ne vidim možne težave.

[quote]package ConsoleApplication1;

[/**
* Summary description for Program
*/
public class Program
{
public static double fakt(double n)
{
if ((n == 0) || (n == 1))
{
return 1;
}
else return n * fakt(n - 1);
}
public static double pot(double z, double s)
{
if (s == 0)
{
return 1;
}
else return z * pot(z, s - 1);
}

public static void main(String[] args)
{

double sinnx=0;
double stevec= 0;
double x = 1;
double p = 1;
double r = 1;
int c = 0, d = 5;

while (stevec = d)
{
x = (pot(x, p)) / (fakt(p));
if (stevec % 2 == 0)
{
sinnx = sinnx + x;
p = p + 2;
}
else if (stevec % 2 != 0)
{
sinnx = sinnx - x;
p = p + 2;
}

stevec++;
}
System.out.print("Vrednost sin od x= " + sinnx);
System.out.println();
}
}]

Pri prvem while = while(stevec manjsi ali enako d), zaradi nekega htmlja sem raje tako pustil.

To je program za sinus iz wikipedie:
[quote] \sin x = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \ldots + (-1)^n \frac{x^{2n+1}}{(2n+1)!} \pm \ldots
[/quote]

[img]http://upload.wikimedia.org/math/6/a/2/...

Hvala že vnaprej za pomoč

PaX_MaN ::

Kaj pa sploh _je_ narobe? A ti vrže kak error, ko skompajlaš?

Lukeatluke ::

Ne, samo narobe pride za sinus.Recimo za-> sin(1) bi moral bit 0,017452406,
ven mi pride pa 0,8333...

Neki ne štima....

PaX_MaN ::

Zgodovina sprememb…

  • spremenilo: PaX_MaN ()

arjan_t ::

odloči se ali računaš v radianih ali stopinjah ;)

Lukeatluke ::

Hjoj, kater je zdej pravilen.Trenutno mi pride s programom na stevec=20; 0.83331....

Kalkulator pa 0.01745 :S

PaX_MaN ::

V kalkulatorju prešalti na "Radians".

Meni lepo dela ta koda:

double vsota = 0;
stevec = 0;
		
while (stevec <= d)
{
	vsota += potenca(-1, stevec)*(potenca(x, ,2*stevec+1)/fakulteta(2*stevec+1));
	stevec++;
}


Pri d je 2000, pride rezultat 0.8414709848078965.

Zgodovina sprememb…

  • spremenilo: PaX_MaN ()

Lukeatluke ::

Potem je sinus prow.Pride sicer 0.8333, ampak je približno(na 20 števca natančno).

Rešitev:
package ConsoleApplication1;

/**
* Summary description for Program
*/
public class Program
{
public static double fakt(double n)
{
if ((n == 0) || (n == 1))
{
return 1;
}
else return n * fakt(n - 1);
}
public static double pot(double z, double s)
{
if (s == 0)
{
return 1;
}
else return z * pot(z, s - 1);
}

public static void main(String[] args)
{

double sinnx = 0;
double stevec = 1;
double x = 1;
double p = 3;
double r = 1;
int c = 0, d = 20;

sinnx = x;

while (stevec <= d)
{
x = (pot(x, p)) / (fakt(p));
if (stevec % 2 == 0)
{
sinnx = sinnx - x;
p = p + 2;
}
else if (stevec % 2 != 0)
{
sinnx = sinnx - x;
p = p + 2;
}

stevec++;
}
System.out.print("Vrednost sin od x= " + sinnx);
System.out.println();
}
}

Lukeatluke ::

arjan_t, ko želim spremeniti na kalkulatorju v radiane mi ni niti malo jasno kako, ko pa ne želim mi pa vedno rata :)

Po googlu dela in sedaj tudi cos.Zame je pa google vseved.:smeh:


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Ma lahko kdo pomaga napisat program v C++ nujno potrebujem.

Oddelek: Programiranje
111066 (158) FTad
»

[c#] Majhen problemček

Oddelek: Programiranje
10920 (728) darkolord
»

[java] Osnovna vprašanja

Oddelek: Programiranje
372491 (1498) killa bee
»

[c#] Vstavljanje vrednosti v tabelo

Oddelek: Programiranje
111527 (1349) Cvenemir
»

[Java] Liha potenca

Oddelek: Programiranje
81761 (1655) bijonda

Več podobnih tem