Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 1
Регистрация: 30.01.2019
Сообщений: 39
1

Посчитать сумму ряда

22.06.2021, 23:55. Показов 1315. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
n
Σ‎ 1/i!
i=1

Как посчитать этот ряд?

Код
int i = 1;

for (...) {
sum += 1/factorial(i);
}

    public static long factorial( int n ) {
        if( n <= 1 )     // base case
            return 1;
        else
            return n * factorial( n - 1 );
    }
Миниатюры
Посчитать сумму ряда  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2021, 23:55
Ответы с готовыми решениями:

Посчитать сумму ряда
Как правильно посчитать сумму такого ряда:1!-2!+3!-4!+5!-...+n! (n=10 задано в коде), здесь считает...

Посчитать сумму ряда
Надо посчитать сумму ряда с заданной точностью по формуле 2*(1/((2*n+1)*Math.pow(x,(2*n+1)))) и...

Посчитать arcsin как сумму ряда
Нужно посчитать arcsin как сумму ряда с заданной точностью...

Посчитать сумму числового ряда+посчитать сумму ряда для 9 слагаемых
задача №1 у(n)=1-x+x^2-...+(-x)^n Посчитать сумму числового ряда для 9 слагаемых задача №2...

5
748 / 366 / 132
Регистрация: 01.02.2020
Сообщений: 1,094
Записей в блоге: 1
23.06.2021, 00:59 2
Ну насколько я могу видеть этот ряд сводится к экспоненте в степени 1 и минус один, т.е. к числу эйлера - 1.
Так что можешь просто вывести заранее вычисленное число:
Java
1
2
3
public static double f() {
    return Math.E - 1;
}
Но если прям нужно вычисление с определенной точностью, то вот:
Java
1
2
3
4
5
6
7
8
9
static MathContext context = new MathContext(100);
 
public static BigDecimal f(int n) {
    BigDecimal bn = BigDecimal.valueOf(n), result = BigDecimal.ZERO, factorial = BigDecimal.ONE;
    for (BigDecimal i = BigDecimal.ONE; i.compareTo(bn) < 0; i = i.add(BigDecimal.ONE)) {
        result = result.add(BigDecimal.ONE.divide(factorial = factorial.multiply(i), context));
    }
    return result;
}
Добавлено через 8 минут
Условие в цикле вероятно надо бы изменить(Хотя какой смысл вычислять эту функцию на столь малых значениях):
Java
5
for (BigDecimal i = BigDecimal.ONE; i.compareTo(bn) <= 0; i = i.add(BigDecimal.ONE))
0
0 / 0 / 1
Регистрация: 30.01.2019
Сообщений: 39
23.06.2021, 01:05  [ТС] 3
Честно, не совсем понял, что нужно сделать, на данный момент у меня вот такой код

Код
import java.util.Scanner;

public class Task1 {

	public static void main(String[] args) {
		int n, i = 1;
		double sum = 0;
		Scanner scanner = new Scanner(System.in);
		System.out.println("введіть кількість доданків (число n);");
		n = scanner.nextInt();

		for (i = 1; i <= n; i++) {
			sum += sum += 1 / factorial(i);
		}
		System.out.println("Сума дорівнює " + sum);
		scanner.close();
	}

	public static long factorial(int n) {
		if (n <= 1) {
			return 1;
		} else {
			return n * factorial(n - 1);
		}
	}
}
0
748 / 366 / 132
Регистрация: 01.02.2020
Сообщений: 1,094
Записей в блоге: 1
23.06.2021, 01:17 4
Цитата Сообщение от Sneyzi Посмотреть сообщение
Честно, не совсем понял, что нужно сделать
Всм? Я тебе два варианта решения предоставил.


Цитата Сообщение от Sneyzi Посмотреть сообщение
factorial(i);
В частности по твоему коду вот эта часть неэффективна.

Да и рекурсивное вычисление факториала как по мне не очень. Сделай итеративным, хотя б.

Цитата Сообщение от Sneyzi Посмотреть сообщение
sum += sum +=
Что автор хотел этим сказать...

Добавлено через 3 минуты
А. И заместо 1 поставь 1D. Так как джава применяет целочисленное деление в твоем случае.

Добавлено через 4 минуты
Да и вряд ли твоя функция будет считать адекватно большие n, т.к. рано или поздно факториал выйдет за 263 и станет иметь отрицательное значение. Решением в этом случае является использование длинной арифметики(Хотя она гораздо медленнее).
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37175 / 20620 / 4256
Регистрация: 12.02.2012
Сообщений: 33,998
Записей в блоге: 14
23.06.2021, 08:32 5
Не нужен факториал...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Main
{
    public static double sum_seq(double eps)
    {
        double s=0,a=1,n=1;
        while(a>eps)
        {
            a=a/n;
            n++;
            s+=a;
        }
        return s;
    }
    public static void main(String[] args) {
        System.out.println(sum_seq(1.0e-10));
    }
}
1
2699 / 2013 / 501
Регистрация: 17.02.2014
Сообщений: 9,388
23.06.2021, 09:05 6
не это нужно вводить,
Цитата Сообщение от Sneyzi Посмотреть сообщение
"введіть кількість доданків
а точность вычислений
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
        System.out.println("введите точность вычислений:");
        Scanner scanner = new Scanner(System.in);
        double epsilon = scanner.nextDouble();
        double currSum = 1;
        double lastSum = 0;
        long factorial = 1;
        long lasFactorial = 1;
        while ((currSum - lastSum) > epsilon) {
            lastSum = currSum;
            factorial *= ++lasFactorial;
            currSum += 1./factorial;
        }
        System.out.println(currSum);
    }
пример работы

введите точность вычислений:
1e-3
1.7182539682539684
1
23.06.2021, 09:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2021, 09:05
Помогаю со студенческими работами здесь

Посчитать сумму ряда и сумму ряда с заданной точностью
Здравствуйте. Есть задание посчитать сумму ряда, сумму ряда с заданной точностью(0,0001) и значение...

Посчитать сумму ряда и сумму ряда с заданной точностью
Здравствуйте! Имеется задание посчитать сумму ряда, значение функции и сумму ряда с заданной...

Посчитать сумму ряда для функции 1/(1-х)^2 с заданной пользователем точностью и посчитать количество элементов в сумме
Помогите пожалуйста, похожие примеры нашел, а сделать не выходит, срочно нужно(

Посчитать сумму ряда, ограничивая число элементов ряда первым элементом
Всем привет форумчане!Есть небольшая проблема с записью программы и следовательно из-за этого и...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru