Программа на языке Паскаль: PROGRAM LR1; Uses Crt; Const eps1 = 0.01; { Точность 10-2} eps2 = 0.001; { Точность 10-3 } eps3 = 0.0001; { Точность 10-4 } a = -0.6; { Начальное значение Х} b = 0.05; { Шаг} N = 20; { Количество значений функции } Var k1, k2, k3, i: Integer; {Вспомогательные переменные} f1, f2_1, f2_2, f2_3, step, slag, x: Real;
BEGIN ClrScr; {Рисуется шапка таблицы} writeln('__________________________________________________________'); writeln('| | | e=0.01 | e=0.001 | e=0.0001 |'); writeln('| x | f1(x) |----------------|----------------|------------------|'); writeln('| | | f2(x) | N | f2(x) | N | f2(x) | N |'); writeln('|_______|_____________|______|___|_______|___|________|___|'); x := a; {Начальное значение Х} for i:=1 to N do begin f1:=sqrt(3)*((x*x)/2)*arctan(x*sqrt(3)/(x+2))+1/4*((x*x+2)*ln(1-x*x*x))- -1/4*(3*x*x*ln(1-x)); {функция f1} { Вычисляется значения функции f2} step:=1; {Начальное значение степени Х} f2_1:= 0; {Начальное значение функции f2_1} k1:= -1; repeat {Итерационный цикл для точности 10-2} inc(k1); step:=step*x*x*x; {Наращивается степень} slag:=step/((k1+1)*(3*k1+1)); {Считается очередное слагаемое} f2_1:=f2_1+slag; {Считается значение f2_1} until abs(slag)<=eps1; {Выход из цикла, когда слагаемое становится меньше точности 10-2} f2_2:=f2_1; k2:=k1; repeat {Итерационный цикл для точности 10-3} inc(k2); step:=step*x*x*x; {Наращивается степень} slag:=step/((k2+1)*(3*k2+1)); {Считается очередное слагаемое} f2_2:=f2_2+slag; until abs(slag)<=eps2; {Выход из цикла, когда слагаемое становится меньше точности 10-3} f2_3:=f2_2; k3:=k1; repeat {итерационный цикл для точности 10-4} inc(k3); step:=step*x*x*x; {Наращивается степень} slag:=step/((k3+1)*(3*k3+1)); {Считается очередное слагаемое} f2_3:=f2_3+slag; until abs(slag)<=eps3; {Выход из цикла, когда слагаемое становится меньше точности 10-4} { Вывод результатов} writeln('| ', x:5:2,' | ',f1:12:9,'| ',f2_1:5:2,'| ', k1:2,'| ',f2_2:6:3,'| ',k2:2,'| ',f2_3:7:4,'| ', k3:2,'|'); x:=x+b; end; { завершение таблицы } write('|-------+-------------+------+---+-------+---+--------+---|'); ReadKey END.
Результаты работы программы:
Описание схемы алгоритма:
Вначале работы программы задаются значения всех необходимых для работы переменных в соответствии с условием задачи: a= - 0,6; b= 0,05; N= 20; ε1= 0.01(10-2); ε2= 0.001(10-3); ε3= 0.0001(10-4); Следом выводится шапка таблицы. Затем организуем цикл, по значению x начиная с заданного a = - 0.6 увеличивая с каждым шагом на b = 0,05 до достижения нужного количества шагов N = 20. После ввода функции f1, задаем начальные значения переменных для циклического расчета функции f2: step = 1; f2_1 = 0; k1 = -1; Далее организуем итерационные циклы по расчету значений функции f2 до достижения требуемых (ранее заданных) точностей ε1; ε2; ε3. На каждом шаге первого цикла считаем степенное значение х step=step*x*x*x и значение функции slag=step/((k1+1)*(3*k1+1)) до достижения точности ε1 abs(slag)<=eps1. После того как достигнута требуемая точность, запоминаем значения k1 и f2_1 и передаем их значения для расчета следующему циклу k2=k1, f2_2=f2_1. Во втором цикле ведем расчеты до достижения точности ε2 abs(slag)<=eps2 и аналогично с первым – запоминаем и передаем значения переменных третьему циклу k3=k2; f2_3=f2_2. В котором ведем расчет до достижения точности ε3 abs(slag)<=eps3. Достигнув требуемых точностей выводим сохраненные расчеты в таблицу: x; f1; f2_1; f2_2; f2_3; N; Далее повторяем итерации для следующего значения х. По окончанию расчета выводятся завершающие таблицу символы.