lyng/docs/samples/сумма_ряда.lyng.md
2025-06-11 10:54:06 +04:00

1.9 KiB

Пример расчета суммы ряда

Рассмотрим как можно посчитать предел суммы ряда на lyng. Для наивной реализации представим что у нас есть функция рассчитывающая n-й член ряда. Тогда мы можем считать сумму до тех пор, пока отклонение при расчете следующего члена не станет меньше чем заданная погрешность:

fun сумма_ряда(x, погрешность=0.0001, f) {
    var сумма = 0
    for( n in 1..100000) {
        val следующая_сумма = сумма + f(x, n)
        if( n > 1 && abs(следующая_сумма - сумма) < погрешность )
            break следующая_сумма
        сумма = следующая_сумма
    }
    else null
}

Для проверки можно посчитать на хорошо известном ряду Меркатора

$$ \ln(1+x)=x-{\dfrac {x^{2}}{2}}+{\dfrac {x^{3}}{3}}-\cdots =\sum \limits _{n=0}^{\infty }{\dfrac {(-1)^{n}x^{n+1}}{(n+1)}}=\sum \limits _{n=1}^{\infty }{\dfrac {(-1)^{n-1}x^{n}}{n}}



Который в нашем случае для точки $x = 1$ можно записать так:

    val x = сумма_ряда(1) { x, n -> 
        val sign = if( n % 2 == 1 ) 1 else -1
        sign * pow(x, n) / n
    }

Проверим:
    
    assert( x - ln(2) < 0.001 )

Во многих случаях вычисление $n+1$ члена значительно проще cчитается от предыдущего члена, в нашем случае это можно было бы записать через итератор, что мы вскоре добавим.

(продолжение следует)