Уравнение второй степени на си

Стандартные математические функции в языке Си

Пожалуйста, приостановите работу AdBlock на этом сайте.

Математические вычисления не ограничиваются лишь арифметическими действиями. Кроме них, можно ещё встретить корни, модули, логарифмы, тригонометрические функции и пр. Научимся же использовать подобные функции в своих программах.

Для использования математических функций нужно подключить заголовочный файл math.h . В ней определено много различных функций, но мы пока рассмотрим следующие:

Некоторые математические функции

fabs(x) модуль числа x
sqrt(x) квадратный корень из числа x
sin(x) синус числа x (х в радианах)
cos(x) косинус числа x (х в радианах)
pow(x, y) вычисление x y
exp(x) вычисление e x
log(x) натуральный логарифм числа x
log10(x) десятичный логарифм числа x

Два важных момента.

  • Все функции возвращают значение типа double .
  • Параметры функций – вещественные числа( double ), но можно передавать и целые числа. При этом произойдёт неявное преобразование типа . Компилятор из целого числа, например 3, сделает вещественное 3.0.

Примеры.
Даны длины катетов прямоугольного треугольника. Вычислить длину гипотенузы. Простая задачка на знание теоремы Пифагора.

Вычислить синус угла ввёденного с клавиатуры. Угол вводится в градусах.

В этой программе есть о чём поговорить. Тригонометрические функции, которые определены в math.h работают с радианной мерой угла. Людям же привычнее работать с градусами. Поэтому в данной программе мы предварительно перевели значение из градусов в радианы. Если этого не сделать, результат получится неправильным. Проверьте это самостоятельно.

Неявное преобразование типов

При явном преобразовании типа мы в скобках перед значением указывали тип, к которому нужно привести данное значение. В неявном преобразовании этого делать не нужно. Компилятор автоматически подберёт необходимый тип.

Неявное преобразование типов осуществляется в следующих случаях:

  1. перед передачей аргументов в функцию (как в нашем примере с корнем. Листинг 1.)
  2. выполнение арифметических операций с разными типами аргументов
  3. перед выполнением присваивания

Правила неявного преобразования типов

  • если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
    Порядок типов: int float double
  • при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.

int+float будет автоматически преобразовано к float+float
float/int будет автоматически преобразовано к float/float
double*float будет преобразовано к double*double
int = double double будет преобразовано к int с потерей дробной части
float = int int будет преобразовано к float

Практика

Решите предложенные задачи:

Для удобства работы сразу переходите в полноэкранный режим

Степень в C, C++ и С#: как возвести число в любую степень, побитовые операции

Возведение в числа в степень в C и C++

Для того чтобы возвести число в степень можно воспользоваться функцией pow()

Рассмотрим короткий пример

Функция pow является частью библиотеки cmath, и поэтому её заголовок обязательно должен быть подключен в секции #include, как это сделано в примере. Также cout и cin являются частью библиотеки iostream и она у нас тоже подключена.

Давайте рассмотрим еще несколько примеров:

Пример, в котором степень и число задается пользователем:

Этот пример уже сложнее тем, что числа, которые мы будем возводить в степень вводит пользователь.

Возведение числа 2 в степень n при помощи сдвига на n бит

Пояснение: возведение «2» в степень «n» реализуется с помощью сдвига, в общем случае:

  • сдвиг влево (в сторону старших разрядов) реализует умножение на два,
  • сдвиг вправо (в сторону младших разрядов) реализует деление на два.

Число n должно быть целочисленным.

Пример, в котором не используется функция pow()

В этом примере пользователь вводит числа n и a . Где n — число, которое возводится в степень, a — степень числа. В цикле for, мы умножаем число n на само себя a раз и в результате получаем степень.

Об уравнениях высших степеней

Как правило в физике, информатике и экономике мы сталкиваемся с простейшими линейными, или дробно-рациональными уравнениями, реже с квадратными. А что до уравнений третьей и четвёртой степени? Если вам интересно, то прошу под кат.

Для начала рассмотрим понятие уравнения высшей степени. Уравнением высшей степени, называется уравнение вида:


В этой статье я рассмотрю:

1. Кубические уравнения.
2. Возвратные кубические.
3. Применение схемы Горнера и теоремы Безу.
4. Возвратные биквадратные уравнения.

Кубические уравнения

Кубические уравнения, это уравнения, в которых у неизвестной при старшем члене степень равна 3. Кубические уравнения имеют следующий вид:

