Итерационные циклы - PascalABC.NET (251632)
Формулировка задачи:
Для всех значений X, задаваемых параметрами из набора:
начальное значение A, конечное значение В, шаг Dx, количество ша-гов Nx, ограничение на число итераций Nmax, вычислить функцию F(x) как сумму S бесконечного числа слагаемых, заканчивая суммирование для каж-дого значения x при достижении заданной точности EPS.
Вывести в выводной текстовый файл исходные данные A,B,Dx,EPS и результаты расчета: значения x,F(x),S и количество слагаемых K, обес-печивающих требуемую точность. Результаты выводить в форме таблицы с рамками.
F(x) = arctg(x)
начальное значение A = -0.5
конечное значение В = (нет)
шаг Dx 0.1
число шагов Nx = 10*
число итераций Nmax = (нет)
точность вычисле-ния
EPS * = 1e-6
цикл через if, он должен работать с goto
Как это делается?
Решение задачи: «Итерационные циклы»
textual
Листинг программы
const a=-0.5; dx=0.1; n=10; e=0.000001; function F(x:real):real; begin F:=arctan(x); end; function S(x:real;var k:integer):real; Label 1,2; var t,y:real; begin k:=0; t:=x; y:=t; 1:if abs(t)/(2*k+1)<=e then goto 2; k:=k+1; t:=-t*x*x; y:=y+t/(2*k+1); goto 1; 2:k:=k+1; S:=y; end; Label 1,2; var x,y:real; i,k:integer; t:text; begin assign(t,'arctg.txt'); rewrite(t); writeln(t,'Значения функции arctg(x) и ее разложения в ряд Тейлора'); writeln(t,'A=0.5 Dx=0.1 Nx=10 Eps=0.000001'); writeln(t,'---------------------------------'); writeln(t,'| x | F(x) | S(x) | K |'); writeln(t,'---------------------------------'); i:=0; x:=a-dx; 1:if i>n then goto 2; i:=i+1; x:=x+dx; y:=S(x,k); writeln(t,'|',x:5:1,'|',F(x):10:6,'|',y:10:6,'|',k:3,'|'); goto 1; 2:writeln(t,'---------------------------------'); close(t); write('Вычисления окончены, результаты записаны в файл arctg.txt'); end.
Объяснение кода листинга программы
- Объявлены константы: a=-0.5, dx=0.1, n=10, e=0.000001.
- Объявлены функции: F(x:real):real и S(x:real;var k:integer):real.
- В функции S(x:real;var k:integer):real происходит вычисление функции arctg(x) и ее разложения в ряд Тейлора методом итерации.
- В основной программе происходит заполнение таблицы значений функции arctg(x) и ее разложения в ряд Тейлора в файл arctg.txt.
- В функции S(x:real;var k:integer):real используется цикл while, который выполняется до тех пор, пока значение переменной k не станет больше n.
- При каждой итерации цикла, значение переменной x увеличивается на dx, а значение переменной k увеличивается на 1.
- Значение функции arctg(x) вычисляется с помощью функции F(x:real):real.
- Значение разложения функции arctg(x) в ряд Тейлора вычисляется с помощью функции S(x:real;var k:integer):real.
- Значения переменных x, F(x) и S(x) записываются в файл arctg.txt.
- Значение переменной k записывается в файл arctg.txt.
- После окончания цикла, выводится сообщение о завершении вычислений и закрытии файла arctg.txt.