Как найти переменную с sin

Здравствуйте!

Извините за вери изи, не догоняю

Как в Си получить значения синуса(допустим 30, 60, 90 градусов). Т.е. я подставляю я sin(30), а он мне 0,5.

Запутался с этими радианами.

Спасибо.

задан 17 дек 2013 в 12:16

ВладиславМСК's user avatar

ВладиславМСКВладиславМСК

1,51311 золотых знаков37 серебряных знаков59 бронзовых знаков

1

1 ответ

Упс, наоборот сначала написал, градусы в радианы 🙂

sin(grad*(PI/180));

ответ дан 17 дек 2013 в 12:20

3

Функция sin() в C++ возвращает синус угла (аргумента) в радианах.

Эта функция определена в заголовочном файле <cmath>.

[Mathematics] sin x = sin(x) [In C++ Programming]

прототип sin() (в соответствии со стандартом C ++ 11)

double sin(double x);
float sin(float x);
long double sin(long double x);
double sin (T x); // For integral type

Параметры

Функция sin() принимает единственный обязательный аргумент в радианах.

Возвращаемое значение

Функция sin() возвращает значение в диапазоне [-1, 1]. Возвращаемое значение может быть в формате double, float или long double.

Пример 1. Как sin() работает в C ++?

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
  double x = 0.439203, result;
  
  result = sin(x);
  cout << "sin(x) = " << result << endl;
  
  double xDegrees = 90.0;
  
  // converting degrees to radians
  x = xDegrees*3.14159/180;
  result = sin(x);
  
  cout << "sin(x) = " << result << endl;

  return 0;
}

Когда вы запустите программу, вывод будет:

sin(x) = 0.425218
sin(x) = 1

Пример 2: функция с целым типом

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  int x = -1;
  double result;

  result = sin(x);
  cout << "sin(x) = " << result << endl;
  
  return 0;
}

Когда вы запустите программу, вывод будет:

sin(x) = -0.841471

Читайте также

  • 👉 Функция iscntrl() в C++
  • 👉 Функция isdigit() в С++
  • 👉 Функция isblank() в C++

На чтение 5 мин Просмотров 1.4к. Опубликовано 21.10.2021

В математике функция синуса входит в число трех основных функций, другие включают косинус и тангенс. Методы выполнения основных математических операций, таких как элементарные экспоненциальные, логарифмические, квадратные и математические операции, включены в заголовок <math.h>. Вы должны включить файл заголовка <math.h>, чтобы использовать эти функции. Функция sin принимает угол в радианах и выдает его значение синуса, которое может быть подтверждено с помощью кривой синуса.

Вы можете использовать закон синуса, чтобы найти любой произвольный угол в треугольнике, а также длину определенной стороны треугольника. Это фундаментальное тригонометрическое понятие. Функция sin используется в версиях языка C. ANSI / ISO 9899-1990. Sin () возвращает результат от 1 до -1.

Теперь давайте начнем с нескольких примеров функции sin () на языке программирования C.

Предварительные условия

  • Установка компилятора GCC в Windows / Linux

Примечание: мы используем компилятор GCC в Windows 10.

Содержание

  1. Пример 1
  2. Пример 2
  3. Пример 3
  4. Заключение

Пример 1

В нашей первой иллюстрации мы собираемся использовать функцию sin () в нашей программе. Изначально вам нужно открыть компилятор GCC и создать новый файл с любым требуемым именем. После этого вставьте в него следующий код.

Мы добавили несколько библиотек

Мы добавили несколько библиотек: <stdio.h> и <math.h>. После добавления перейдите к основной функции. В функции main () мы объявили две переменные, «a» и «result» с типом данных double. Одной из переменных мы присвоили ей значение «7.1» и вычислили ее значение sin; вывод будет сохранен в переменной «результат». Затем мы присвоили отрицательное значение переменной «a» и вычислили ее значение sin. После этого переменной «а» будет присвоен ноль, и результат ее вычисления будет сохранен в переменной «результат». Теперь мы готовы к выполнению программы. В строке меню компилятора GCC вы должны нажать на опцию «Скомпилировать и запустить», чтобы получить результат. Эта опция присутствует в меню «Сборка».

