Ю4.15

Заданы массивы [latex]A(n)[/latex] и [latex]B(m)[/latex]. Получить массив [latex]C(m+n)[/latex], расположив в начале его элементы массива [latex]A[/latex], а затем элементы массива [latex]B[/latex].

Из выше написанного ясно что нам нужно сделать. Все пояснения максимально детально расписаны в самом коде.

Тесты:

n m A[n] B[m] Результат:
3 4 0 1 2 5 7 8 4 A={0 1 2}
B={5 7 8 4}
C={0 1 2 5 7 8 4}
2 9 9 3.6 7.4 3.6 4.6666 7.99702 1 1 1 1 1 A={9 3.6}
B={7.4 3.6 4.6666 7.99702 1 1 1 1 1}
C={9 3.6 7.4 3.6 4.6666 7.99702 1 1 1 1 1}
 

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

Related Images:

Ю3.35

Задача. [latex]\arctan(x)=x-\frac{x^{3}}{3}+\frac{x^{5}}{5}-\cdots (-1)^{n}\frac{x^{2n+1}}{2n+1}+\cdots[/latex]

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

Тесты:

x [latex]\varepsilon[/latex] left right n Разность Комментарий
1 0.3 0,785398 1 0 0,214602 Пройден
0.6 0.02 0.54042 0.528 1 0.0124195 Пройден
0.7 0.0002 0.610726 0.610631 7 9.52374е-05 Пройден
0.7 0.000002 0.610726 0.610728 12 1.67214е-06 Пройден
0.7 0.00000000001 0.610726 0.610726 28 8.34648е-12 Пройден

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

 

В начале мы подставляем аргумент x в левую часть равенства и подсчитываем ее. Затем проверяем разность между правой частью и левой, если ее модуль меньше заданного [latex]\varepsilon[/latex], то выводим результат, а если нет, то в цикле while мы считаем последовательность до тех пор пока их разность не будет меньше [latex]\varepsilon[/latex]. Последовательность задается в цикле рекурентно, поэтому т.к. первый член последовательности будет равен x, то заведем переменную s, равную xкоторая будет определять чему равен числитель дроби, домножая предыдущий на [latex](-1)x^{2}[/latex] . После этого программа выводит значение левой и правой части, их разницу и количество итераций для заданной погрешности.

Код можно проверить здесь.

Решение на Java:

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

Related Images:

Ю 3.30

Задача 

 Численно убедится в справедливости равенства для заданного значения аргумента [latex]x[/latex] на заданное значение погрешности [latex]\varepsilon[/latex]. Вывести число итераций.

[latex]sinx=[/latex][latex] x-\frac{x^3}{3!}+[/latex][latex]\frac{x^5}{5!}[/latex][latex]-\dots+[/latex][latex](-1)^{n-1}[/latex][latex]\frac{x^{2n-1}}{(2n-1)!}[/latex]

Тест

[latex]x[/latex] Delta Результат(wolframalpha)
0 0 0.001 0
3.14 [latex]\pi[/latex] 0.0001 0.00161324
1.57 [latex]\pi/2[/latex] 0.00001 1
1.05 [latex]\pi/3[/latex] 0.0001 0.86602
2.06 [latex]2\pi/3[/latex] 0.0001 0.869296
Ссылка на программу: http://ideone.com/ykdWnD

Решение

Каждый последующий член ряда рекурсивно выражается через предыдущий.  Суть решения в том, что получая аргумент мы фиксируем левую часть выражения, вычисляя значение синуса от данного аргумента, а затем проверяем сколько слогаемых нам потребуется, чтобы вторая часть отличалась от первой на заданное значение дельта. А ответ показывает значения левой и итоговой правой частей.

 

Related Images:

А410в

Дана целочисленная матрица[latex][a_{ij}]_{i,j=1,…,n}[/latex] . Получить [latex]b_{1},…,b_{n}[/latex], где [latex]b_{i}[/latex] — это [latex]\prod_{j=1}^{n}a_{ij}[/latex];

Матрица Результат
4
1 4 6 -5 -120
5 7 8 7 1960
1 2 5 9 90
5 5 0 3 0

 

Для начала прочитаем матрицу из потока ввода используя цикл for. Потом создадим цикл, в котором сначала будем присваивать каждому [latex]b_{i}[/latex] значение 1, а после этого получать необходимое значение. В самом конце напечатаем результат используя цикл.

Related Images:

А137г

Даны натуральное число [latex]n[/latex], действительные числа [latex]a_{1}, a_{2}, \ldots a_{n}[/latex].
Вычислить: [latex]a_{1},-a_{1}a_{2},a_{1}a_{2}a_{3}, \ldots (-1)^{n+1}a_{1}a_{2} \ldots a_{n}[/latex].

Решение. Вводим переменную [latex]n[/latex], переменную [latex]a[/latex](куда будем считывать наши числа), а так же [latex]f[/latex]-произведение введенных чисел. Каждый раз в цикле уже введенные числа умножаются на следующее число взятое с противоположным знаком, а изначально «f»  равна «[latex]-1[/latex]» так как «Очередное произведение отличается от предыдущего сомножителем [latex](-a_{i})[/latex]».

Тесты:
[latex]n=3[/latex]

Числа[latex](a_{n})[/latex] Результат:
1 1, -2, 6.
2
3

[latex]n=7[/latex]

Числа[latex](a_{n})[/latex] Результат:
1.8 1.8, -7.02, 0.000702, 0.055458, -25.3432, 22.8114, -91.2456.
3.9
0.0001
-79
456.98
0.9001
4

 

 

 

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

Related Images:

A116г

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

[latex]\prod_{k=1}^{n}(1+\frac{sin(kx)}{k!})[/latex]

Вводим переменную [latex]x[/latex] и [latex]n[/latex], помимо них введем переменную для вычисления факториала [latex]k[/latex] и ту, которая будет вычислять произведение в цикле.

Создаем цикл по [latex]k[/latex] от 1 до [latex]n[/latex], проводим в нем все вычисления и вне цикла выводим результат.

Тесты:

[latex]n[/latex] [latex]x[/latex] Результат:
2 5.89 0.39856
9 -300.001 1.65069
3 199 0.170071
7 0 1
4 -50 1.8349
Ссылка на код.

Related Images:

Ю3.23

Текущее среднее. Числа [latex]x_{1},x_{2},..[/latex] последовательно поступают с устройства ввода. Все числа хранить в памяти нет необходимости; после ввода каждого числа нужно вычислить и напечатать среднее значение всех введенных чисел: [latex]S_{n}=\frac{1}{n}\sum_{k=1}^{n}x_{k}[/latex].

Вводим переменную равную нулю, которую в дальнейшем используем в цикле для вычисления суммы всех введенных чисел, переменную которая будет обозначать количество чисел и конечно же переменную в которую будем записывать наши числа.

Создаем цикл, в котором «n» раз будем считывать «x» и суммировать при помощи переменной «s», а затем делить на «текущее» количество переменных в цикле при помощи счетчика цикла.

Тесты:

[latex]n=4[/latex]

[latex]x[/latex] Числа: Результат:
[latex]x_{1}[/latex] 1 1, 4, 5.33333, 46.
[latex]x_{2}[/latex] 7
[latex]x_{3}[/latex] 8
[latex]x_{4}[/latex] 168

[latex]n=6[/latex] 

[latex]x[/latex] Числа: Результат:
[latex]x_{1}[/latex] 9.5 9.5, 6.7, 4.40042, 506.8, 399.418, 342.849.
[latex]x_{2}[/latex] 3.9
[latex]x_{3}[/latex] -0.19873
[latex]x_{4}[/latex] 2014
[latex]x_{5}[/latex] -30.11
[latex]x_{6}[/latex] 60

 

 

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

 

Related Images:

A119в

Задача

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

[latex]\sum _{i=1}^{\infty}{\frac{{-1}^{i}}{i!}}[/latex]

Код C++

Код C++ на Ideone: http://ideone.com/jIBbYb

Код Java

Код Java на Ideone: A119в.

Комментарии

Вычисляем бесконечную сумму с точностью до [latex]\varepsilon[/latex].

Тесты

[latex]\varepsilon[/latex] Результат Комментарий
1e — 5 -0,632118 Пройден
1e — 25 -0,632121 Пройден
1e — 2 -0,625 Пройден

 

Related Images:

Ю3.19

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

[latex]x_{n+1}=\frac{x_{n}}{p^{2}}[(p^{2}-1)+\frac{1}{2}(p+1)\frac{a}{x_{n}^{p}}-\frac{1}{2}(p-1)\frac{x_{n}^{p}}{a}][/latex];

Сколько итераций надо выполнить, чтобы для заданной погрешности [latex]\varepsilon[/latex] было справедливо соотношение [latex]\mid x_{n+1}-x_{n} \mid [/latex] [latex] \leq[/latex][latex]\varepsilon[/latex]?При каких начальных приближениях [latex]x_{0}[/latex] процесс сходится?

a p xz eps i xn x Комментарий
16 4 1 0.000001 5 4 4
17 2 2 0.01 3 4.12311 4.12311
26 4 12 0.1 Превышено ограничение на время

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

Код на Java:

 

Вводим с клавиатуры [latex]a[/latex], [latex]p[/latex], [latex]xz[/latex], [latex]eps[/latex], где [latex]xz[/latex]- наше приближение [latex]x_{0}[/latex], а [latex]eps[/latex] заданная погрешность.
С помощью цикла и рекуррентно заданной формулы получаем [latex]xn[/latex].С помощью счетчика [latex]i[/latex] получаем количество итераций.
Если программа вычисляет слишком долго, то мы можем сказать, что процесс не сходится.

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

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

Related Images:

Ю3.11

Задача.

Получить таблицу пересчета миль в километры и обратно (1 миля=1,609344 км) для расстояний,не превышающих км, в следующем виде:

мили км
0,6214 1,0000
1,0000 1,6093
1,2428 2,0000
1,8641 3,0000
2,0000 3,2187

Тесты.

Ввод Вывод
k
3 mile     km
0.6214 1.0000
1.0000 1.6093
1.2427 2.0000
1.8641 3.0000
7 mile     km
0.6214 1.0000
1.0000 1.6093
1.2427 2.0000
1.8641 3.0000
2.0000 3.2187
2.4855 4.0000
3.0000 4.8280
3.1069 5.0000
3.7282 6.0000
4.0000 6.4374
4.3496 7.0000
0 mile      km
3.3 mile     km
0.6214 1.0000
1.0000 1.6093
1.2427 2.0000
1.8641 3.0000
2.0000 3.2187

 

 

 

Решение.

 

Читаем значение k. В цикле имеем два значения n  и i, значение  увеличиваем в каждом витке цикла, а значение  тогда, когда значение [latex]i/1.609344[/latex] превысит значение n. Пока этого не произошло печатаем значения соответствующие км и [latex]i/1.609344[/latex] милям. Когда-же значение [latex]i/1.609344[/latex] превысило значение n проверяем, если значение [latex]n\times 1.609344[/latex] меньше или равно печатаем строку, где значения миль равно n, а значение км [latex]n\times 1.609344[/latex], потом проверяем если значение i  меньше или равно значению k, то печатаем строку, где значение миль равно[latex]i/1.609344[/latex]а значение км равно i. То есть для подсчёта целых значений миль используем параметр n, а для подсчёта целых значений км параметр i.

Related Images:

e-olymp 6277. Покупка воды

Задача №6277 с сайта e-olimp.com.

Стоимость бутылки воды, учитывая стоимость пустой бутылки, составляет 1 грн 20коп., а стоимость пустой бутылки 20 коп.
Сколько бутылок воды можно выпить на [latex]n[/latex] грн, учитывая, что пустые бутылки можно сдавать, и на полученные деньги приобретать новые бутылки воды.

Входные данные
Натуральное число [latex]n[/latex] (1 [latex]n[/latex] 1000).

Выходные данные
Количество бутылок воды, которое можно выпить на [latex]n[/latex] грн.

[latex]n[/latex] Результат
2 1
10 9
0.7 0

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

Задача решена методом моделирования. Вычисления проведены согласно условию, представленному в задаче. По условию задачи необходимо узнать сколько можно выпить бутылок имея [latex]n[/latex] грн. Для этого описываем и считываем количество денег [latex]n[/latex], а также создаем счетчик, определяющий сколько бутылок воды в итоге можно купить. Затем создаем цикл, в котором пока мы имеем достаточно средств покупаем воду за 1.2 грн и сразу же сдаем бутылку за 0.2 грн, в результате количество денег уменьшается на 1, а счетчик увеличивается на 1. Когда количество денег станет меньше 1.2 грн выходим из цикла и печатаем количество купленных бутылок.
Для проверки работы программы можно воспользоваться объектом.

Имеется альтернативный линейный вариант решения:

http://ideone.com/ClAaK4
Решение принято

Код на Javа:

Related Images:

А114а

Задача. Вычислить [latex]\sum_{i=1}^{100}{1/i^2}[/latex];

[latex]\sum_{i=1}^{100}{1/i^2}[/latex] Комментарий
1.63498 Тест пройден
Все довольно просто:

1) Программа задает функцию и её сумму;
2) Вычисляет сумму элементов функций  arr(i) в цикле(прибавляет к сумме asd каждое значение фунции arr(i) , где i от 1 до 100);
3) Выводит значение суммы.

Для проверки можете воспользоваться этой ссылкой

Related Images:

А119б

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

[latex]\sum_{i=1}^{\infty}{\frac{1}{i(i+1)}}[/latex].

Тесты:

[latex]\varepsilon[/latex] s Комментарий
0.035 0.800 Пройден
0.085 0.667 Пройден
0.025 0.833 Пройден
Решение:

С помощью цикла подсчитываем сумму.

С работой программы можно ознакомиться здесь.

Related Images:

A114з

Задача:

Вычислить [latex]\prod_{i=2}^{10}{\left(1-\frac{1}{i!} \right)^{2}}[/latex].

Тест:

[latex]\prod_{i=2}^{10}{\left(1-\frac{1}{i!} \right)^{2}}=0,1563[/latex]- тест пройден.
Решение:

Для решения это задачи сделаем цикл. в котором будем вычислять произведение и факториал. Факториал будем вычислять применяя рекуррентные соотношения. Затем подставим факториал в формулу и вычислим произведение.

Посмотреть работу программы можно здесь.

Related Images:

Ю3.32

Задача:

Вычислить [latex]x=2\left(\sin x-\frac{\sin 2x}{2}+\frac{\sin 3x}{3}-\cdots+\left(-1 \right)^{n-1} \frac{\sin nx}{n}\right)[/latex],

[latex]-\pi <x<\pi [/latex].

n x summa Комментарий
3 1 0.867725 Пройден
2 2 2.575397 Пройден
1 5 -1.917849 Пройден
Решение:

Запишем общий вид суммы: [latex]2\sum_{i=0}^{n}{\left(-1 \right)^{n-1}}\frac{\sin ix}{i}[/latex].

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

Работу программы можно посмотреть тут.

Related Images:

Ю3.37

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

[latex]\frac {{e}^{x}-{e}^{-x}}{2} =x+\frac {{x}^{3}}{3!}+\frac {{x}^{5}}{5!} +…+\frac {{x}^{2n-1}}{(2n-1)!} +…[/latex]
x e результат Комментарий
5 0.01 0.002312 Работает
3.14 0.999 0.686728 Работает
4 0 Эквивалентно Работает
Всё просто. Считаем левую часть, считает правую часть циклом. В том же цикле ждём момента когда [latex]le-pr[/latex] будет меньше или равно заданной погрешности.

ideone

Вывод: Задача решена.

Related Images:

Ю3.15

Задача: Сравнить скорость сходимости (число слагаемых для заданной точности [latex]e[/latex]  следующих разложений числа [latex]\pi[/latex]

 

1.   [latex]\pi=4\left(1-\frac {1}{3}+\frac {1}{5}-\frac {1}{7}+\frac {1}{9} -… \right)[/latex]

 

2.   [latex]\pi=3+4\left(\frac {1}{2\cdot 3\cdot 4}-\frac {1}{4\cdot 5\cdot 6}+\frac {1}{6\cdot 7\cdot 8\cdot } -…\right)[/latex]

 

3.   [latex]\pi=\sqrt {6\left(1+\frac {1}{ {2}^{2} } +\frac {1}{ {3}^{2}}+\frac {1}{ {4}^{2}}+… \right) }[/latex]

Число слагаемых (е) Вариант 1 Вариант 2 Вариант 3 Комментарий
1 0.858407 0.025074 0.692103 Работает
2  0.474926 0.00825932  0.40298 Работает
3 0.325074  0.00825932 0.283855 Работает
10  0.099753 0.000185935 0.092231 Работает

Первым делом я исчисляю разложения с заданным количеством слагаемых. Затем я присваиваю нужные им значения (по формуле), а затем с помощью абсолютного значения числа считаю погрешность.

ideone

Вывод: Второе разложение является самым точным.

Related Images:

А136ж

Задача: Даны натуральное число [latex]n[/latex], действительные числа  [latex]{ a }_{ 1 },\dots ,{ a }_{ n }[/latex]

Вычислить:  [latex]{ a }_{ 1 }-{ a }_{ 2 }+{ a }_{ 3 }-\dots +{ (-1) }^{ n+1 }{ a }_{n }[/latex]

(В этой задаче не требуется хранение исходных последовательностей значений)

n  [latex]{ a }_{ 1 },\dots ,{ a }_{ n }[/latex] Sum
5 7 4 3 3 3 6
10  1 1 2 2 3 3 4 4 5 6 -1
15 66 456 3334 23 0.86 -587 4332 82223 0.0008 0 -0.75 44 52 7777 43 -82108.9
5  0.0005 0.0006 0.06 0.00008 0.00003 0.05985

Код программы на С++

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

Смысл решения прост — мы считываем количество чисел, которые нам в последствии предоставят. делается это для того, чтобы наш цикл мог точно закончится. Затем считывая каждое число присваиваем ему соответствующий знак и суммируем. Как и просили в условии — исходные значения не сохраняются.

Ссылка C++

Ссылка Java

 

Related Images:

Ю 3.31

 Задача: Численно убедится в справедливости равенства для заданного значения аргумента [latex]x[/latex] на заданное значение погрешности [latex]\varepsilon [/latex]. вывести число итераций.

[latex]cosx=1-\frac { { x }^{ 2 } }{ 2! } +\frac { { x }^{ 4 } }{ 4! } -\dots +{ (-1) }^{ n }\frac { { x }^{ 2n } }{ (2n)! }+\dots[/latex]
x  Delta  Value  Step’s
0    [latex]0[/latex] 0.0000001 1 1
3.14     [latex]\pi[/latex]  0.00001 -1 7
1.57    [latex]\frac { \pi }{ 2 }[/latex]  0.00001 0.000795865 5
1.05    [latex]\frac { \pi }{ 3 }[/latex]   0.00001 0.497571 4
2.09    [latex]\frac { 2\pi }{ 3 }[/latex]   0.00001 -0.496189 6

Код программы на С++

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

Ссылка на Java

Можно заметить, что каждый последующий член ряда рекурсивно выражается через предыдущий. Это позволяет нам значительно уменьшить количество операций. Суть решения в том, что получая аргумент мы фиксируем левую часть выражения, вычисляя значение косинуса от данного аргумента, а затем проверяем сколько слагаемых нам потребуется, чтобы вторая часть отличалась от первой на заданное значение дельта. Цикл программы выводит значение правой части на каждом шагу, а как ответ показывает значения левой и итоговой правой частей.

 

Related Images:

Ю4.17

В массиве [latex]A(n)[/latex] найти и напечатать номера (индексы) локальных максимумов, то есть таких [latex]a_{i}[/latex], что [latex]a_{i-1}<a_{i}>a_{i+1}[/latex].

Значение Результат
8   5 3 8 6 7 2 9 5 2 4 6

 

Для решения данной задачи зададим массив. После этого создадим цикл, в котором будем каждую итерацию проверять, удовлетворяет ли новое значение нашему условию и если да, то выводить на печать его номер.

Related Images: