writeln('___________________________') ;
readln; end.
Выполнить программу для Хn=-4, Xk=4, dx=1.
Индивидуальные задания
Задание 1
Вычислить и вывести на экран в виде таблицы значения функции, заданной графически (см. задание 1 лабораторной работы №2), на интервале от
до с шагом dx. Интервал и шаг задать таким образом, чтобы проверить все ветви программы. Таблицу снабдить заголовком и шапкой.Задание 2
Для десяти выстрелов, координаты которых задаются с клавиатуры, вывести текстовые сообщения о попадании в мишень из задания 2 лабораторной работы «2.
Лабораторная работа №4. Организация циклов.(продолжение)
Задача 3.2. Вычисление суммы ряда
…………………………………………………………………………………………………………………
Написать программу вычисления значения функции sin с помощью степенного ряда с точностью по формуле
Этот ряд сходится на всей числовой оси. Для достижения заданной точности требуется суммировать члены ряда до тех пор, пока абсолютная величина очередного члена не станет меньше или равна .
Запишем в общем виде формулу для вычисления n – го члена ряда:
На первый взгляд может показаться, что придется организовать циклы для расчета факториала и степеней. При этом можно получить очень большие числа, при делении которых друг на друга произойдет потеря точности, поскольку количество значащих цифр, хранимых в ячейке памяти, ограничено. Кроме того, большие числа могут переполнить разрядную сетку.
Мы поступим по-другому. Легко заметить, что (n+1) – й член ряда вычисляется после n-го, поэтому программа получится более простой и эффективной, если находить член ряда не «с нуля», а умножением предыдущего члена на некоторую величину.
Найдем эту величину. Для этого сначала запишем формулу для (n+1)-го члена ряда, подставив в предыдущее выражение (n+1) вместо n:
Теперь найдем выражение, на которое надо будет умножить C
, чтобы получить С : =Запишем алгоритм вычисления суммы ряда в словесной форме:
1. Ввести исходные данные (аргумент и точность).
2. Задать начальные значения номеру члена ряда, первому члену ряда и сумме ряда.
3. Организовать цикл в котором:
1) Вычислить очередной член ряда;
2) Добавить его к сумме ряда;
3) Перейти к следующему члену ряда;
4) Проверить, достигнута ли точность вычислений.
4. Вывести значение функции.
Определить заранее, сколько членов ряда потребуется просуммировать для достижения точности, невозможно, поскольку при анализе условия выхода используется переменная, вычисляемая на каждой итерации цикла. Такие циклы потенциально опасны, поэтому для предотвращения зацикливания полезно предусмотреть аварийный выход из цикла по достижении некоторого максимально допустимого количества итераций с печатью предупреждающего сообщения.
Ниже приведен текст программы с комментариями. На каждой итерации требуется хранить значение одного члена ряда, поэтому все члены ряда формируются в одной и той же переменной с:
program sinus;
const MaxIter=500; {максимально допустимое количество итераций}
var x,eps:double; {аргумент и точность}
c,y:double; {член ряда и его сумма}
n:integer; {номер члена ряда}
done:boolean; {признак достижения точности}
begin
writeln('Введите аргумент и точность:');
readln(x,eps);
done:=true;
c:=x; {первый член ряда}
y:=c; {начальное значение суммы}
n:=1;
while abs(c)>eps do begin
c:=-c*sqr(x)/2/n/(2*n+1); {очередной член ряда}
y:=y+c; {добавление члена ряда к сумме}
inc(n); {переход к следующему члену ряда}
if n<=MaxIter then continue;
writeln('ryd rasxoditsya');
done:=false;break {аварийный выход из цикла}
end;
if done then
writeln('Аргумент:',x:10:6,#13#10,
'Значение функции:',y:10:6,#13#10,
'Вычислено с точностью',eps:8:6,'за',n,'итераций');
readln;
end.
Первый член ряда равен х, поэтому, чтобы при первом проходе цикла значение второго члена вычислялось правильно, начальное значение n должно быть равно 1.Максимально допустимое количество итераций удобно задать с помощью именованной константы. Для аварийного выхода изх цикла применяется процедура break, которая обеспечивает переход к первому после цикла оператору. Символы #13#10 при выводе вызывают переход на следующую строку.
Контрольный пример для х=7.5 и eps=0,00001.
Индивидуальное задание
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от
до с шагом dx с точностью . Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.1.
2.
3.
4.
5.
6.
7.
8.
x>1.9.
10. arthx=
11. arthx=
12.
13.
14.
15.
16.
17.
18.
19. arcsinx =
20.
21.