Добавил:
shaaydar
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:extrapolation
.js// точность вывода на экран
const signs = 2
// заданное альфа
const a = 1.1
// Для уменьшения объема расчетов величина Q обычно выбирается равной 2
// как наименьшему натуральному числу, большему 1
const q = 2
/**
* Частичная сумма ряда
* @param {number} n - кол-во элементов ряда
*/
function z(n) {
let sum = 0
for (let i = 1; i <= n; i++) {
sum += i**(-a)
}
return sum
}
/**
* Экстраполяция по правилу Ричардсона
* @param {Function} z - функция получения частичной суммы ряда
* @param {number} n - кол-во элементов ряда
* @param {number} k - порядок точности
* @returns {number}
*/
function extrapolation(z, n, k) {
zn = z(n)
return zn + (zn - z(n/q)) / (q**k - 1)
}
// Метод Ромберга, повторная экстраполяция
function extrapolation2(z, n) {
const first = (n1) => extrapolation(z, n1, a-1)
return extrapolation(first, n, a)
}
function main() {
const zExact = 10.5844484649508098 // точное значение суммы ряда z
const result = []
for (let n = 2; n <= 65536; n*=2) {
const delta = (extrapolation(z, n, a-1) - zExact) / (z(n) - zExact)
const delta2 = (extrapolation2(z, n) - zExact) / (extrapolation(z, n, a-1) - zExact)
result.push({
// заданное разбиение
n,
"z*": (extrapolation(z, n, a-1)).toFixed(signs),
// абслютная погрешность
"z(n) - z": (z(n) - zExact).toFixed(signs),
// Правило Рунге, погрешности приближенного значения zn
"z(n) - z*": (z(n) - extrapolation(z, n, a-1)).toExponential(signs),
// Разница между экстрап. по Ричардсону и точной
"z* - z": (extrapolation(z, n, a-1) - zExact).toExponential(signs),
// оценка погрешности z(n), (z*-z)/(zn-z)
"delta": delta.toExponential(signs),
// дважды и точная
"z** - z": n > 2 ? (extrapolation2(z, n) - zExact).toExponential(signs) : '-',
// оценка погрешности дважды экстраполированного значения z*
// отношение размытости между экстраполяциями
// (z**-z)/(z*-z)
"delta*": n > 2 ? delta2.toExponential(signs) : '-',
})
}
console.table(result)
}
main()
Соседние файлы в предмете Методы вычислений