Вычислить значения функции java

Класс
математических вычислений Math

Порой необходимо сделать более серьезные вычисления, чем сложить или помножить два числа. На практике постоянно нужно или посчитать квадратный корень, или возвести в степень, или взять модуль. Также часто нужно генерировать случайные числа, чтобы программа каждый раз вела себя по-новому, задавала уникальные вопросы, располагала персонажей на экране в других положениях и так далее. Для всего этого в Java есть встроенный класс Math.

Пусть, к примеру, есть объявление, что площадь квадратного участка земли составляет 9 соток, и вы хотите посчитать длину стороны такого участка. Сотка — это 100 квадратных метров, а значит 9 соток — это 900 кв. метров. Длина стороны будет квадратным корнем из площади квадрата. Для расчета стороны нам поможет класс Math, и вот как он работает:

// объявить дробное x и приравнять к результату вычисления double x = Math.sqrt (900); // Math.sqrt - функция sqrt класса Math. // Она вычисляет квадратный корень из своего параметра. // В данном случае корень из 900 будет 30

Данный код запускает функцию sqrt, сокращенно от square root – квадратный корень. Скобки обозначают «запустить функцию с параметром», он сейчас равен 900. То есть мы вычисляем квадратный корень из 900, он равен 30, поскольку 30*30=900. Полученную десятку мы записываем в переменную икс. Если не записать результат вычисления в переменную или ещё как-то его не использовать, то он сразу стирается как ненужный.

В этом примере мы запускаем функцию, которая возвращает значение. Так устроены все вычислительные функции – они берут параметры, делают вычисления и выдают результат там же, где были вызваны. Так и здесь вместо

double x = 10; //в место вызова Math.sqrt(100) подставится результат - 10

потому что sqrt вернет число 10, и десятка подставится на место вызова sqrt. Мы вскоре сами будем писать функции, которые возвращают значение. Пока что воспользуемся библиотечными.

Читайте также:  Encrypt and decrypt python

Класс Math содержит много функций для самых разных вычислений. Доступ к ним идет через слово Math и точку вот так:

package javaapplication1; public class JavaApplication1 < public static void main(String[] args) < //вызовем функцию println System.out.println ("Пользуемся Math"); // Объявим переменную x, равную корень из 100 double x = Math.sqrt (100); // Теперь объявим y, равную корню из x, double y = Math.sqrt (x); // Выведем на экран значение y System.out.println (y); // Попробуем посчитать корень из отрицательного числа double z = -10; /* Подставим вызов sqrt прямо в println – да, так можно. Мы увидим NaN – not a number, т.е. не число, потому что корня из отрицательного числа не существует. */ System.out.println (Math.sqrt (z)); /* Попробуем ещё функции. Модуль или abs от absolute – абсолютный – эта операция убирает у числа знак минус. Переменная z была -10, а станет просто 10 */ z = Math.abs (z); /* Применим теперь возведение в степень pow – от слова power – степень. Pow принимает два параметра, назовем их a и b, они указываются в скобках через запятую. Pow вернет a в степени b. Например пусть a = 2, b = 3, то есть возведем 2 в степень 3 и получим 8. */ double a = 2; double a_cube = Math.pow (a, 3); System.out.println (a_cube); // Округлим дробное число до наименьшего целого – это ceil double s = Math.ceil (2.7); // Будет 2 System.out.println (s); // Округлим число до наибольшего целого – это floor s = Math.floor (2.7); // Будет 3 System.out.println (s); /* Функция signum возвращает 1, если число положительное и -1, если отрицательное. Так мы можем узнать знак числа */ double res = Math.signum (-10); // Будет -1 System.out.println (res); /* также есть все функции тригонометрии – синус sin, косинус cos и так далее. Число pi обозначается Math.PI. Например, sin (pi/3) будет так: */ res = Math.sin (Math.PI / 3); /* Полный список функций доступен, например, на сайте официальной документации и легко находится в гугл запросом «класс Math Java». В качестве примера гугл выдал ссылку - http://java-help.ru/java-lang-math/ - там полный список функций этого класса с примерами и описанием. А вот ссылка на официальную документацию: https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html Документация просто содержит описание всех функций всех стандартных классов. Она пока существует только на английском, но написана простым техническим языком. Учитесь гуглить, читать форумы, документацию, справочники, стандарт языка. Огромное количество начальных вопросов подробно разобрано – ищите и найдёте! Это очень важное умение для программиста, не пренебрегайте им! На нашем онлайн курсе progtoday.ru преподаватели дают принципы программирования и подталкивают участников к максимальной самостоятельности. */ >/* По достижении закрывающей фигурной скобки переменные уничтожаются. Поскольку это был main, вся программа завершается. */ >

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

// вычислим квадратный корень из 81, вычислим 2 в степени 3 // вычтем одно из другого и дадим на вход функции abs double y = Math.abs ( Math.sqrt (81) - Math.pow (2,3) ); // теперь y будет положительной независимо от знака разности // это бывает удобно, когда вы не уверены в знаке результата, а вам нужен положительный. // снова дадим результат вычисления одной функции на вход другой: System.out.println ( Math.sqrt (81) ); // распечатать квадратный корень из 81 // Такие комбинации можно делать сколько угодно раз - // результат предыдущей функции подается на вход следующей и так далее. // к примеру можно вычислить квадратный корень из двух в кубе: double z = Math.sqrt ( Math.pow ( 2,3) ); 

Очень часто бывает нужно получить случайные числа. Например, в следующих темах мы с вами сделаем игру в лотерею, и нужно будет генерировать случайное счастливое число, а пользователь будет его угадывать — каждый раз разное. На помощь приходит простая функция Math.random, которая при запуске возвращает очередное случайное число в диапазоне от 0 до 1. Хотите диапазон от 0 до 100? Умножьте полученное число на 100. Подробнее посмотрим в коде:

// сгенерируем и напечатаем случайное число от 0 до 1 double x = Math.random(); System.out.println (x); // одно случайное число x = Math.random(); System.out.println (x); // уже совсем другое и заранее его предсказать невозможно // теперь от 0 до 100 x = Math.random() * 100; // теперь от 10 до 100 x = 10 + Math.random() * 100; //и в общем виде double a = 10, b = 100; x = a + Math.random() * b;

Самое главное мы уже освоили. Теперь время решать задачи. Ответьте на несколько вопросов, чтобы лучше усвоился новый материал. Имейте в виду, некоторые ответы были освещены в темах раньше или не были освещены вообще, так что если приходится думать слишком много, то просто открывайте ответ по плюсику и читайте. Другое дело задачи из нашего задачника — только для некоторых типов задач дано решение. остальное вы должны написать сами.

В этой теме мы прошли — sqrt, pow, abs, ceil, floor, sin, cos и random. На самом деле их несколько больше, см. документацию java по классу Math — https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html В том числе отметим арккосинус — acos, арксинус — asin, минимум из двух числе — min, максимум — max. Очень рекомендуем в какой-либо тетрадке начать выписывать ключевые слова, принципы и так далее — когда вы пишите, ваш мозг включается на 100%, а потом будет легче вспомнить по записям.

Когда мы пишем название функции и указываем затем круглые скобки, они запускается. Есть функции, не возвращающие никаких значений — например, распечатка. А есть функции, возвращающие значения, например — вычисление квадратного корня. Фраза «функция возвращает значение» означает, что при вызове такой функции в коде прямо вместо ее имени будет подставлено число (или набор чисел, как мы узнаем позже), которое она рассчитала.

package javaapplication1; public class JavaApplication1 < public static void main(String[] args) < int x = Math.sqrt (100); System.out.println (x); >>

Большинство математических функций возвращают ответ как дробное число. А в нашем коде написано:
int x = некоторое дробное;
Получается мы сохраняем дробное число в переменную, где могут храниться только целые, т.к. мы дали ей тип int. Компилятор переживает, что мы отбрасываем дробную часть, ведь возможно в ее вычислении и состояла вся задача.

Чтобы убрать ошибку нужно написать:
double x = Math.sqrt (100);
И другой вариант:
int x = (double) Math.sqrt (100);

Когда мы слева от имени функции в скобках указываем тип, мы говорим компилятору — привести то, что справа в указанному типу несмотря ни на что. В данном случае — отбросить дробную часть, потеряв точность. Это называется приведение типов — у нас еще будет об этом целая тема.

Источник

Java Math класс и его методы

Java-университет

Класс Java Math и его методы - 1

В данной статье мы проведем краткий обзор класса Math в Java. Поговорим о методах данного класса и о том, как их использовать. Класс Math располагается в пакете java.lang и предоставляет набор статических методов для осуществления ряда различных математических вычислений. Ниже приведены примеры вычислений, для которых класс Math может оказаться полезным:

  • Вычисление абсолютных значений (значений по модулю)
  • Вычисление значений тригонометрических функций (синусов, косинусов и т.д.)
  • Возведение в различные степени
  • Извлечение корней различных степеней
  • Генерация случайных чисел
  • Округления
  • И пр.

Ниже мы попробуем рассмотреть как класс Java Math помогает решать задачи, перечисленные выше.Начнем разбор класса с методов, которые позволяют вычислить значение по модулю. За это отвечает метод abs. Данный метод перегружен и в классе Math имеются следующие его различия:

  • static double abs(double a)
  • static float abs(float a)
  • static int abs(int a)
  • static long abs(long a)

Пример использования:

 public static void main(String[] args) < System.out.println(Math.abs(-1)); // 1 System.out.println(Math.abs(-21.8d)); // 21.8 System.out.println(Math.abs(4532L)); // 4532 System.out.println(Math.abs(5.341f)); // 5.341 >

Вычисление значений тригонометрических функций

  • static double sin(double a)
  • static double cos(double a)
  • static double tan(double a)
  • static double asin(double a)
  • static double acos(double a)
  • static double atan(double a)
  • static double toDegrees(double angrad)
  • static double toRadians(double angdeg)
 public static void main(String[] args)
 0.0 0.49999999999999994 1.0 1.0 0.8660254037844387 6.123233995736766E-17 

Что не совсем соответствует таблицам синусов и косинусов, отчасти благодаря погрешностям при переводе из градусов в радианы.

Возведение в степень

Для возведения числа в степень класс Math предоставляет метод pow, который имеет следующую сигнатуру:

 static double pow(double a, double b) 
 public static void main(String[] args) < System.out.println(Math.pow(1,2)); // 1.0 System.out.println(Math.pow(2,2)); // 4.0 System.out.println(Math.pow(3,2)); // 9.0 System.out.println(Math.pow(4,2)); // 16.0 System.out.println(Math.pow(5,2)); // 25.0 System.out.println(Math.pow(1,3)); // 1.0 System.out.println(Math.pow(2,3)); // 8.0 System.out.println(Math.pow(3,3)); // 27.0 System.out.println(Math.pow(4,3)); // 64.0 System.out.println(Math.pow(5,3)); // 125.0 >

Извлечение корней

 public static void main(String[] args) < System.out.println(Math.sqrt(4)); // 2.0 System.out.println(Math.sqrt(9)); // 3.0 System.out.println(Math.sqrt(16)); // 4.0 System.out.println(Math.cbrt(8)); // 2.0 System.out.println(Math.cbrt(27)); // 3.0 System.out.println(Math.cbrt(125)); // 5.0 >

Генерация случайных чисел

Для генерации случайных чисел класс Math предоставляет метод random. Данный метод генерирует случайное позитивное вещественное (double) число в промежутке от 0.0 до 1.0. Сигнатура метода имеет следующий вид:

 public static double random() 
 public static void main(String[] args) < for (int i = 0; i < 5; i++) < System.out.println(Math.random()); >> 
 0.37057465028778513 0.2516253742011597 0.9315649439611121 0.6346725713527239 0.7442959932755443 

С помощью небольших манипуляций, можно использовать метод random класса Math для получения целочисленных случайных чисел лежащих в определенном диапазоне. Приведем пример функции которая принимает два аргумента min и max и возвращает случайное целое число, которое лежит в промежутке от min (включительно) до max (включительно):

 static int randomInARange(int min, int max)
 public class MathExample < public static void main(String[] args) < // Карта, в которой мы будем хранить количество выпадений какого-то числа Mapmap = new TreeMap<>(); // За 10000 операций for (int i = 0; i < 10000; i++) < // Сгенерируем рандомное число от -10 включительно до 10 включительно final Integer randomNumber = randomInARange(-10, 10); if (!map.containsKey(randomNumber)) < // Если карта еще не содержит "выпавшего случайного числа" // Положим его в карту с кол-вом выпадений = 1 map.put(randomNumber, 1); >else < // Иначе, увеличим количество выпадений данного числа на 1 map.put(randomNumber, map.get(randomNumber) + 1); >> // Выведем на экран содержимое карты в формате ключ=[значение] for (Map.Entry entry : map.entrySet()) < System.out.println(String.format("%d=[%d]", entry.getKey(), entry.getValue())); >> static int randomInARange(int min, int max) < return (int) (Math.random() * ((max - min) + 1)) + min; >> 
 -10=[482] -9=[495] -8=[472] -7=[514] -6=[457] -5=[465] -4=[486] -3=[500] -2=[490] -1=[466] 0=[458] 1=[488] 2=[461] 3=[470] 4=[464] 5=[463] 6=[484] 7=[479] 8=[459] 9=[503] 10=[444] Process finished with exit code 0 

Округление

  • static long round(double a)
  • static int round(float a)
  • static double floor(double a)
  • static double ceil(double a)
 public static void main(String[] args) < System.out.println(Math.round(1.3)); // 1 System.out.println(Math.round(1.4)); // 1 System.out.println(Math.round(1.5)); // 2 System.out.println(Math.round(1.6)); // 2 System.out.println(Math.floor(1.3)); // 1.0 System.out.println(Math.floor(1.4)); // 1.0 System.out.println(Math.floor(1.5)); // 1.0 System.out.println(Math.floor(1.6)); // 1.0 System.out.println(Math.ceil(1.3)); // 2.0 System.out.println(Math.ceil(1.4)); // 2.0 System.out.println(Math.ceil(1.5)); // 2.0 System.out.println(Math.ceil(1.6)); // 2.0 >

Заключение

  • Вычислять значения по модулю;
  • Вычислять значения тригонометрических функций;
  • Возводить числа в степень;
  • Извлекать квадратный и кубический корни;
  • Генерировать случайные числа;
  • Округлять числа.

Источник

Вычислить значение функции

Ребята, помогите пожалуйста, попалось вот такое задание, с которым никак не могу справиться
Необходимо вычислить значение функции Y(x) при различных значениях исходных данных x и a.

Исходные данные: х = 4.7; x = 6.2; a = 5.4

Вычислить значение функции
Нужна помощь в написании программы на Java. Написать программу на языке Java, которая вычисляла.

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

Для данного x вычислить значение функции f
Помогите с решением задачи на java Для данного x вычислить значение следующей функции f.

Вычислить значение функции (значение переменной Х передается в качестве параметра функции)
Написать функцию, которая возвращает вычисленное значение функции. Значение переменной Х передается.

Лучший ответ

Сообщение было отмечено andey12345 как решение

Решение

ЦитатаСообщение от andey12345 Посмотреть сообщение

public static void main(String[] args) { double[] x = {4.7, 6.2}; double a = 5.7, result; for(double tmpX : x){ result = (a >= tmpX)? 1.0 + Math.sqrt(Math.pow(tmpX, a)) : 1.0 + Math.sqrt(tmpX - a); result += (1.0 + Math.sqrt(tmpX)) / (Math.pow(1.0 + Math.sqrt(tmpX), 2.0)); System.out.println("Y = " + result); } }

Вычислить минимальное по абсолютной величине значение функции и соответствующее значение аргумента
Необходимо составить блок-схему и программу табулирования и исследования функции F(x) на диапазоне.

Вычислить значение функции y=a/x+6 при x=0,1,2. 10. Значение a и b вводятся пользователем (с клавиатуры). Результат выводить для x и y
1) Вычислить значение функции y=a/x+6 при x=0,1,2. 10. Значение a и b вводятся пользователем (с.

Задано вещественное значение аргумента х, вычислить значение функции у
y=\begin sin^2x+1 & \text < , >x \le 0 \\ \sqrt & \text < , >x \gt 0 \end

Задано вещественное значение аргумента х,вычислить значение функции у
Решить пример в паскале y=\begin\sqrt — ^, & \text\\tgx + ^, &.

Источник

Оцените статью