Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вычислить значение суммы с заданной точностью - JavaScript (https://javascript.ru/forum/misc/72986-vychislit-znachenie-summy-s-zadannojj-tochnostyu-javascript.html)

hunter24 12.03.2018 09:14

Вычислить значение суммы с заданной точностью - JavaScript
 
Вложений: 1
Нужна помощь с заданием!
Дано действительны величины
x,a,exp. (x!=0, a!=0, exp>0)
Разработать программу, которая вычисляет значение суммы с заданной точностью exp, и указывает количество учтенных слагаемых.

ksa 12.03.2018 13:20

Цитата:

Сообщение от hunter24
Нужна помощь с заданием!

В чем заключается "помощь"?

j0hnik 12.03.2018 17:29

https://developer.mozilla.org/ru/doc...l_Objects/Math
основное есть тут.

Noga_programmista 13.03.2018 19:18

Проверил на онлайн калькуляторе... вроде погрешности округления небольшие (нас учили что если точность имеет 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.