Решать такие уравнения можно по разному, однако мы воспользуемся знаниями базовой школы, и решим кубическое уравнение методом группировки:

В данном примере используется метод группировки, группируем первые два и последние два члена, получая равные скобки, снова выносим, получая уравнение из двух скобок.

Произведение равно нулю тогда, и только тогда, если хотя бы один из множителей равен нулю, на основании этого мы каждый множитель (скобку) приравниваем к нулю, получая неполное квадратное и линейное уравнения.

Также стоит отметить, что максимальное количество корней уравнения, равно степени неизвестной при главном члене, так в кубическом уравнении может быть не более трёх корней, в биквадратном (4-ой степени) не более четырёх корней и. т. д.

Возвратные кубические уравнения

Возвратные кубические уравнения имеют вид:

Возвратными они называются потому что коэффициенты будут зеркально повторяться. Подобные уравнения тоже решаются школьными методами, но чуть хитрее:

Сначала производится группировка, потом при помощи формул сокращённого умножения мы раскладываем получаемое на множители. Снова получаем 2 равные скобки, «выносим их». Получаем два множителя (скобки) и решаем их как два различных уравнения.

Теорема Безу и схема Горнера

Теорема Безу была открыта, как ни удивительно, Этьеном Безу, французским математиком, занимавшимся в основном алгеброй. Теорему Безу, можно сформулировать следующим образом:

Давайте разберёмся. P(x) — это какой-либо многочлен от x, (x — a) — это двучлен в котором a — это один из целых корней уравнения, который мы находим среди делителей свободного члена.

Три точки, это оператор обозначающий что одно выражение делится на другое. Из этого следует что найдя хотя бы один корень данного уравнения, мы сможем применить к нему эту теорему. Но зачем нужна эта теорема, каково её действие? Теорема Безу — это универсальный инструмент, если вы хотите понизить степень многочлена. Например, при её помощи, кубическое уравнение, можно превратить в квадратное, биквадратное, в кубическое и т. д.

Но одно дело понять, а как поделить? Можно конечно, делить и в столбик, однако этот метод доступен далеко не всем, да и вероятность ошибиться очень высока. Поэтому есть и иной путь, это схема Горнера. Её работу я поясню на примере. Предположим:

И так, нам дан многочлен, и мы возможно заранее нашли один из корней. Теперь мы рисуем небольшую табличку из 6 столбцов и 2 строк, в каждый столбец первой строки (кроме первого), мы вносим коэффициенты уравнения. А в первый столбец 2 строки мы вносим значение a (найденный корень). Потом первый коэффициент, в нашем случае 5, мы просто сносим вниз. Значения последующих столбиков мы рассчитываем так:

(Картинка позаимствована здесь)
Далее поступаем точно так же и с остальными столбцами. Значение последнего столбца (2 строки) будет остатком от деления, в нашем случае 0, если получается число отличное от 0, значит надо избрать другой подход. Пример для кубического уравнения:

Возвратные биквадратные уравнения

Выше мы так же рассматривали возвратные кубические уравнения, а теперь разберём биквадратные. Их общий вид:

В отличие от кубического возвратного уравнения, в биквадратном пары, относительно коэффициентов, есть не у всех, однако в остальном они очень схожи. Вот алгоритм решения таких уравнений:

Как видно, решать такие уравнения совсем не просто. Но я всё равно разберу и этот случай. Начинается решение с деления всего уравнения на x^2. Далее мы группируем, здесь я специально ввёл дополнительную строку для ясности. После этого мы совершаем хитрость, и вводим в первую скобку 2, которую мы сначала прибавляем, а после вычитаем, сумма всё равно не изменится, зато теперь мы можем свернуть эту скобку в квадрат суммы.

Уберём -2 из скобки, предварительно домножив его на a, после чего вводим новую переменную, t и получаем квадратное уравнение.

А теперь перейдём к примеру:

Основная часть так же как и в обобщённом алгоритме, делим на x^2, группируем, сворачиваем в полный квадрат, выполняем подстановку переменной и решаем квадратное уравнение. После этого полученные корни подставляем обратно, и решаем ещё 2 квадратных уравнения (с умножением на x).

Область применения

В виду своей громоздкости и специфичности уравнения высших степеней редко находят себе применение. Однако примеры всё же есть, уравнение Пуассона для адиабатических процессов в Физике.


источники:

http://phpstack.ru/other/c-plus-plus-pow.html

http://habr.com/ru/post/484902/