Найти сумму бесконечного ряда

Найти сумму бесконечного ряда

20.12.2013 03:14:55 Просмотров 35 Источник

Как я могу найти сумму бесконечного ряда?

enter image description here

Серии:

Мой пример плохого поведения:

seq 0 inf | awk '{sum+=(1/$1)} END {print sum}'

Можно ли провести этот метод правильного расчета или как решить эту проблему другими способами?

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31007363_20702426
Нужно ли это сделать за ограниченное время ? Если да, то есть ли у вас информация о его конвергенции ?
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31007666_20702426
@fedorqui я надеюсь, что в любом случае эта сумма - просто пример, так как она не сходится.
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31007747_20702426
@dystroy сходящийся или не сходящийся, вы никогда не сможете суммировать бесконечный ряд таким образом
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31007769_20702426
Да, это просто пример. Я бы не стал препятствовать любому рабочему примеру.
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31007822_20702426
@Бехзад.Нури вы можете в некоторых случаях, если вы знаете, как это сходится, отсюда мой первый комментарий. Любое вычисление выполняется с заданной точностью.
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31008094_20702426
@dystroy, можно пример в виде кода?
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31008400_20702426
1+ для выполнения числительных с помощью оболочки. :-))
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series#comment31011264_20702426
Сумма бесконечного ряда может быть определена (точно) только с помощью анализа, а не вычисления.

Ответы - Найти сумму бесконечного ряда / Find the sum of an infinite series

Является ответом!
Daniel S.

20.12.2013 03:25:25

Этот ряд не сходится. Он называется гармоническим рядом и, как известно, не сходится.

Более того, как говорится в комментарии, Вам нужно начать с 1 вместо 0, потому что в противном случае он не определен (деление на 0).

Попробовать это:

seq 1 inf | awk '{sum+=(1/$1)} {print sum}'

Однако это не очень хорошо работает для более высоких итераций, потому что представления числового формата несовместимы, а точность внутреннего представления чисел недостаточна.

Чтобы сделать более точные вычисления для оценки значения сходящегося ряда, вы должны использовать пакет научных вычислений более подходящего языка программирования, такого как Java, Python или C++.

Вот полный рабочий пример на Java:

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;

public class SeriesCalculator {

    public static void main(String[] args) {
        MathContext mathContext = new MathContext(100, RoundingMode.HALF_EVEN);

        BigDecimal i = BigDecimal.ONE;
        BigDecimal sum = BigDecimal.ZERO;
        while (true) {
            // calculation for every iteration
            BigDecimal element = BigDecimal.ONE.divide(i, mathContext);
            sum = sum.add(element);

            // show output once for every magnitude
            String iStr = i.toString();
            if (iStr.matches("10*")) {
                int log10_i = iStr.length() - 1;
                System.out.println("i=10^" + log10_i + "; sum = " + sum);
            }

            // preparation of next iteration step
            i = i.add(BigDecimal.ONE);
        }
    }
}

Выход:

i=10^0; sum = 1
i=10^1; sum = 2.9289682539682539682539682539682539682539682539682539682539682539682539682539682539682539682539682540
i=10^2; sum = 5.18737751763962026080511767565825315790897212670845165317653395658721955753255049660568776892312041358
i=10^3; sum = 7.485470860550344912656518204333900176521679169708803665773626749957699349165202440959934437411845081421
i=10^4; sum = 9.7876060360443822641784779048516053348592629455776917183894609566816020249431595068001251272900808826142
i=10^5; sum = 12.09014612986342794736321936350421950079369894178220110162752941593818198228230919443164900701935230601448
i=10^6; sum = 14.392726722865723631381127493188587676644800013744311653418433045812958507517995003568298175947219100731214
i=10^7; sum = 16.6953113658598518153991189395404518842498697523730804627851359543562886921742546877116037143701502883133367
i=10^8; sum = 18.99789641385389832441711039422398284185097124497010343881842218865761130260918292544757982666365581248865345
...
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series/20702605#comment31007710_20702605
Я предположил, что это был просто пример (см. комментарии ниже вопроса).
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series/20702605#comment31007755_20702605
На самом деле я не знаю. Посмотрим, прояснится ли ОП.
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series/20702605#comment31007857_20702605
Просто удалите END, чтобы увидеть, что он продолжает расти.
https://stackoverflow.com/questions/20702426/find-the-sum-of-an-infinite-series/20702605#comment31008099_20702605
Спасибо за подсказки. Я улучшил ответ.
Закрыть X