0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 7
|
||||||
1 | ||||||
Тангенс угла через ряд Тейлора24.09.2020, 19:47. Показов 7043. Ответов 6
Здравствуйте, у меня работает данная программа для нахождения маленьких углов. Но, например при нахождении угла в 6,28 радиан выдаёт ошибку. Как решить данную проблему?
(Возможно надо увеличить кол-во итераций, но тогда в значениях выдаётся -nan(ind).)
0
|
24.09.2020, 19:47 | |
Ответы с готовыми решениями:
6
Вычисление значения синуса угла разложением в ряд Тейлора Косинус через ряд Тейлора Косинус через ряд Тейлора Вычисление экспоненты через ряд Тейлора |
2129 / 1212 / 503
Регистрация: 11.10.2018
Сообщений: 6,120
|
|
24.09.2020, 20:15 | 2 |
- это не сработает для дробных.
Насколько я понимаю есть ряды где x должен быть x < 1, иначе ряд не сработает. Возможно у Вас этот ряд. Добавлено через 14 минут Дак для тангенса, же вроде свой ряд есть? Зачем sin и cos считать?
0
|
Модератор
|
||||||
24.09.2020, 20:55 | 3 | |||||
OpoPo, замените вычисления, чтобы обойтись без непосредственного вычисления факториала.
Покажу для sin(x), а для cos(x) сделаете по аналогии где предыдущий член ряда их соотношение таким образом
0
|
0 / 0 / 0
Регистрация: 13.09.2020
Сообщений: 7
|
|
24.09.2020, 22:09 [ТС] | 4 |
Мне нельзя использовать библиотеку math.
Добавлено через 1 минуту Я не понимаю последовательность для тангенса. Там какие-то странные преобразования.
0
|
Модератор
|
|
24.09.2020, 22:16 | 5 |
Для вычислений чисел Бернулли видел примерно с десяток алгоритмов.
В часности Функция подсчета чисел Бернулли Перенос на C не займёт много времени. Но, вероятно это и не требуется. Вычисляйте sin и cos по реккурентной формуле, сравнивайте cos с нулём и получайте тангенс.
0
|
Модератор
|
|||||||||||
25.09.2020, 10:42 | 7 | ||||||||||
Сообщение было отмечено OpoPo как решение
Решение
Мне кажется, что основная ошибка - непосредственное вычисление факториала. В итоге вычисляется 20!, что переполняет разрядность. При малом значении аргумента x это как-то компенсируется.
Для правильного вычисления нужно вычислять по реккурентной формуле. Но, ТС, похоже совсем не умеет программировать и код где-то нашёл, потому, что мои пояснения о реккурентных вычислениях он отмёл фразой т.е. даже без попытки разобраться. Добавлено через 34 минуты
Выходов может быть несколько: 1) уменьшить x до приемлемых значений вычитанием 2) использовать функции двойного (тройного) аргумента для вычисления sin и cos, т.е. x делится на 2k до достижения приемлемых значений, а потом последовательно вычислять функции удвоением аргумента до достижения значения x. Добавлено через 57 минут Процедура my_sincos. Делением на 2 приводим аргумент к значению не превосходящему 1,0 - получим условный z=x/2k. При этом подсчитываем количество таких делений - k. Для уменьшенного аргумента без проблем вычисляем значения sin(z) и cos(z). Потом по формулам удвоения аргумента в цикле k раз вычисляем sin(2z) и cos(2z) и окончательно получаем sin(x) и cos(x). Чтобы не вводить лишние переменные, вместо z используем x, тем боле, что после вычисления начального приближения через ряд Тейлора, ни значение x, ни значение z уже не требуется. Продемонстрирую подход со значением x=300, при котором непосредственное вычисление при помощи ряда Тейлора переполняет разрядную сетку.
2
|
25.09.2020, 10:42 | |
25.09.2020, 10:42 | |
Помогаю со студенческими работами здесь
7
Вычисление значения косинуса через разложение в ряд Тейлора Найти в треугольнике тангенс угла альфа и длину биссектрис Вычисление гиперболического косинуса через разложение в ряд Тейлора с помощью рекурсивной процедуры Тангенс через разложение в ряд Тейлора Тангенс угла в прямоугольном треугольнике зная тангенс другого угла Если разложить тангенс в ряд Тейлора, будет ли он расходиться или сходиться? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |