Автор Тема: Намиране на синус с Java  (Прочетена 5448 пъти)

koleto

  • Напреднали
  • *****
  • Публикации: 52
  • Distribution: Ubuntu
  • Window Manager: Gnome
    • Профил
    • WWW
Намиране на синус с Java
« -: Dec 01, 2010, 15:06 »
Здравейте. Искам да намеря синус на даден ъгъл на Java, без да ползвам Math.sin. За целта реших да използвам Ред на Тейлър.



Ето какво написах от тази сума:
Код
GeSHi (Java):
  1. /*
  2. * Calculating sin x
  3. *
  4. * @param x - size of the angle in degrees
  5. * @param p - accuracy of calculation
  6. * @return sin of x
  7. */
  8. public static double sin(double x, int p){
  9. double s = 0;
  10. for(int i=0; i<=p; i++){
  11. s += Math.pow(-1, i)*(Math.pow(x, 2*i+1)/fac(2*i+1));
  12. }
  13. return s ;
  14. }
  15.  
  16. /*
  17. * Calculating factorial
  18. *
  19. * @param x - number to factorial
  20. * @return x factorial
  21. */
  22. public static double fac(double x){
  23. if(x<=1)    
  24.            return 1;
  25.        else
  26.            return x * fac(x-1);
  27. }
  28.  

Проблема е че получавам грешен резултат. Нещо от рода на:

Math.sin(x)=0.5000000000000004
sin(x)=6.19795175229794E19

Ще се радвам ако някой ми помогне да си открия грешката. Мерси предварително.
« Последна редакция: Dec 01, 2010, 15:09 от koleto »
Активен

Поражение не съществува, докато човек не се признае за победен!

shoshon

  • Напреднали
  • *****
  • Публикации: 497
    • Профил
Re: Намиране на синус с Java
« Отговор #1 -: Dec 01, 2010, 16:07 »
Аз не съм кой знае колко добър с математиката, но в ред на Тейлор нямаше ли остатък?

Интересното е, че формулата ти е изключително неоптимизирана и отнема безкрайно много време да се изчисли. Което ме навежда на мислата - ти колко слагаш на p? със сисгурност трябва да е по-голямо от 200-300  за да получиш нещо точно.

От друга страна гледам, че разликата идва още в първите цифри, което говори за грешка от началото на итерацията.

Ама много ме мързи да го пиша...мда...
Активен

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Намиране на синус с Java
« Отговор #2 -: Dec 01, 2010, 16:44 »
Нямаш грешка в коденето. Сега го пробах на С++ правилно си смята.

double r = sin(0.52359, 10); // = 0.49999 което е правилно
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Намиране на синус с Java
« Отговор #3 -: Dec 01, 2010, 16:58 »
бе ти да не въвеждаш градуси?
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Намиране на синус с Java
« Отговор #4 -: Dec 01, 2010, 17:09 »
Код
GeSHi (Java):
  1. ...
  2. s += (Math.pow(-1, i)/fac(2*i+1))*Math.pow(x, 2*i+1);
  3. ...
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

shoshon

  • Напреднали
  • *****
  • Публикации: 497
    • Профил
Re: Намиране на синус с Java
« Отговор #5 -: Dec 01, 2010, 17:14 »
Код
GeSHi (Java):
  1. ...
  2. s += (Math.pow(-1, i)/fac(2*i+1))*Math.pow(x, 2*i+1);
  3. ...

Да те хванат, че да те цапнат...
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Намиране на синус с Java
« Отговор #6 -: Dec 01, 2010, 17:17 »
Да те хванат, че да те цапнат...

Пии ти до 4 па да те видим  тогава...
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Намиране на синус с Java
« Отговор #7 -: Dec 01, 2010, 19:27 »
Айде малко офтопик - кой ще го напише на Scheme/Lisp?  :P :P :P
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Намиране на синус с Java
« Отговор #8 -: Dec 01, 2010, 19:36 »
Айде малко офтопик - кой ще го напише на Scheme/Lisp?  :P :P :P

Айде още малко офтопик: Защо да се пише на Scheme като няма смисъл от това?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

lkr

  • Напреднали
  • *****
  • Публикации: 81
    • Профил
Re: Намиране на синус с Java
« Отговор #9 -: Dec 01, 2010, 20:57 »
Айде малко офтопик - кой ще го напише на Scheme/Lisp?  :P :P :P
Код
GeSHi (Scheme):
  1.  
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Намиране на синус с Java
« Отговор #10 -: Dec 01, 2010, 21:02 »
Радвам се, че се намират ентусиасти и че има хора без работа...
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: Намиране на синус с Java
« Отговор #11 -: Dec 01, 2010, 21:21 »
а за имането на хора без работа не би трябвало  ::)

cdiem

  • Напреднали
  • *****
  • Публикации: 21
    • Профил
Re: Намиране на синус с Java
« Отговор #12 -: Dec 01, 2010, 23:00 »
@koleto - ако сложиш повече скоби, мисля, че ще проработи
@mara, @backtolife - трия кода; няма смисъл от него (ще си го запазя за мен си, щото ми е първата работеща програма на този език ;b)
« Последна редакция: Dec 02, 2010, 09:22 от cdiem »
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Намиране на синус с Java
« Отговор #13 -: Dec 01, 2010, 23:03 »
Много ме кефите като почнете да си ги мерите - особено на Scheme. Някой на някой друг такъв безсмислен език няма ли да се включи? Нещо на руски или на китайски ала-бала.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Намиране на синус с Java
« Отговор #14 -: Dec 01, 2010, 23:17 »
Много ме кефите като почнете да си ги мерите - особено на Scheme. Някой на някой друг такъв безсмислен език няма ли да се включи? Нещо на руски или на китайски ала-бала.
Айде дай да ти видим Ц-острото като искаш нещо безсмислено :)

lkr, cdiem  [_]3 [_]3
« Последна редакция: Dec 01, 2010, 23:18 от bop_bop_mara »
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Стартиране на Java приложение !
Общ форум
Diabolic_Soul 4 8288 Последна публикация Feb 22, 2005, 00:22
от JOKe
Java IDE?
Идеи и мнения
toxigen 9 9627 Последна публикация Apr 06, 2005, 23:00
от Ivozen
Java/C++
Търсене
bronicman 2 4647 Последна публикация Dec 04, 2005, 19:57
от bronicman
C/C++/Java програмист
Търсене
MNachev 0 2551 Последна публикация Feb 15, 2006, 10:00
от MNachev
Java
Настройка на програми
ph5 18 4255 Последна публикация Oct 08, 2006, 11:26
от ph5