Ю3.17

Задача: Сколько сомножителей надо взять в произведении: [latex]\prod_{k=1}^{\infty}{(1+\frac{{(-1)}^{k}}{2k+1})}=\frac{\sqrt{2}}{2}[/latex], чтобы равенство выполнялось до шестой значащей цифры, то есть с погрешностью не более [latex]{10}^{-6}[/latex]

Идея решения: Используем цикл for, в качестве [latex]k[/latex] в формуле используем переменную [latex]count[/latex] в программе. Переменную, которая будет соответствовать произведению, назовем [latex]mul[/latex] (сокращенно от multiplication) и присвоим ей значение 1 как нейтральный элемент для операции умножения. Каждую итерацию цикла проверяем разность [latex]mul-curr[/latex], где [latex]curr=\frac{\sqrt{2}}{2}[/latex], на превышение погрешности [latex]{10}^{-6}[/latex].

Если разность больше точности, умножаем [latex]mul[/latex] на выражение под знаком произведения и увеличиваем [latex]count[/latex] на единицу.

Если разность меньше точности, число [latex]count[/latex] и будет количеством сомножителей в произведении.

Число сомножителей оказалось достаточно большим — 88390. Ideone

Related Images:

А 42

Задача

Даны действительные числа [latex]x,y[/latex]  [latex](x\neq y)[/latex]. Меньшее из этих двух чисел заменить их полусуммой, а большее — их удвоенным произведением.

Тесты

Было дано Стало после проверки Комментарий
x y x y
38.76 -24.33 -1886.0615999  7.215 Пройден
11.346 23.228 17.287 527.0898 Пройден
-2444.2 1231.444 -606.378 -6019790.8496 Пройден
767.2 -1455.24 -2232920.256 -344.02 Пройден
0 213.4 106.7 0 Пройден
1111 0 0 555.5 Пройден
123.4 123.4 Ничего не выйдет, х=у Не пройден
0 0 Ничего не выйдет, х=у Не пройден

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

 

Для получения ответа переменной необходимо преодолеть критерий [latex](x\neq y)[/latex].

Если же [latex](x\neq y)[/latex], то программа сравнивает сами переменные. Тут может быть два случая:

  • Если  [latex]x>y[/latex], то начальные значения переменных мы должны изменить на [latex]x=\frac{x+y}{2}[/latex], a [latex]y=2*x*y[/latex].
  • Если [latex]y>x[/latex], то начальные значения переменных мы должны изменить на [latex]y=\frac{x+y}{2}[/latex], a [latex]x=2*x*y[/latex].

Программа вначале высчитывает конечные х и у по формулам и при выполнении условий просто присваивает переменным значения. Тем самым мы упрощаем программу (т.к. расчет значений идет только один раз вместо двух).

Второй вариант решения.

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

Для начала описываем функцию swap, которая меняет значения х и у местами. Далее, в самой программе, проверяем не равны ли х и у и, если не равны, то какое из них больше. Узнав большее, используем функцию swap.

Код на Java

Related Images:

А28

Задача.

Дано действительное число х. Не пользуясь никакими другими арифметическими операциями кроме сложения, вычитания и умножения, вычислить:

[latex]2x^4 + 3x^3 — 4x^2 — 5x +6[/latex]

Разрешается использовать не более четырех умножений и четырех сложений и вычитаний.

Тест

x p комментарий
0 6 пройдено
1 2 пройдено
5 1506 пройдено
-6 1836 пройдено
-20 294506 пройдено
25 825506 пройдено
50 12864756 пройдено
100 202959506 пройдено

 

 

Ссылка на программу на С++: http://ideone.com/DjvDnb

Ссылка на программу на Java: http://ideone.com/5XNsDv

 

Решение.

Вводим переменные [latex]x, p[/latex]. Поэтапно группируя по два старших члена уравнения, получаем:

Пользуясь четырьмя операциями умножения, двумя сложения и вычитания и вводя соответствующие значения [latex]x[/latex], получаем ответ.

 

Related Images:

А1

Задача. Даны два действительных числа [latex]a[/latex] и [latex]b[/latex]. Получить их сумму, разность и произведение.

[latex]a[/latex] [latex]b[/latex] [latex]a+b[/latex] [latex]a — b[/latex] [latex]ab[/latex] Комментарий
 0  0  0 0.0 0.0 Пройден
 1 2  3.0 -1.0  2.0 Пройден
 100.3 1000.0001  1100.3001  -899.7001  100300.01003 Не пройден из-за ошибки округления
 1.2e2  -2.2e2  -100  340  -26400 Пройден
 1.2e22  -2.2e22  -1e22 3.4e22  2.64e44 Пройден
1e308 1e308 1e308 0 1e616 Не пройден — превышено макс.значение

Диапазон тестов нужно подобрать так, чтобы произведение не выходило за допустимые значение для данного типа. Иначе получаем inf — бесконечность.
Если разница в порядках чисел велика (например, 1e38 и 1e-38), то при сложении и вычитании меньшее по абсолютной величине игнорируется.

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

В программе использован тип данных с плавающей точкой и двойной точностью.
Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой.

Related Images: