А98

Задача. Пусть [latex]a_{1}=b_{1}=1; a_{k}=3b_{k-1}+2a_{k-1}; b_{k}=2a_{k-1}+b_{k-1}[/latex], [latex]k=\overline{2, \infty }[/latex]. Дано натуральное [latex]n[/latex]. Найти [latex]\sum_{i=1}^{n}\frac{2^{k}}{(1+a_{k}^{2}+b_{k}^{2})k!}[/latex].

Тесты:

n [latex]\sum_{i=1}^{n}\frac{2^{k}}{(1+a_{k}^{2}+b_{k}^{2})k!}[/latex] Комментарий
2

0.0596538

Пройден
4

0.0597339

Пройден
20 0.059734 Пройден

Код:

Для решения данной задачи понадобилось ввести переменную [latex]n[/latex], которая показывает какое количество раз нужно повторить операцию сложения. В цикле for вычисляется сумма, по заданной формуле. Далее последовательность можно задать рекурентно: чтобы каждый раз не считать [latex]\frac{2^{k}}{k!}[/latex], мы заводим переменную u, равную изначально двум, потому что k начинается с 2, и u каждый раз мы будем домножать на [latex]\frac{2}{k}[/latex]. Далее остается лишь посчитать a и b (переменная [latex]as[/latex] запоминает переменную [latex]a[/latex] для последующего вычисления переменной [latex]b[/latex]) и поставить в формулу. Для проверки выполнения программы можно воспользоваться ссылкой.

Решение на Java:

Ссылка на решение.

Related Images:

А100

Задача: Пусть [latex] x_{1}=x_{2}=x_{3}=1 [/latex];

[latex] x_{i}=x_{i-1}+x_{i-3} [/latex];

[latex] i=4, 5, [/latex]…

Вычислить [latex] \sum_{i=1}^{100}{\frac{x_{i}}{2^{i}}} [/latex]

Тесты:

n result
-1 error
0 error
1 0.5
2 0.75
3 0.875
4 1
5 1,09375
12 1.305908
100 1.333333

Код программы:

Код программы на языке Java:

Ссылка: https://ideone.com/NVdBlc

План программы:

  1.  Назначение рабочих переменных
  2. Проверка ввода n
  3. Основной цикл сравнения для получения нужного значения переменных
  4. Цикл вычисления
  5. Вывод результата

Программа выполняет суммирование в цикле согласно заданной формуле. Задаётся только число итераций, а слоагемое вычисляется согласно формуле.

Ссылка на ideone.com: http://ideone.com/Yy8e5l

Related Images:

Ю3.22

Задача.

Для заданного [latex]x>1[/latex] вычислить [latex]y=\sqrt{x}[/latex] по итерационной формуле: [latex]y_{i}=\frac{1}{2}(y_{i-1}+\frac{x}{y_{i-1}})[/latex] c заданной погрешностью ε, задав начальное приближение [latex]y_{0}=x[/latex]. Сравнить с результатом использования встроенной функции. Сколько итераций пришлось выполнить?

Тесты.

x ε [latex]y_{i}[/latex] [latex]\left|\sqrt{x}-y_{i} \right|[/latex] i Комментарий
5 1e-2 2.236069 9.18e-07 4 Пройден
100 1e-1 10.000053 5.29e-05 6 Пройден
100 1e-2 10.000000 1.40e-10 7 Пройден
100 1e-6 10.000000 0.00e+00 8 Пройден
100 1e-10 10.000000 0.00e+00 9 Пройден

Решение.

C++

Java

Для подсчета значения квадратного корня для заданного числа создадим цикл. Цикл выполняется пока [latex]\left|y_{i}-y_{i-1}>=\varepsilon\right|[/latex].

С повышением точности растёт количество итераций, но из-за того что, начиная с [latex]\varepsilon=10^{-5}[/latex], погрешность не вычисляется, зависимость оценить нельзя.

Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).

Related Images:

А116а

Задача: Даны натуральное число [latex]n[/latex] и действительное [latex]x[/latex]. Найти:

[latex]\sum_{i=1}^{n}\frac{x^{i}}{i!}[/latex]

Тесты:

Число [latex]x[/latex], возводимое в степень Кол-во шагов [latex]n[/latex] Результат result
5 3 38.(3)
4 12 53.5832
20 5 34886.7
0 0 0
10 10 12841.3

Решение: Для решения данной задачи надо было провести численный анализ. Каждый раз высчитывать и прибавлять результат нельзя, т.к программа будет работать очень долго. По-этому стоит рассмотреть два значения: текущее и последующее, [latex]x_{n}[/latex] и [latex]x_{n+1}[/latex]. Поделим одно на другое:

[latex]\frac{x_{n+1}}{x_{n}}=\frac{x^{i+1}*i!}{(i+1)*i!*x^{i}}=\frac{x}{i+1}[/latex]

Поскольку сумму ряда считаем с 1, то делить будем на [latex]i[/latex], а не на [latex](i+1)[/latex].

Код на С++: 

 

Код на Java:

 

 

Для проверки правильности работы кода, воспользуйтесь ссылкой.

Related Images:

Ю3.20

Задача: Для заданных [latex]a[/latex] и [latex]p[/latex] вычислить [latex]x = \sqrt[p]{a}[/latex] по рекуррентному соотношению Ньютона: 

[latex]x_{n+1}=\frac{1}{p}*\left[(p-1)x_{n}+\frac{a}{x_{n}^{p-1}}\right][/latex]  [latex]x_{0} = a[/latex]

Сколько итераций надо выполнить, чтобы для достижения заданной погрешности [latex]\varepsilon[/latex] выполнялось соотношение:

[latex]\left|x_{n+1}-x_{n}\leq\varepsilon\right|[/latex]?

Тесты:

[latex]a[/latex] [latex]p[/latex] Значение корня [latex]x[/latex] Значение корня [latex]x[/latex], подсчитанного с помощью соотношения Количество итераций
57 5  2.24479 2.24479  18
16 2 4 4 5
230 2  15.1658  15.1658 7
9 3  2.08008 2.08008  7

Код на С++: 

Код на Java:

 

 

Решение: Для подсчёта значения корня с помощью рекуррентного соотношения, я создал цикл, в котором организовал подсчёт значения таким образом, что пока разница значения корня x, подсчитанного с помощью функции pow, cо значением текущего корня xn,  подсчитанным с помощью соотношения, больше заданной погрешности eps, то, записывая текущее значение в переменную x_prev, подсчитываю новое значение корня. В зависимости от заданной погрешности, программа считает результат и выводит его на экран вместе с кол-вом итераций.

UPD: По предложению Игоря Евгеньевича добавил быстрое возведение в целую степень.

Решение UPD: Чтобы построить алгоритм быстрого возведения в степень, необходимо рассмотреть две ситуации:

  1. Когда степень чётна;
  2. Когда степень не чётна;

Ситуация 1 : Проведя несложный анализ  можно заметить, что [latex]{a}^{p}[/latex] можно представить в виде

[latex](a^{\frac{p}{2}})^{2}[/latex].

Ситуация 2: В этой ситуации необходимо перейти в степень [latex]p-1[/latex], которая является чётной.

[latex]a^{p}=a^{p-1} * a[/latex]

И в результате получим алгоритм, который работает за [latex]O(\log n)[/latex].

 

Проверить правильность работы программы можно здесь (UPD):  http://ideone.com/VBLGKO

 

Related Images:

Ю3.38

Задача

Численно убедиться в справедливости равенства, для чего для заданного значения аргумента [latex]x[/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon[/latex] . Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций [latex]n[/latex] (слагаемых или сомножителей), необходимых для достижения заданной точности.

[latex]\frac{\pi ^{2}}{8}-\frac{\pi }{4}\cdot |x|=\frac{cosx}{1!}+\frac{cos3x}{3^{2}}+\frac{cos5x}{5^{2}}+\cdots+\frac{cos((2n+1)\cdot x) }{(2\cdot n+1)^{2}}+\cdots[/latex],

[latex]|x|<1[/latex].

x E Левая часть (left). Правая часть (right). Разность (right-left). n Комментарий.
0.6 0.000001 0.7624616521 0.7604912379 0.0019704142 3 Пройден.
0.75 0.000035 0.6446519276 0.6290694254 0.0155825022 3 Пройден
0.4 0.00002 0.9195412848 0.9143769743 0.0051643104 5 Пройден
4 0.0001 Некорректно задан аргумент x (|x|<1)Не пройден.
0.4 0 0.9195412848 0.9195412848 0.9195412848 бесконечность Погрешность равна 0, тогда правая часть стремится к левой.Пройден.

Необходимо доказать равенство левой и правой части при заданных [latex]x[/latex] и [latex]\varepsilon[/latex].

Мы высчитываем левую часть [latex]\frac{\pi ^{2}}{8}-\frac{\pi }{4}\cdot |x|[/latex], с заданным аргументом [latex]x[/latex]. Затем в цикле do высчитываем значение правой части [latex]\frac{cosx}{1!}+\frac{cos3x}{3^{2}}+\frac{cos5x}{5^{2}}+\cdots+\frac{cos((2n+1)\cdot x) }{(2\cdot n+1)^{2}}+\cdots[/latex], до тех пор, пока разность правой и левой части не превысит заданную погрешность [latex]\varepsilon[/latex]. После этого программа выводит значение левой и правой части, их разницу и количество итераций для заданной погрешности.

Ниже представлена сама программа (C++).

Код на Java:

 

Так же вы можете воспользоваться ссылкой (C++)/ссылкой (Java), для ознакомления с программой.

Related Images:

Ю3.42

Задача

Расписание звонков. В учебном заведении задается начало учебного дня,  продолжительность «пары» или урока, продолжительность обычного и большого перерывов (и их «место» в расписании), количество пар(уроков). Получить расписание звонков на весь учебный день.
Задаем начальные значения в теле программы.
Начало урока — 8:45
Продолжительность обычной перерыва — 30 минут.
Продолжительность большого перерыва — 45 минут.
Место в расписании и количество уроков задается в массиве time_table .
Результат:

Решение:

Используется структура tm для хранения времени.

Ссылка на код.

Решение на Java:

 

Related Images:

Ю3.16

Задача

Сравнить скорость сходимости при вычислении числа [latex]e[/latex] с помощью ряда и бесконечной дроби:

[latex]e=2+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+…[/latex]; [latex]e=1+\frac{1}{1-\frac{1}{2+\frac{1}{3-\frac{1}{2+\frac{1}{5-…}}}}}[/latex]

У нас дан ряд(row) и бесконечная дробь(inf). Для разложения числа  [latex]e[/latex] в ряд использована функция вычисления факториала. Задаем начальные переменные и вычисляем основание натурального логарифма. При достижении заданной точности [latex]E[/latex] цикл вычислений ряда прекращается, и начинается вычисление по методу цепной дроби с заданным в первой части программы количеством итераций (для корректного сравнения скорости сходимости, количество итераций должно быть одинаково).

Алгоритм вычисления представляет собой цикл, в который вложен еще один рекурсивный цикл. Первый цикл do подставляет во второй цикл количество итераций. Во втором цикле for происходит основное вычисление цепной дроби, посредством проверки четных и нечетных шагов. Проверка на четность происходит делением текущей по счету итерации  на 2 с остатком. Если делится без остатка, то итерация четная, иначе- нечетная.

E

Количество итераций ряда(row)

i

Количество итераций цепной дроби(inf)l Комментарий
0.00001 9 7

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

0.0000002 11 9

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

0.00078 7 6

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

0.0004 7 6

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

При схождении к числу [latex]e[/latex] с точностью [latex]E[/latex] цепная дробь будет  делать это быстрее, чем ряд.

Ниже представлена сама программа(C++).

Код на Java:

 

Также вы можете воспользоватся ссылкой (C++)/ссылкой (Java), для ознакомления с программой.

Related Images:

Ю3.33

Задача: В задаче задана функция и её разложение в ряд или произведение. Численно убедится в справедливости равенства, для чего для заданного значения аргумента [latex] x [/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon\[/latex]. Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций [latex] n [/latex]  (слагаемых или сомножателей), необходимых для достижения заданной точности.
[latex]\sin \left(x \right) = x \left(1 — \frac{x^{2}}{\pi^{2}} \right) \left( 1 — \frac{x^{2}}{4\pi^{2}} \right) \ldots \left(1 — \frac{x^{2}}{ \left( n-1 \right)^{2}\pi^{2}} \right)[/latex]

Тесты:

x n-Excel sin — Excel deviation — Excel e — input exact sinus n — program deviation — program
12  22  -1,029367  0.56  0.56  -0.536573  22  0.524789
5  7  -1,346966
 0.54  0.54  -0.958924  7  0.461469
2.5  2  0,771704  -1.15  -1.15  0.598472  2  -0.318384
1  2  0,875915  -1.38  -1.38  0.841471  2  -0.057208
0  2  0  -0.53  -0.53  0  2  0
-1  2  -0,875915  0.3  0.3  -0.841471  2  0.057208
-2.5  6  -0,659746  0.08  0.08  -0.598472  6  0.073087
-5  4  1,700161  -1.62  -1.62  0.958924  4  -1.061024
-12  12  1,755690  -1.63  -1.63  0.536573  12  -1.417062

Код программы:

Код программы на языке Java:

Ссылка:http://ideone.com/nZluY8

Программа состоит из следующих частей:

  1. Определение вспомогательной функции
  2. Рабочие переменные
  3. Определяем лимит числа итераций чтобы избежать бесконечного цикла
  4. Ввод данных — аргумента функции и заданной погрешности
  5. Условие выполнения
  6. Вывод результата

Правильность результата проверялась на калькуляторе. тестирование показало, что правильные значения получаются только при очень большом  n  .  Только начиная с десятков тысяч результат близок к показанию калькулятора.

Данные для проверки подготавливались в Excel ввиду относительно большого количества итераций, необходимых для расчётов. Полученная погрешность с точным значением синуса использовались как входное [latex]e[/latex]. Результирующее количество итераций программы сравнивалось с числом итераций, сделанных в Excel. Ввиду того, что double намного точнее чем значения в Excel, возможны различия в числе итераций ( назначенных ).

Ссылка на ideone.com: http://ideone.com/fork/Wh91nH

 

Related Images:

А116в

Задача.

Даны натуральное число [latex]n[/latex], действительное число [latex]x[/latex]. Вычислить: [latex]\sum_{i=1}^{n}{\frac{x+cos(ix)}{2^{i}}}[/latex]

Тесты. 

n x sum Комментарий
5 2 1.65 Пройден
10 10 9.67 Пройден
5 0 0.97 Пройден

Все тесты проверены на wolframalpha.

Код.

C++

Java

 

Для решения данной задачи воспользуемся циклом for, также для упрощения вычислений (не считать [latex]2^{i}[/latex] каждый раз заново) введем переменную degree.

Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).

Related Images:

А116д

Задача:

Даны натуральное число [latex]n[/latex], действительное число [latex]x[/latex]. Найти:

[latex]\prod_{k=1}^{n}(\frac{k}{k+1}-cos^k|x|)[/latex]

Тесты:

[latex]x[/latex] [latex]n[/latex] [latex]p[/latex] Комментарий
1 4 0.0212016 Пройден
-4 3 -0.0779913 Пройден
50 16 0.0782772 Пройден

Код:

Для решения данной задачи создаем цикл, счетчик [latex]k[/latex] которого не превышает заданного [latex]n[/latex].  В самом цикле вычисляем произведение [latex]p[/latex] путем домножения новых  множителей заданных формулой  [latex]\frac{k}{k+1}-cos^k|x|[/latex]  пока [latex]k[/latex] не превысит [latex]n[/latex]. Выводим произведение [latex]p [/latex].

Ссылка Ideone

Код Java

Ссылка на Ideone

Related Images:

A106

Даны действительные числа [latex]a, b[/latex], натуральное число  [latex]n(b>a) [/latex]. Получить [latex](f_1+…+f_n)h[/latex], где

[latex]h=\frac{b-a}{n}[/latex],      [latex]f_i=\frac{a+(i-\frac{1}{2})h}{1+(a+(i-\frac{1}{2})h)^{2}}[/latex]
a b n h f Комментарий
5 7 0 Введенное ‘n’ не натуральное
17 10 15 Первое введенное число больше второго
47.421 57.421 5 2 1.912507e-01 Пройден
3 12 6 1.5

1.330323e+00

Пройден
1 5 1 4 1.2 Пройден
2 14 2 6 1.694830e+00 Пройден

Код программы:

Код на Java:

 

Дано [latex]a,b,n[/latex]. Если [latex]n<1[/latex] или [latex]a=b[/latex], то выведем ошибку. Если [latex]a>b[/latex], то выведем ошибку.
По формуле вычислим [latex]h=\frac{b-a}{n}[/latex]  и с помощью цикла по формуле [latex]f_i=\frac{a+(i-\frac{1}{2})h)}{1+(a+(i-\frac{1}{2})h)^{2})}[/latex] вычислим сумму. Домножим сумму на [latex]h[/latex].

Код программы на С++ можно посмотреть тут
Код программы на Java можно посмотреть тут

Related Images:

А116е

Вычислить [latex] \prod_{i=1}^{n}{\frac{(1-x)^{i+1}+1}{((i-1)!+1)^2}} [/latex]

Числа [latex] n [/latex] и [latex] x [/latex] вводятся с клавиатуры.

n x Ответ
1 3 1.25
2 3 -2.1875
3 3 -4.13194
Вводим n и x типа int. Инициализируем переменные v=1-x и u=1 типа double. Присваем значение переменной pro, при  n=1. Запускаем цикл от 2 до n в котором увеличиваем факториал u*=i-1 и степень v*=1-x. Так цикл пройдет n раз и в конце выдаст итоговое произведение cout<< pro.

Link

Java

 

Related Images:

Ю3.24

Задача. Композиция [latex]n[/latex]- ого порядка [latex]f^{[n]}(x)[/latex] функции [latex]f(x)[/latex] назовем результат [latex]n[/latex]- кратного вычисления функции [latex]f [/latex], то есть [latex]f^{[1]}(x)=f(x)[/latex], [latex]f^{[ 2]}(x)=f(f(x))[/latex], и так далее. Для заданных [latex]n[/latex] и [latex]x[/latex] вычислить [latex] (expln)^{[n]} (x)[/latex] и [latex] exp^{[n]} ln^{[n]} (x)[/latex], результаты сравнить с [latex] x[/latex], то есть вывести значения аргумента, композиции функции и разности между ними.

[latex]x[/latex] [latex]n[/latex] [latex](expln)^{[n]}(x)[/latex] [latex]exp^{[n]} ln^{[n]}(x)[/latex] [latex]x-(expln)^{[n]}(x)[/latex] [latex]x-exp^{[n]}ln^{[n]} (x)[/latex]
3 3 3 3 -4.44089e-16 -4.44089e-16
3 4 3 nan -4.44089e-16 nan

 

Задаем функцию, которая будет возвращать нам [latex]double[/latex] и иметь два параметра типа [latex]double[/latex] и [latex]int[/latex](число [latex]n[/latex]- количество композиций). В ней проверяем равна ли  переменная нулю latex[/latex], если равна, то нет необходимости производить композицию, если же не равна нулю, то присваиваем [latex]x[/latex] значение функции  и возвращаем [latex]x[/latex], если [latex]n<=1[/latex], иначе вызываем эту же функцию, но на порядок ниже latex[/latex] и так пока [latex]n==1[/latex] (то есть задаем рекурсию). Точно также описываем формулы [latex]exp[/latex] и [latex]ln[/latex] (В C++ [latex]log(x)[/latex]- это логарифм числа [latex]x[/latex] по основанию [latex]e[/latex]). В основной программе вызываем эти две функции и выводим их значения  и разность между аргументом и значением функции для определения погрешности. (Возможны такие варианты, когда у вас будет логарифм отрицательным, что приведет к ответу [latex]nan[/latex])

Java

 

Related Images:

Ю3.36

Задача

Численно убедиться в справедливости равенства, для чего для заданного значения аргумента [latex]x[/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon[/latex]. Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций [latex]n[/latex] (слагаемых или сомножителей), необходимых для достижения заданной точности.

[latex]\frac { { e }^{ x }+{ e }^{ -x } }{ 2 } =1+\frac { { x }^{ 2 } }{ 2! } +\frac { { x }^{ 4 } }{ 4! } +\cdots+\frac { { x }^{ 2n } }{ (2n)! } +\cdots[/latex]

Тесты

   x [latex]\varepsilon[/latex] Левая часть Правая часть    n Разность Комментарий
3 0.00005 10.0676619958  10.0676598764 8 0.0000021194 Пройден
 11.33  0.0000314 41641.5114284855 41641.5114045419 19 0.0000239436 Пройден
 6 0 Погрешность равна 0, тогда правая часть стремится к левой 201.7156361225 (n=бесконечность)​  Не пройден

Код программы на C++:

В данной задаче необходимо было доказать равенство при заданном [latex]x[/latex] и [latex]\varepsilon [/latex].

Для этого вначале высчитывалось значение левой части [latex]\frac { { e }^{ x }+{ e }^{ -x } }{ 2 } [/latex] при заданном [latex]x[/latex], а далее, в цикле, высчитывалось значение правой части [latex]\frac { { x }^{ 2 } }{ 2! } +\frac { { x }^{ 4 } }{ 4! } +…+\frac { { x }^{ 2n } }{ (2n)! } +…[/latex]. В цикле программа находила последующий элемент последовательности, стоящей в правой части равенства, каждый раз умножая предыдущий элемент на [latex]\frac { { x }^{ 2 } }{ (2n-1)*(2n) } [/latex] до тех пор пока разность между левой и правой частью равенства [latex]dife=left-right[/latex]  не стала меньше заданной погрешности, заданной по модулю [latex]dife < \left|\varepsilon \right|[/latex]. После завершения цикла программа запоминает последнее значение [latex]n[/latex] и после этого выводит его на экран.

Код программы на Java

 

Related Images:

A119е

Задача. Вычислить бесконечную сумму с заданной точностью [latex]\varepsilon[/latex]([latex]\varepsilon[/latex]>0). Считать что требуемая точность достигнута, если несколько первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем [latex]\varepsilon [/latex], это и все последующие слагаемые можно уже не учитывать.
Вычислить:
[latex]\sum _{ i=0 }^{ \infty }{ \frac { 1 }{ { 4 }^{ i }+{ 5 }^{ i+2 } } }[/latex]

[latex]\varepsilon[/latex] [latex]r[/latex]
0.09 0
0.02 0.0384615
0.000 7 0.0477735
0.000 056 0.0481501
0.000 000 4 0.0481658

Давайте сразу же упростим заданную сумму:
[latex]\sum _{ i=0 }^{ \infty }{ \frac { 1 }{ { 4 }^{ i }+{ 5 }^{ i+2 } } } = \sum _{ i=0 }^{ \infty }{ \frac { 1 }{ { 4 }^{ i }+{ 5 }^{ i }*25 } }[/latex]

Из выше описанного следует что если обозначить слагаемые в знаменателе как [latex]a[/latex] и [latex]b[/latex] соответственно, то изначально их нужно инициализировать как [latex]a=1[/latex], a [latex]b=25[/latex], то следует каждый раз умножать [latex]a[/latex] на четыре, а [latex]b[/latex] на пять, чтобы получить нужную нам последовательность. Осталось только сделать цикл который будет находить каждый элемент последовательности и прибавлять его к переменной [latex]r[/latex] в которой мы будем хранить результат, при этом цикл будет работать только пока текущий элемент последовательности больше заданного нам числа [latex]\varepsilon[/latex]. После нарушения условия цикла мы выводим полученную сумму последовательности которая хранится у нас в переменной [latex]r[/latex].

Код программы: http://ideone.com/9nYtod.

Related Images:

Ю3.43

Текущая стоимость оборудования. Фирма ежегодно на протяжении [latex]n[/latex] лет закупала оборудование стоимостью соответственно [latex]s_{1},s_{2}\ldots,s_{n}[/latex] руб. в год (эти числа вводятся и обрабатываются последовательно).Ежегодно в результате износа и морального старения(амортизации) все имеющееся оборудование уценяется на [latex]p[/latex]%. какова общая стоимость накопленного оборудования за n лет?

   [latex]p[/latex]    [latex]n[/latex] [latex]s_{1}, s_{2},\ldots,s_{n}[/latex] Результат:
10 6 5
8
10
58
18
43
5.000000
12.500000
21.250000
77.125000
87.412500
121.67125
28 4 12
7
14
33
12.000000
15.640800
25.260800
51.187776
15 4 24.5
31.78
0
11.51
24.500000
52.60500
44.714250
49.517113

Код программы:

По условию задачи нужно вычислять общую стоимость оборудования, которое ежегодно уценяется на определенный процент. Вначале вводим переменные: [latex]n[/latex] с типом данных «int», так как это количество лет и переменные [latex]p[/latex] и [latex]s[/latex] с типом «double». Потом считываем процент уценки и количество лет. Далее создаем цикл в котором считываем стоимость оборудования, с каждым годом  уценяем ее по формуле: [latex]S=S*(100-p)/100[/latex] и суммируем со стоимостью только что закупленного оборудования.
Для проверки работы программы можно воспользоваться объектом.

Related Images:

A119(a)

Задача:

Вычислить бесконечную сумму с заданной точностью [latex]\varepsilon \left(\varepsilon > 0\right)[/latex]. Считать что требуемая точность достигнута, если несколько первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем ε, это и все последующие слагаемые можно уже не учитывать.

  1. [latex]\sum{\frac{1}{i^2}} [/latex]
 
[latex]\varepsilon[/latex] Result Комментарий
0.0000000000000045 1.644912487 Тест пройден
0.45 1.25 Тест пройден
0 Попробуйте… Тест пройден
>1 1 Тест пройден
Описание:

В задаче сказано посчитать сумму членов определенной последовательности с заданной точностью.

Алгоритм:

  1. Объявление переменных, необходимых для обозначения члена последовательности, суммы членов последовательности и точности с которой будут проходить вычисления.
  2. Ввод значения точности.
  3. Проверка правильности ввода:
    • Отрицательное или равное нулю [latex]\varepsilon[/latex] вызовет бесконечный цикл и как следствие — превышение лимита по времени.
  4. Создание заведомо бесконечного цикла, который прерывается, как только член последовательности станет меньше, чем заданная точность.
  5. Вывод результата и окончание работы.

Ссылка на Ideone.

Related Images:

Ю3.2

Задача: Периодические функции. Утверждается, что функция [latex]y = f\left ( x \right)[/latex] периодическая с периодом  [latex]T[/latex]. Проверить это численно, вычислив функцию с постоянным шагом на отрезке [latex]\left [ 0,5T \right ][/latex]. Учесть погрешность вычислений и возможные точки разрыва функции. Проверить на примере функций:
[latex]y=\sin^{2}x[/latex],     [latex]y=\tan x[/latex]           [latex]\left (T=\pi\right)[/latex];
[latex]y=\frac{1}{x}\cdot \sin x[/latex]              [latex]\left (T=2\pi\right)[/latex]

Continue reading

Related Images:

Ю3.13

Задача. Проверить численно первый замечательный предел [latex]\lim _{ x\xrightarrow [ ]{ } 0 }{ \frac { \sin { x } }{ x } } =1[/latex], задавая [latex]x[/latex] значения [latex]1[/latex]; [latex]\frac {1} {2}[/latex]; [latex]\frac {1} {4}[/latex]; [latex]\frac {1} {8}[/latex];… до тех пор, пока левая часть равенства не будет отличаться от правой менее чем на заданную погрешность [latex]\varepsilon[/latex].

[latex]\varepsilon[/latex] Ответ
0.5 Проверка пройдена при x ==1
0.09 Проверка пройдена при x ==1/2
0.009 Проверка пройдена при x ==1/8
0.000 9 Проверка пройдена при x ==1/16
0.000 09 Проверка пройдена при x ==1/64
0.000 009 Проверка пройдена при x ==1/256
0.000 000 9 Проверка пройдена при x ==1/512
0.000 000 09 Проверка пройдена при x ==1/2048
0.000 000 009 Проверка пройдена при x ==1/8192
0.000 000 0009 Проверка пройдена при x ==1/16384

Из условия задачи можно сразу определить что здесь придется воспользоваться циклом который будет изменять [latex]x[/latex] и подставлять в функцию:
[latex]y=\frac { \sin { x } }{ x }[/latex]

Главная задача которая стоит перед программистом в таких случаях — это сохранение максимально возможной точности вычислений. Из условия видно что [latex]0<x<=1[/latex], при этом он будет постоянно делиться на двойку, так что если обозначить знаменатель [latex]x[/latex] как [latex]a[/latex] (числитель всегда будет единицей), то справедливо что:
[latex]y=\frac { \sin { x } }{ x }=\frac{ \sin{ \frac {1}{a} } }{\frac {1}{a}}=a*\sin{ \frac {1}{a} } [/latex]

где [latex]a={2}^{i}[/latex], [latex]i>=0[/latex] (то есть переменная [latex]i[/latex] пробегает все значения от нуля и до плюс бесконечности).
Иными словами переменная [latex]a[/latex] инициализируется единицей и с каждой итерацией умножается на двойку.
Нам осталось только сделать цикл который будет подставлять нужный [latex]x[/latex] в формулу пока модуль разности значения правой половины равенства и левой не будет меньше (либо равен) заданному [latex]\varepsilon[/latex]

Сам код программы: http://ideone.com/N9p5sQ.

Related Images: