Найти cos(x) и sin(x) зная только угол, не используя таблиц

Rody
Сообщений: 14
Зарегистрирован: 27 ноя 2011, 21:00

Найти cos(x) и sin(x) зная только угол, не используя таблиц

Сообщение Rody » 17 фев 2012, 19:17

NT писал(а):Source of the post
А я бы обратил внимание на то, что внутри цикла (in Function ArcSin ... For n = 0 To 85 {...})
каждое обращение к функции Fact(n) , по-существу считает факториал с самого начала.
Не это Fact(2 * n), а это Fact(n)^ 2.

Можно было бы задекларировать ее с 2-я аргументами,
в случе если подан только 1 аргумент, то выполнять в цикле(так как было),
если поданы оба аргумента, то результат выдавать как произведение 1-го аргумента на 2-й аргумент.

Код: Выбрать все

Типа такого :

Function Fact(x As Long, Optional y As Double = 0) As Double
 If y > 0 Then
 Fact = y * x
 Exit Function
 End If

 Dim i As Long
 Fact = 1
 For i = 1 To x
 Fact = Fact * i
 Next i
End Function



Это, я так понимаю, лишь оптимизирует алгоритм (причем совершенно незначительно). На точность никак не повлияет. Ибо бейсик в любом случае считает в Double и если какое из значений перевалит за 9E+307, то Overflow.
Последний раз редактировалось Rody 28 ноя 2019, 17:30, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

Найти cos(x) и sin(x) зная только угол, не используя таблиц

Сообщение kiv » 17 фев 2012, 22:01

Rody писал(а):Source of the post
Попробовал. То, что Вы написали работает. Только вот как я не пытался найти член z^9, зная член z^7, так ничего и не вышло. Вот если бы Вы написали еще как зная член z^7, найти член z^9, искать закономерность было бы куда проще, и общую формулу выводить, разумеется, тоже.


Поделите (n+1)-й член суммы на n-й и получите то, что надо...

Кстати, и вопрос с переполнением факториалов снимется.
Последний раз редактировалось kiv 28 ноя 2019, 17:30, всего редактировалось 1 раз.
Причина: test

folk
Сообщений: 4177
Зарегистрирован: 11 сен 2009, 21:00

Найти cos(x) и sin(x) зная только угол, не используя таблиц

Сообщение folk » 17 фев 2012, 23:25

Cдается мне что при явном вычислении факториалов даже в double происходит потеря точности.
Последний раз редактировалось folk 28 ноя 2019, 17:30, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
master
Сообщений: 2167
Зарегистрирован: 09 апр 2006, 21:00

Найти cos(x) и sin(x) зная только угол, не используя таблиц

Сообщение master » 21 фев 2012, 20:54

Rody писал(а):Source of the post Если при 55 градусах погрешность составляет ~0,00000000001, то при 90 градусах, погрешность уже около 4-х градусов,

Толи ещё бдет, если посчитать синус/косинус 370°. Думаю имеет смысл воспользоваться предложением Таланов'а.
Последний раз редактировалось master 28 ноя 2019, 17:30, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 10 гостей