После добавления перейдите к основной функции

Как только вы нажмете на эту опцию, на вашем экране появится черный экран с названием «Консоль». Вы получите следующий прикрепленный результат, как показано на скриншоте ниже.

Вы получите следующий прикрепленный результат, как показано на скриншоте

Пример 2

Во втором примере мы будем использовать функцию sin () в нашей программе немного сложнее. Изначально вам нужно открыть компилятор GCC и создать новый файл с любым требуемым именем. Также можно использовать предыдущий файл. После этого вставьте в него следующий код.

Во втором примере мы будем использовать функцию sin

Мы добавили несколько библиотек: <stdio.h> и <math.h>. Мы добавили значение PI, как видно на скриншоте. После добавления перейдите к основной функции. В функции main () мы объявили три переменные «a», «retu» и «value» с типом данных double. Одной из переменных мы присвоили ей значение «79.0». Мы применили формулу, сохранили ее значение в переменной «retu» и вычислили ее значение sin; затем мы распечатали результат с помощью функции printf (). Теперь мы готовы к выполнению программы. В строке меню компилятора GCC вы должны нажать на опцию «Скомпилировать и запустить», чтобы получить результат. Эта опция присутствует в меню «Сборка».

Как только вы нажмете на эту опцию, на вашем экране появится черный экран с названием «Консоль». Вы получите следующий прикрепленный результат, как показано на прилагаемом ниже снимке экрана.

Как только вы нажмете на эту опцию, на вашем экране появится черный экран

Пример 3

В нашем третьем и последнем примере мы будем использовать функцию sin () в нашей программе немного по-другому. Этот пользователь должен ввести число во время выполнения, чтобы вычислить значение sin (). Изначально вам нужно открыть компилятор GCC и создать новый файл с любым требуемым именем. Также можно использовать предыдущий файл. После этого вставьте в него следующий код.

В нашем третьем и последнем примере мы будем использовать функцию sin

Мы добавили несколько библиотек: <stdio.h> и <math.h>. После добавления перейдите к основной функции. В функции main () мы объявили две переменные «Sineval» и «num» с типом данных double. Мы использовали функции printf () и scanf (). После этого мы вычислим sin () введенного пользователем значения и отобразим его результат.

Теперь мы готовы выполнить программу. В строке меню компилятора GCC вы должны нажать на опцию «Скомпилировать и запустить», чтобы получить результат. Эта опция присутствует в меню «Сборка». Как только вы нажмете на эту опцию, на вашем экране появится черный экран с названием «Консоль». Вы получите следующий прикрепленный результат, как показано на скриншоте ниже.

В строке меню компилятора GCC вы должны нажать на опцию

Как видите, мы ввели число «19» и тоже получили его результат. Номер можно выбрать в соответствии с вашими потребностями.

Номер можно выбрать в соответствии с вашими потребностями

Заключение

Эта статья представляет собой краткое введение в функцию sin () в языке программирования C. Мы разработали три различных примера для понимания пользователями. Все примеры разные по реализации. Теперь я надеюсь, что всякий раз, когда вы пытаетесь реализовать эти примеры в своей системе, вы легко поймете основную концепцию функции sin () в языке программирования C.

Постановка задачи. Вычислить значение тригонометрической функции sin(x) от произвольного значения аргумента x.

Вариант решения 1. Поищем готовый вариант решения. Тригонометрия – раздел математики. Предположим, что в библиотеке System реализован класс, связанный с математическими функциями (в библиотеках прежних языков всегда была функция извлечения квадратного корня из числа – sqrt()). Как же узнать название класса?

Воспользуемся интеллектуальной подсказкой. Внутри метода Main() консольного приложения наберем одну букву M в английской раскладке. В выпадающем меню выберем класс Math (по-английски математика – Mathematics или maths). Наведя мышкой на это слово, прочитаем:
«class System.Math. Предоставляет константы и статические методы для тригонометрических, логарифмических и иных общих математических функций».
Мы почти у цели.

После слова Math ставим точку и снова выбираем что-либо, например метод Sin. Прочтем подсказку:
« double Math.Sin(double a).  Возвращает синус указанного угла».
Выбрав Sin, откроем скобку « ( ». Снова  появится подсказка:
«double Math.Sin(double a) Возвращает синус указанного угла. a: —  Угол, измеряемый в радианах)».
Итак, если нам необходимо вычислить y=sin(x), где переменные  x  и  y должны быть объявлены типом double, то это можно сделать одним оператором:
 y = Math.Sin(x);

Если вы обратили внимание на третью подсказку, то вы знаете, или хотите узнать, что за единица измерения угла 1 радиан. В школе чаще всего вас приучили к измерению углов в градусах (прямой угол — 90°, развернутый — 180°, и т.д.), а при необходимости еще и в минутах и секундах.
Разработчики библиотеки не стали вводить еще один новый тип данных («градусный»), но обеспечили возможность для перевода градусов в радианы, добавив константу – число π (double Math.PI).
По определению, 1 радиан — центральный угол, длина дуги которого равна радиусу окружности, 2π радиан = 360°. Вспомните, что длина окружности радиусом R равна 2πR.
Составив пропорцию, вы сможете переводить угол a, заданный в градусах, в угол x, заданный в радианах:   x = a· π /180.
Проверка:     a=360°,  x=2π;     a=30°,  x=0,523598775598299.

Программа, реализующая вычисление sin(a), угол а задан в градусах, представлена ниже:

using System;
namespace sin_x_ЧерезРяд
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.Write("Вычисление sin(x)nУгол в градусах = ");
         double a = Convert.ToDouble(Console.ReadLine());
         double x, y;
         x = a * Math.PI / 180;
         Console.WriteLine("Угол в радианах = {0}",x);
         y = Math.Sin(x);
         Console.WriteLine("sin({0})={1}",x,y);
         Console.ReadKey();
      }
   }
}

Результат выполнения программы:
2193

Вариант решения 2.

Понятно, что метод Sin( ) есть некоторая подпрограмма класса Math, которая вызывается по имени. Однако может быть вам будет интересно узнать, как она устроена. Для этого мы дополним наш проект методом Sin2(x), в котором самостоятельно реализуем некоторый алгоритм вычисления sin(x). Тогда библиотечную функцию Sin(x) мы сможем использовать для задания ожидаемого результата при тестировании, а обсуждая алгоритм вычисления Sin2(x), мы освоим элементы языка C# и приобретем некоторые навыки программирования.

Заглянем в справочник по высшей математике, раздел «Ряды». Из него мы узнаем, что функция sin(x) может быть представлена бесконечным рядом:
sin(x)_ряд
В теории, вы скажете все красиво, но бесконечный ряд – это бесконечное время вычислений, кроме того, возможно переполнение при возведении в степень и вычислении знаменателя.

Справка. Через n! обозначается функция ФАКТОРИАЛ — произведение целых чисел от 1 до n. По определению 0!=1. Например, 3!=1·2·3;  7!=1·2·…·6·7.

