Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Натуральный логарифм в си шарп

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

Пожалуйста, приостановите работу 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 # | Метод 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 .

Примечание . Возвращаемое значение всегда зависит от переданного аргумента. Ниже таблицы изображены разные случаи:

valbaseReturned Value
val > 0(0 1)logbase(val)
val 1-ve Infinity
val = +ve Infinity(0 1+ve Infinity
val = 1base = 0
val = 1base = +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

Это уже известное нам выражение определяющее ввод знака ^ и если знак введён, то произвести вычисление степени. Запустим приложение и убедимся, что оно исправно работает.


И, в заключение этого урока, добавим на форму ещё одну кнопку которая, для удобства пользователя, будет очищать все поля ввода и результата.

Двойным щелчком на кнопки создадим функцию события нажатия на кнопку. Добавим код очистки всех текстовых полей:

Ссылка на основную публикацию
Adblock
detector