Автор
|
Тема: Please, help me!
|
neofit |
опубликован 10-04-2001 20:38 MSK
Господа программеры, помогите новичку написать программу на С++, которая вычисляет синус, как сумму ряда вида x-x^3/3+x^5/5-... с заданной точностью, а затем сравнивает полученный результат с результатом вычисления синуса стандартной библиотечной функцией С++
|
Kosha
|
опубликован 10-04-2001 20:58 MSK
Тебе надо с ЛЮБОЙ точностью? (ну, ограниченную Double'ом или, например, полмиллиона знаков?)
|
OlegO
|
опубликован 11-04-2001 10:57 MSK
Вроде так :double Compare(double Eps, double X) { double Fx = 0, Fxold = 0, PoxX = X; long i = 1; int minus = 1; do { Fxold = Fx; Fx += minus*PoxX/i; PoxX *= X*X; i+=2; minus *= -1; } while((Fx-Fxold)>=Eps); return (Fx - sin(X)); } |
Kosha
|
опубликован 11-04-2001 15:26 MSK
2OlegO:ну эта функция возвращает довольно ограниченное приближение - опять же в районе double. а как сделать, чтобы выражение вычислялось по знаку, хоть миллион? |
OlegO
|
опубликован 11-04-2001 20:27 MSK
в районе double ??? double 1.7E +/- 308 куда больше :) ??? или я что-то не понял
|
Kosha
|
опубликован 11-04-2001 21:24 MSK
Ну, я так понял, что нужна своя мат-библиотека. Если синус вычислять с помощью той же формулы и с такой же точностью, с помощью которой ее вычисляет сопроцессор, на фига это вообще надо??? |
OlegO
|
опубликован 12-04-2001 12:18 MSK
пусть neofit рассудит, что надо :) |