Отметим, что ряд знакопеременный: + , — , + , — , …
Предположим, что |x|<=1. Тогда отношение двух соседних членов ряда rn+2 и  rn будет равно:
|rn+2 /  rn | = x2 / ((n+2)(n+1)) <= 1/((n+2)(n+1).

То есть каждый следующий член ряда будет вносить в сумму все меньший и меньший вклад, поэтому можно использовать столько членов ряда, сколько нужно для достижения заданной точности вычислений. Например, если n=9, то | r11 / r9 | <=1/110 (более чем в 100 раз).

Что следует предпринять, если  |x| >> 1  (много больше 1), ведь в этом случае наш критерий  работать не будет? Тут пригодится знание такого свойства функции sin(x) как периодичность. Для угла x, заданного в радианах:
sin(x+2πk) = sin(x), где k – любое целое число, 0, ±1, ±2, ±3, … .
Для угла а, заданного в градусах:
sin(a+360°·k) = sin(a), где k – любое целое число.
Таким образом, если угол х по модулю не будет больше 2π, |x|<=2π, то тогда оценка отношения двух соседних членов ряда не превысит:
|rn+2 /  rn | = 4π2 / ((n+2)(n+1))
т.е., начиная с n=7 убывание гарантировано.

Перейдем к программированию функции Sin2(x). Используем принцип 7 – проектирование сверху-вниз. Объявим в классе Program метод:
static double Sin2(double x)  {    }
а перед оператором  Console.ReadKey(); в методе Main() вставим:
y = Sin2(x);
Console.WriteLine(«sin({0})={1}», x, y);

Наша функция, также как и библиотечная, получает на вход значение угла в радианах и возвращает значение sin(x). Тип аргумента и самой функции задан как double. Приступим к разработке начинки метода Sin2() – блока в фигурных скобках.

Реализация 2.
Очевидный, но не лучший алгоритм состоит в непосредственной реализации формулы ряда: начальное значение суммы ряда s = x, затем в цикле for добавлять каждый вычисленный член ряда с чередованием знака rn=xn/n!, для чего будет необходимо написать еще две функции: возведение в степень и вычисление факториала.
Не совсем понятно, сколько раз выполнять цикл. Хотелось бы увязать необходимое число членов ряда с требуемой точностью вычислений eps.
Добавим в метод Sin2() локальную константу double eps = 1E-15.
Вместо цикла for применим цикл while (условие) {  }.
Введем две переменные: double r – активный член ряда, int n – степень.
Для учета смены знака используем функцию модуля числа – Math.Abs( ).

Тогда метод Sin2() может быть записан так:

static double Sin2(double x)
{
   const double eps = 1e-15;  // погрешность вычислений
   double s = 0;  // начальная сумма
   double r = x;   // первый член ряда
   int n = 1;         // показатель степени
   while (Math.Abs(r) > eps) // условие выполнения цикла
   {
      s=s+r;      // добавление члена ряда
      n = n + 2;  // наращивание  n:  1,3,5,7,...
      r=-r*x*x/(n*(n-1)); // новый член ряда
   }
   return s;       // возврат результата
}

Выполним тестирование программы:

Угол a, градусы Угол x, радианы Sin(x) Sin2(x)
0 0 0 0
30 0,523598775598299 0,5 0,5
60 1,0471975511966 0,8660254037844439 0,8660254037844438
90 1,5707963267949 1 1
270 4,71238898038469 -1 -1
360 6,28318530717959 -2,45E-16 -4,16E-15
10000 174,532925199433 -0,984807753012209 -3,07952784012437E+58

При углах, не превышающих 360°, оба метода дают практически одинаковый результат, погрешность почти не превышает eps=1E-15. При больших значениях углов Sin2() иногда выдает неверный результат (|sin(x)|<=1).
Учтем замечание о периодичности функции sin(x). Для этого вставим сразу после { один оператор, позволяющий учесть периодичность функции:
x = x — 2 * Math.PI * Math.Truncate(x/(2*Math.PI));
Примечание. Функция Truncate( ) класса Math вычисляет целую часть числа двойной точности с плавающей запятой.
Протестируйте результирующую программу sin_x_ЧерезРяд для произвольных углов.  В частности, Sin2(10000°)=-0,984807753012207.

Следующая учебная задача «Бином Ньютона».


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Помощь проекту:

Прототип функции sin:

double sin     (      double agl );
float sin      (       float agl );
long double sin( long double agl );

Заголовочный файл

Название Язык
math.h С
cmath С++

Описание

Вычисление синуса, функция sin возвращает синус угла agl, переведенного в радианы. В C++, эта функция перегружена в заголовочных файлах <complex> и <valarray> (смотреть sin комплексных чисел и  sin в библиотеке массивов числовых значений).

В Си, определён только один прототип этой функции, с типом данных double.

Параметры:

  • agl
    Значение с плавающей точкой, представляющее угол в радианах.

Возвращаемое значение

Синус угла agl.

Пример: исходный код программы

// пример использования функции синуса: sin

#include <iostream>                                    // для оператора cout
#include <cmath>                                       // для функции sin

#define PI 3.14159265                                  // число ПИ

int main()
{
  double param = 30.0; // угол 30 градусов

  std::cout << "Cинус угла "  << param
            << " градусов = " << sin(param * PI / 180) // вычисляем синус угла, переведённого в радианы
            << std::endl;
  return 0;
}

Пример работы программы

CppStudio.com

Cинус угла 30 градусов = 0.5

Добавить комментарий