bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [157]
АВС [6]
КПиЯП [80]
ОАиП [305]
ОКТ [79]
СиСПО [8]
Форма входа
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ПОИТ » ОАиП

Лабораторная работа№1 часть 1 вариант 5
Подробности о скачивании 23.01.2010, 18:11
Программа на языке Паскаль:
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;
Далее повторяем итерации для следующего значения х.
По окончанию расчета выводятся завершающие таблицу символы.

Категория: ОАиП | Добавил: Accipiter
Просмотров: 1248 | Загрузок: 19 | Комментарии: 3
Всего комментариев: 3
0  
3 cronos51183033   (14.01.2020 22:26) [Материал]
Ошибка в f1
f1:=(((sqrt(3)*x*x)/2)*arctan((x*sqrt(3))/(x+2)))+(((x*x+2)*ln(1-x*x*x))/4)-((3*x*x*ln(1-x))/4);

0  
2 cronos51183033   (14.01.2020 22:23) [Материал]
Сейчас делаю туже работу

0  
1 cronos51183033   (14.01.2020 22:22) [Материал]
Значения f1 и f2 должны совпадать в пределах заданной точности.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]