Вычислить значение суммы с заданной точностью - JavaScript
Вложений: 1
Нужна помощь с заданием!
Дано действительны величины x,a,exp. (x!=0, a!=0, exp>0) Разработать программу, которая вычисляет значение суммы с заданной точностью exp, и указывает количество учтенных слагаемых. |
Цитата:
|
https://developer.mozilla.org/ru/doc...l_Objects/Math
основное есть тут. |
Проверил на онлайн калькуляторе... вроде погрешности округления небольшие (нас учили что если точность имеет N знака после запятой, то округляем до N+1 знаков)
Все переменные по вашей формуле названы var exp = 0.001; // точность var summ = 0; // переменная для суммы var count ; // переменная для кол-во соагаемых //считает одно слагаемое function get_value(x, a, k) { return +( Math.sin( Math.pow(x, k)) / ( Math.pow(a, 2*k) * fac(2*k) ) ).toFixed(4); } // считает сумму function Summ(x, a, k) { if(k == 1)//при первом витке сравнивать на точность еще нечего { return get_value(x, a, k) + Summ(x, a, k+1); } else{ if( Math.abs(get_value(x, a, k) - get_value(x, a, k-1)) > exp ) // |An – An-1| > exp, пока это выражение { // истинно, вычисления продолжаются. return get_value(x, a, k) + Summ(x, a, k+1); } else{ count = k; return get_value(x, a, k); } } } // (2k) не может быть отричательным, // поэту проверку на отрицательность не делал function fac(num) { if(num == 1 || num == 0) { return 1; } return num * fac(num - 1); } alert("Сумма = " + Summ(15, 2, 1) +"\nЧисло циклов(при точности " + exp + ") равно : " + count); |
Часовой пояс GMT +3, время: 21:58. |