Натуральный логарифм в си шарп
Стандартные математические функции в языке Си
Пожалуйста, приостановите работу 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.)
- выполнение арифметических операций с разными типами аргументов
- перед выполнением присваивания
Правила неявного преобразования типов
- если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
Порядок типов: int float double - при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.
int+float будет автоматически преобразовано к float+float
float/int будет автоматически преобразовано к float/float
double*float будет преобразовано к double*double
int = double double будет преобразовано к int с потерей дробной части
float = int int будет преобразовано к float
Практика
Решите предложенные задачи:
Для удобства работы сразу переходите в полноэкранный режим
C # | Метод Math.Log ()
В C # Math.Log () является методом класса Math. Используется для возврата логарифма указанного числа. Этот метод может быть перегружен путем изменения количества передаваемых аргументов. Всего в списке перегрузки метода Math.Log () 2 метода:
- Math.Log (Double) Метод
- Math.Log (Double, Double) Метод
Math.Log (Double) Метод
Этот метод используется для возврата натурального (базового e) логарифма указанного числа.
Синтаксис:
Параметр:
val: It is the specified number whose natural (base e) logarithm to be calculated and its type is System.Double.
Возвращаемое значение: Возвращает натуральный логарифм val и его тип — System.Double .
Примечание. Параметр val всегда указывается в виде базового числа 10. Возвращаемое значение зависит от переданного аргумента. Ниже приведены некоторые случаи:
- Если аргумент положительный, метод вернет натуральный логарифм или log e (val) .
- Если аргумент равен нулю , то результатом является NegativeInfinity .
- Если аргумент отрицательный (меньше нуля) или равен NaN , то результатом является NaN .
- Если аргумент — PositiveInfinity , то результатом является PositiveInfinity .
- Если аргумент NegativeInfinity , то результатом является NaN .
Пример:
// C # программа для демонстрации работы
// метода Math.Log (Double)
public static void Main(String[] args)
// двойные значения, чей логарифм
double nan = Double.NaN;
double positiveInfinity = Double.PositiveInfinity;
double negativeInfinity = Double.NegativeInfinity;
// Вход — положительное число, поэтому выводим
// будет логарифмом числа
// положительный ноль в качестве аргумента, поэтому вывод
// Ввод отрицательного числа, поэтому вывод
// Ввод NaN, поэтому вывод
// Вход является PositiveInfinity, поэтому выводим
// Ввод NegativeInfinity, поэтому вывод
Math.Log (Double, Double) Метод
Этот метод используется для возврата логарифма указанного числа в указанной базе.
Синтаксис:
Параметр:
val: It is the specified number whose logarithm to be calculated and its type is System.Double.
base: It is the base of the logarithm of type System.Double.
Возвращаемое значение: возвращает логарифм val, а его тип — System.Double .
Примечание . Возвращаемое значение всегда зависит от переданного аргумента. Ниже таблицы изображены разные случаи:
val | base | Returned Value |
---|---|---|
val > 0 | (0 1) | logbase(val) |
val 1 | -ve Infinity | |
val = +ve Infinity | (0 1 | +ve Infinity |
val = 1 | base = 0 | |
val = 1 | base = +ve Infinity |
Пример:
// C # программа для демонстрации работы
// метода Math.Log (Double, Double)
public static void Main(String[] args)
// Здесь val = 1.3, а base 0.3
// вывод будет логарифмом заданного значения
// Здесь val равен 0.5, а base> 1, затем выводим
// Здесь val равен 0.7, а base = 1, затем выводим
// Здесь val равен 0.7, а base равен NaN, а затем выводится
Натуральный логарифм в си шарп
Приложение «Калькулятор» На первом занятии мы уже создавали простое приложение. Создадим ещё одно, назовём его Lesson2, и рассмотрим некоторые свойства формы и визуальных элементов. При этом мы будем создавать приложение «калькулятор». Итак, сначала присвоим форме заголовок «Калькулятор» (не путать с именем формы). Заголовок задаётся свойством Text. Панель свойств находится в правой части экрана.
Покрасим форму, например, в темно-синий цвет. Для этого найдём в редакторе свойств строку BackColor и выпадающем списке выберем нужный цвет.
Мы будем делать немного нетрадиционный калькулятор, в отличие, например от Windows калькулятора. Он будет иметь отдельные строки для ввода аргументов, знака математического действия и результата вычислений.
Поставим на форму четыре текстовых поля textBox1 . textBox4 сверху вниз.
Напротив каждого текстового поля поставим метки Label и в свойстве Text меток введём надписи, показанные на рисунке. Цвет надписей меток можно изменить свойством ForeColor.
Добавим кнопку и создадим событие на нажатие кнопки «Вычислить». Событие можно создать двойным щелчком на выделенной кнопке или, на панели свойств и событий, переключиться на раздел события (Properties) и выбрать событие Click.
Так же, двойным щелчком следует создать событие button1_Click. Допишем в полученную функцию обработчика события следующие строки (помечены синим цветом):
private void button1_Click(object sender, EventArgs e)
<
double x, y, z;
string znak = «»;
x = Convert.ToDouble(textBox1.Text);
y = Convert.ToDouble(textBox3.Text);
z = 0;
znak = textBox2.Text;
if (znak == «+») z = x + y; else
if (znak == «-«) z = x — y; else
if (znak == «/») z = x / y; else
if (znak == «*») z = x * y; else
textBox4.Text = Convert.ToString(z);
>
Объявление переменных и способы записи выражений. Рассмотрим подробно все строки написанные в функции обработчика события.
Строка double x, y, z; — объявляет три переменные x, y и z (x и y — для вводимых значений и z для хранения результата вычислений) типа double. Тип double выбран с тем расчётом, что калькулятор должен уметь вычислять максимально большие числа.
При объявлении переменных любого типа им присваивается имя. Имя переменной должно начинаться с латинской буквы за которой могут следовать числа, например x256. Переменная может быть словом, например означающем назначение переменной input_x, out_y. Несколько переменных одного типа записываются через запятую. Выражение объявления переменных завершается точкой с запятой. При объявлении имени переменной и последующему её вызову в программе, регистр символов имеет значение. Так переменные Input_x и input_x являются независимыми, то есть это не одна переменная, а две.
Следующая строка программы string znak = «»; объявляет переменную znak (для хранения знака математической операции) типа string — строка и сразу этой переменной присваивается начальное значение — пустая строка.
Строка x = Convert.ToDouble(textBox1.Text); преобразует первую числовую строку введённую пользователем в textBox1 в число и присваивает это число переменной x. Аналогичное назначение следующей строки — преобразование и присваивание числа переменной y.
В строке z = 0; присваиваем начальное значение переменной z. В языке C# принято инициализировать переменные до обращения к ним из программы. Если не написать эту строку то компилятор (компилятор — программа преобразующая текст программы в цифровой код понятный для ЭВМ) выдаст предупреждающее сообщение, но программа всё равно будет работоспособна.
Строкой znak = textBox2.Text; мы получаем символ знака оперции введённый пользователем в textBox2 и присваиваем его переменной znak.
Далее, нам нужно проверить какой знак операции ввёл пользователь. Строка if (znak == «+») z = x + y; определяет ввёл ли пользователь знак +. Прочитать эту строку можно так: Если (if) переменная знак (znak) равна символу «+» то результат вычисления будет z = x + y. В скобках выражения записана проверка истинности выражения.
Для проверки истинности выражений в операторе if следует использовать следующие знаки сравнения:
== проверка равенства
!= проверка неравенства
больше
= больше или равно
Следующие три строки:
if (znak == «-«) z = x — y; else
if (znak == «/») z = x / y; else
if (znak == «*») z = x * y; else
выполняют проверку на ввод остальных математических знаков и, соответственно, производят вычисления. Слово else в конце каждой строки означает «иначе», то есть, если условие не выполнено, то иначе нужно проверить следующее условие.
И, наконец, строка textBox4.Text = Convert.ToString(z); выводит полученное значение z в textBox4. В связи с тем, что переменная z числового типа, а вывести в textBox4 мы можем только строковый тип, то нужно преобразовать число в строку функцией Convert.ToString.
Калькулятор готов, можно проверить его работоспособность нажав клавишу F5.
Примечание — при вводе чисел с плавающей запятой, в Windows принято вводить разделитель запятую, а не точку, как это принято в DOS.
Логические операции. Известно, что при делении на 0 возникает ошибка. Попробуем исключить такую ошибку, если пользователь введёт знаменателем 0. Доработаем строку определяющую ввод знака деления:
В этой строке мы написали: если знак равен наклонной черте ((znak == «/») и && второй аргумент (знаменатель) равен 0 (y == 0) то выводится сообщение об ошибке MessageBox.Show(«Ошибка! Деление на 0»); иначе else можно вычислить результат деления z = x / y;. Из этой строки видно, что сложные логические выражения записываются в скобках. В сложных логических конструкциях следует использовать следующие операторы:
&& — логическое «И»
|| — логическое «ИЛИ»
Введя изменения, посмотрим, как работает программа в такой ситуации.
Встроенные математические функции. Итак, калькулятор готов, но производить только арифметические действия не тнтересно, поэтому расширим возможности нашего калькулятора введя вычисление некоторых математических функций. Язык C# имеет большую коллекцию функций математической обработки данных, основные из них приведены в таблице:
Запись на C# | Возвращаемый результат |
Math.Abs(Х); | Модуль числа Х |
Math.Ceiling (Х); | Округление числа Х до большего целого |
Math.Floor(Х); | Округление числа Х до меньшего целого |
Math.Cos (Х); | Косинус аргумента Х |
Math.E | Число е. е = 2,718282 |
Math.Exp (Х); | Экспонента, число е в степени Х |
Math.Log(Х); | Логарифм натуральный числа Х |
Math.Log10(Х); | Логарифм десятичный числа Х |
Math.Max(Х,Y); | Максимум из двух чисел Х и Y. |
Math.Min (X,Y); | Минимум из двух чисел Х и Y. |
Math.Pi | Число пи. |
Math.Pow(X,Y); | Число X в степени Y |
Math.Round(Х); | Простое округление числа Х |
Math.Sing(Х); | Знак числа Х |
Math.Sin(Х); | Синус аргумента Х |
Math.Sqrt(Х); | Квадратный корень числа Х |
Math.Tan(Х); | Тангенс аргумента Х |
Примечание: аргументы тригонометрических функций задаются в радианах.
Добавим в наш калькулятор, например, возведение в степень Y числа X. Нам нужно выбрать обозначение этой операции. Степень принято обозначать значком ^. Для расширения возможностей калькулятора добавим ещё строки в код обработчика события:
if (znak == «^») z = Math.Pow(x, y); else
Это уже известное нам выражение определяющее ввод знака ^ и если знак введён, то произвести вычисление степени. Запустим приложение и убедимся, что оно исправно работает.
И, в заключение этого урока, добавим на форму ещё одну кнопку которая, для удобства пользователя, будет очищать все поля ввода и результата.
Двойным щелчком на кнопки создадим функцию события нажатия на кнопку. Добавим код очистки всех текстовых полей: