Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
0 / 0 / 0
Регистрация: 18.12.2023
Сообщений: 11

Требуется найти угол

16.10.2025, 16:54. Показов 2870. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2025, 16:54
Ответы с готовыми решениями:

Определить по значению угла часовой стрелки значение угла для минутной стрелки
Часовая стрелка образует угол с лучом проходящим через центр и через точку соответствующую 12 часам...

Найти высоту и площадь равнобедренного треугольника с основанием a и углом при основании
Пожалуйста, помогите решить! Найти высоту и площадь равнобедренного треугольника с основанием a...

Найти площадь n-угольника
Даны натуральное число n,действительные числа x_(1,) y_(1,) x_2,y_2,…,x_(n,) y_n.Найти площадь...

23
5526 / 2879 / 572
Регистрация: 07.11.2019
Сообщений: 4,784
11.11.2025, 11:58
Студворк — интернет-сервис помощи студентам
А почему именно арктангенс считаете?
Можно же через только через скалярное произведение и арккосинус.
Вот что-то такое (11-12 знаков считает, но можно и улучшить точность):
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define M_SQRT1_2 0.70710678118654752440 
#define N_ 14
 
// Chebyshev approximation
 const double c[N_]={
    -1.693955204031365369132800e+01,
    4.083772776720088160118394e+01,
    -4.826827931959892481472707e+01,
    3.277951989313128677849818e+01,
    -1.572536904138304336697729e+01,
    4.058371067014828525998382e+00,
    -1.816150702574165443081711e+00,
    -8.438273661947545134509596e-01,
    -1.296794854007237374204919e+00,
    -1.739800237377575164998689e+00,
    -2.557883718166438224983494e+00,
    -4.297182744325205305813142e+00,
    -9.549296591078768159377432e+00,
    -5.729577951307521743729012e+01
};
 
double my_acos(double x) {
 bool is_negate, is_big;
 double sq_x=x*x;
 double result=0.0; 
  if (x<0) {
  x=-x;
  is_negate=true;
  }
 if (x> M_SQRT1_2 ){
  sq_x=1-sq_x;
  x=sqrt(sq_x);
  is_big=true;
  }
 for (int i=0; i<N_; i++) {
        result = result*x + c[i]; 
        result = result*x;
         }
 (is_big) ? (result=-result) : (result+=90.0);
  if (is_negate) {result=180.0-result;}  
 return result;
}
 
 
int  main() {
 double d;
 double result;
 
 printf("Enter a double: ");
 scanf("%lg", &d);
 result = acos(d);
 printf("\nlm_acos(%lg) = %3.20e\n", d, result*180/M_PI);
 printf("my_acos(%lg) = %3.20e\n", d, my_acos(d)); 
 return 0;
}
1
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
12.11.2025, 14:32
Цитата Сообщение от u235 Посмотреть сообщение
арккосинус
согласен, что через acos будет лучше
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,931
Записей в блоге: 5
13.11.2025, 23:51
C
1
    long double e = 1 - 1e-4L;
Вот здесь сомнительно. Чем ближе x к краям отрезка [-1,1] тем ряд хуже сходится. Поэтому вы применяете формулу для приведения x к отрезку [-sqrt(2)/2, sqrt(2)/2]. Но применяете ее, когда x уж очень близко к краю. По-моему, надо действовать решительнее и положить, к примеру
C
1
    long double e = 0.708L;
По идее точность для каких-то значений x должна повыситься.
Кроме того непонятен код
C
1
2
if (x > 1.0L) return 1.0L;
if (x < -1.0L) return PI;
По-моему, надо возвращать значения пи/2 и -пи/2
(Хотя этот код не должен повлиять на результат.)

Добавлено через 11 минут
Да у вас и формула приведения неправильно запрограммирована.
C
1
2
3
4
5
6
    if (x > e || x < -e) {
        if (x > e) {
            return PI/2.0L - arcsin(Sqrt(1.0L - x*x));
        } else {
            return PI/2.0L + arcsin(Sqrt(1.0L - x*x));
        }
Во втором случае перед PI должен стоять минус.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,931
Записей в блоге: 5
13.11.2025, 23:55
Посмотрите, как эта формула записана в книге Люстерника и Червоненкиса
https://www.cyberforum.ru/atta... 1763067303
Миниатюры
Требуется найти угол  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2025, 23:55

Найти площадь треуголььника две стороны которого равны a и b, а угол между ними
Задача: Найти площадь треуголььника две стороны которого равны a и b, а угол между ними y формула:...

Найти периметр n-угольника по координатам его вершин.
Работа на функции, задание: Найти периметр n-угольника по координатам его вершин. (сформировать...

Найти среднее арифметическое скольких угодно чисел
я нашел среднее арифмитическое и среднне гоеметрическое двух чисел #include&lt;stdio.h&gt; main() {...

Найти длины диагоналей параллелограмма по двум смежным сторонам и углу между ними
Нужно написать программу на языке СИ , Условие: Составить программу для нахождения длин...

Найти величину той силы, которая имеет наименьший угол с осью x
Друзья, помогите я запутался во всем этом:(


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru