Метод правых прямоугольников java

How to Find the Integral using Java

Create a function that finds the integral of the expression passed.

In order to find the integral all you need to do is add one to the exponent (the second argument), and divide the coefficient (the first argument) by that new number.

For example for 3x^2 , the integral would be 1x^3 : we added 1 to the exponent, and divided the coefficient by that new number).

  • The output should be a string.
  • The coefficient and exponent is always a positive integer.

Examples#

 3, 2 --> "1x^3" 12, 5 --> "2x^6" 20, 1 --> "10x^2" 40, 3 --> "10x^4" 90, 2 --> "30x^3" 

The solution in Java code#

A solution using String.format() :

Test cases to validate our Java solution code#

import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; public class SolutionTest < @Test public void exampleTests() < assertEquals("1x^3", Solution.integrate(3,2)); assertEquals("2x^6", Solution.integrate(12,5)); assertEquals("10x^2", Solution.integrate(20,1)); assertEquals("10x^4", Solution.integrate(40,3)); assertEquals("30x^3", Solution.integrate(90,2)); >> 
  1. How to Build Strings from a Size in Java
  2. Best Time to Buy and Sell Stock in Java
  3. How to Solve the “To square(root) or not to square(root)” Challenge in Java
  4. Solving the Rule of Divisibility by 13 in Java
  5. How to Calculate Buddy Strings in Java
  6. How to Flip a Binary Matrix in Java
  7. How to Tilt a Binary Tree in Java
  8. How to solve the House Robber Challenge in Java
  9. How to Solve the Bag of Tokens Challenge in Java
  10. How to Find the Smallest Divisor Given a Threshold in Java
Читайте также:  Phpunit requires php extension dom required

Источник

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

Здравствуйте, в ргр есть задание написать программу для вычисления определенного интеграла (f(x) = sqrt(2 — x^2) dx) в пределах от 1 до sqrt(2) методом средних прямоугольников, то есть найти суму f(xi + h / 2) * h , h = (b — a) / n, xi = a + i*h. И вывести время работи программы.

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

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
import java.util.Scanner; class Calculator extends Thread { int a = 1; double b = Math.pow(2, 1 / 2); void threadCalc(threads index, n) { double h = (b - a) / n; for (int i = 0; i  n-1; i++) { x [i] = a + i * h; double results[i] = (x[i] + h /2) * h ; } } public void run(n) { Thread[] threads = new Thread[n]; for (int i = 0; i  n-1; i++) { threads[i] = new Thread(threadCalc); threads[i].start(i); } for (int i = 0; i  n-1; i++) { threads[i].Join(); } result = 0; for (int i = 0; i  n-1; i++) { result += results[i]; } } } } public class Main { public static void main(String[] args) { Scanner sc; System.out.print("Введите кол-во інтервалов: "); while (true) { sc = new Scanner(System.in); if (!sc.hasNextInt()) { System.out.print("Некорректный тип введенного числа! Повторите попитку: "); } else { int n = sc.nextInt(); sc.close(); return; } } } }

Вычисление определенного интеграла методом средних прямоугольников
Вот написал прогу для вычисления определенного интеграла. \int_^\left(x^3\cdot e^x.

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

Вычисление интеграла методом средних прямоугольников
< Вычисление интеграла методом средних прямоугольников >var n : integer; s: real; .

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

Не вижу никакой логической связи.

Любопытный, имею в виду использовал не интерфейс runnable для создания класса «вычислитель»

Добавлено через 18 секунд
Любопытный, так я могу на Вас рассчитывать?

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

ЦитатаСообщение от Любопытный Посмотреть сообщение

Любопытный, не поймите меня неправильно. Скажу сразу я не из тех людей,которые не попробовав ничего бросаються в панику. По вышеуказанным причинам не могу закончить этот код. Особыми знаниями работы с потоками тоже не владею (задание, как видите выдано не в тему, для имеющихся знаний, а времени нету совсем). Некоторые моменты вижу, например, ввод интервалов «сканером» можно было внести в конструктор класса «вычислитель», есть проблема с доработкой метода вычисления значения на интервале, ноосновная загвохдка с пониманием потоков. Я понимаю, в принципе.что делает код, но некоторые моменты сомнительны. Что у Вас просил? Если Вас не затруднит подкорректировать код и спросить что не пойму.

Лучший ответ

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

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
public class Integral { public static double InFunction(double x) //Подынтегральная функция { return Math.sqrt(2 - x*x); } //Весь участок [a,b] делим на n равных частей public static double CalcIntegral(double a, double b, int n) { double result = 0; double h = (b - a) / n; //шаг разбиения отрезка [a;b]. for(int i = 0; i  n; i++) { result += InFunction(a + h*(i + 0.5)); //Определяем значение yi подынтегральной функции f(x) в каждой части деления. } result *= h; return result; } public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); Date currentTime = new Date(); //начало отсчета времени System.out.println("Введите кол-во интервалов разбиения:" ); int n = Integer.parseInt(reader.readLine()); double a = 1; double b = Math.sqrt(2); System.out.println("Результат: "+ CalcIntegral(a,b,n)); Date newTime = new Date(); //закончили отсчет времени long msDelay = newTime.getTime() - currentTime.getTime(); //вычислили разницу между начальным и конечным временем System.out.println("Программа работала: " + msDelay + " миллисекунд"); } }

natkru, собственно все действительно просто. Взять таймштамп в начале и взять таймштамп в конце и вывести разницу в консоль.
Зачем ТСу понадобилось использовать потоки? Может есть какие то еще «дополнительные» требования?

84, «дополнительных требований», сообственно говоря, никаких. Надо найти интеграл. А раз тема- «потоки», вот и надо их где-то задействовать.

Добавлено через 22 минуты
natkru, огромное Вам спасибо. Могу ли попросить Вас посмотреть на отредактированый код. Он компилиться. но не могу понять куда поставить System.out.print(«Результат: «+result); в коде ставил в getResult();, но тогда ошибка,а иначе не выводит ответ на консоль. Если моя просьба покажеться Вам слишком наглой — я Вас пойму.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
package l5; import java.util.logging.Level; import java.util.logging.Logger; class Calculator extends Thread{ int n; int a = 1; double b = 2.4; double results[]; public Calculator(int n){ this.n = n; } private void threadCalc(){ results = new double[n]; double h = (b - a) / n; for (int i = 0; i  n-1; i++) { double x = a + i * h; results[i] = (x + h /2) * h ; } } public double getResult(){ int result = 0; for (int i = 0; i  n-1; i++) { result += results[i]; } return result; } @Override public void run() { threadCalc(); Calculator[] threads = new Calculator[n]; for (int i = 0; i  n; i++) { threads[i] = new Calculator(i); threads[i].start(); } for (int i = 0; i  n; i++) { try { threads[i].join(); } catch (InterruptedException ex) { Logger.getLogger(Calculator.class.getName()).log(Level.SEVERE, null, ex); } } } } public class Main { public static void main(String[] args) { Calculator i1 = new Calculator(10); } }

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

Источник

Метод правых прямоугольников java

Приближенное вычисление определенного интеграла

Метод средних прямоугольников

Пусть на отрезке [ a, b ] задана непрерывная функция f(x) . Требуется вычислить интеграл , численно равный площади криволинейной трапеции.

Разобьем основание этой трапеции на n равных отрезков длины d = (b — a)/n с помощью точек x 0 = a, x 1 , x 2 , . x n = b.

Приняв отрезки за основания, построим на каждом из них прямоугольник с высотой y = f(xm) , где xm – точка, лежащая посредине отрезка: xm = (xa + xb) /2. Тогда площадь прямоугольника будет выражаться формулой: s i = d* f(xm) . Сумма площадей прямоугольников дает приближенное значение площади под графиком функции и, следовательно, приближенно равна искомому интегралу на отрезке [ a, b ].

  

Интеграл Пуассона используется в теории вероятности и его принято записывать в виде функции верхнего предела

Следующая программа вычисляет значения функции Пуассона на отрезке [0, 2] с шагом 0.1

  

Для хранения вычисленных значений аргументов и функций используются два массива mx и my. Перед использование массивы необходимо объявить. Это делается при помощи инструкций:

var mx = new Array(); var my = new Array();

После объявления к элементам массивов можно обращаться при помощи индексов. Например, для того чтобы записать информацию в i-ый элемент массива мы используем следующую запись: mx[i] = b; А для того, чтобы прочитать информацию из j-ого элемента мы должны записать: y = my[j];

Создаем подпрограмму для вычисления интеграла от произвольной функции, заданной пользователем

var a, b, n, f; a = 2; b = 5; n = 100; f = "1/log(x)"; integral(a, b, n, f); function integral(a, b, n, f) < var s, d, xb, xe, x, t; s = 0; d = (b - a)/n; xb = a; t = f; f= "with (Math) "; for(i = 0; i Задания для самостоятельной работы

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

2347. Вычислить число π используя интеграл:.
Ответ: 3,1415926535897932384626433832795.

2348. Вычислить число π используя интеграл:
Ответ: 3,1415926535897932384626433832795.

2350. Вычислить приближенно
Ответ: 0,837.

2351. Вычислить приближенно
Ответ: 1,09.

2352. Вычислить приближенно
Ответ: 2,59.

2355. Вычислить приближенно
Ответ: 0,985.

Источник

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

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

Обчислення інтеграла методом прямокутників.
Написати програму, яка виконує обчислення означеного інтеграла від деякої функції використовуючи метод прямокутників.
Програма повина взаємодіяти із користувачем через графічне діалогове вікно.

Вычисление определенного интеграла методом средних прямоугольников используя потоки Java
Здравствуйте, в ргр есть задание написать программу для вычисления определенного интеграла (f(x) =.

Вычисление значения определенного интеграла
Помогите решить задачку, а то я JAVA вообще не знаю. Есть формула: \int_^\ln (t+1)dt .

Нахождение интеграла методом трапеции
Здравствуйте! Ход = 0.1 Границы 3 и 8 Вот класс Main import java.util.Scanner; public.

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

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

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

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

Источник

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