Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программирование алгоритмов циклической структуры ⇐ ПредыдущаяСтр 2 из 2
Пример. Вычислить значение функции , где при а, изменяющемся от ан до ак, с шагом Δ а aн=2, ак=3, Δ а=0, 2
а) с использованием оператора цикла с предусловием while Блок-схема алгоритма Паскаль-программа Program prim31; var an, ak, da, a, x, y: real; begin write(‘Введите an, ak, da=’);
a: =an; while a< =ak+0.0001 do begin нет x: =ln(a); y: =exp(1/3*ln(abs(sin(x)))); да writeln(‘a=’, a: 3: 1, ’ x=’,
a: =a+da; end; end.
Результаты
a=2.0 x=0.693 y=0.861 a=2.2 x=0.788 y=0.892 a=2.4 x=0.875 y=0.916 a=2.6 x=0.956 y=0.935 a=2.8 x=1.030 y=0.950 a=3.0 x=1.099 y=0.962
б) с использованием оператора цикла с постусловием repeat-until
Блок-схема алгоритма Паскаль-программа Program prim32; var an, ak, da, a, x, y: real; begin write(‘Введите an, ak, da=’); readln(an, ak, da); a: =an;
x: =ln(a); y: =exp(1/3*ln(abs(sin(x))));
‘ y=’, y: 5: 3);
until a> ak; end.
Результаты
a=2.0 x=0.693 y=0.861 a=2.2 x=0.788 y=0.892 нет a=2.4 x=0.875 y=0.916 a=2.6 x=0.956 y=0.935 да a=2.8 x=1.030 y=0.950 a=3.0 x=1.099 y=0.962
в) с использованием оператора цикла с параметром for
Блок-схема алгоритма
Паскаль-программа
Program prim33;
i, n: integer; begin write(‘Введите an, ak, da=’);
n: =trunc((ak-an)/da)+1; a: =an; for i: =1 to n do begin x: =ln(a); y: =exp(1/3*ln(abs(sin(x))));
‘ x=’, x: 5: 3, ’ y=’, y: 5: 3); a: =a+da; end;
Результаты Введите an, ak, da=2 3 0.2 a=2.0 x=0.693 y=0.861
a=2.4 x=0.875 y=0.916 a=2.6 x=0.956 y=0.935 a=2.8 x=1.030 y=0.950 a=3.0 x=1.099 y=0.962
Программирование алгоритмов разветвляющейся структуры Пример. Вычислить значение функции. если
а) с использованием условного оператора if-then-else Паскаль-программа
Program prim21; var a, b, c, x, y: real; n: integer; begin
x: =ln(abs(a-cos(a))); c: =x*a; b: =x+a;
begin y: =-10.5; n: =1; end else if c=> 3.5 then да begin y: =c+ln(b); n: =3; end else нет begin y: =exp(c)+2*b; n: =2; end; writeln(‘x=’, x: 1: 3, ’ c=’, c: 1: 3, ’ y=’, да y: 1: 3, ’ n=’, n); end. нет
x=1.927 c=14.162 y=16.389 n=3
б) c использованием оператора выбора case
Паскаль-программа Program prim22; var a, b, c, x, y: real; k: integer;
write(‘Введите а=’); readln(a); x: =ln(abs(a-cos(a))); c: =x*a; b: =x+a;
if c< =3.5 then k: =2 else k: =3; case k of 1: y: =-10.5; да 2: y: =exp(c)+2*b; 3: y: =c+ln(b); нет end; да writeln(‘x=’, x: 1: 3, ’ c=’, c: 1: 3, ’ =’, y: 1: 3, ’ k=’, k);
Введите а=7.35 x=1.927 c=14.162 y=16.389 k=3
нет
k=2
k=3
Суммирование рядов
Задача. Разработать программу вычисления точного Y и прибли-женного S значений функции при изменении её аргумента от xн до xк с шагом Δ x. Приближенное значение функции, представленной бесконечным рядом , вычислять путем суммирования членов ряда до достижения требуемой точности = . То есть прибавлять очередной член ряда до тех пор, пока его значение по абсолютной величине не станет меньше . Для предотвращения зацикливания предусмотреть завершение процесса суммирования членов ряда по заданному максимальному номеру члена ряда =1000. Ниже рассмотрены примеры суммирования бесконечных рядов трех типов: а) текущий член ряда ai вычисляется непосредственно; б) текущий член ряда ai вычисляется по рекуррентной формуле , где ; в) текущий член ряда ai является произведением двух сомножителей , где вычисляется непосредственно, а -по рекуррентной формуле. Формула итерации для текущего члена находится в виде: , где . Примеры а) рассматривается вариант вычисления суммы бесконечного ряда, текущий член ai которого вычисляется непосредственно и имеет вид, например, и т.д.
Пример 1. ; ; ; - вычисляется непосредственно;
б) рассматривается вариант вычисления суммы бесконечного ряда, текущий член ai которого содержит степенные выражения, факториалы и имеет вид, например. и т.д.
Пример 2.
; ; - вычисляется по рекуррентной формуле в виде: , ; Рекуррентная формула ; Проверка - формула верна;
в) рассматривается вариант вычисления суммы бесконечного ряда, текущий член ai которого содержит выражения, вычисляемые непосредственно, и выражения с факториалами и степенями и имеет вид, например, и т.д.
Пример 3.
; . Решение
Вывод формулы итерации: 1. Определение типа члена ряда. - смешанный тип , где – вычисляется непосредственно, а - по рекуррентной формуле.
2. Определение формулы итерации в виде: , , , Формула итерации: , , .
3. Проверка: , - формула верна. Блок-схема алгоритма Паскаль-программа
Program prim43; const n=1000; e=0.0001 label met; var x, y, s, xn, xk, dx, c, a: real; i: integer;
write(‘Введите xn, xk, dx=’); readln(xn, xk, dx); x: =xn; while x< =xk do нет begin y: =arctan(x); s: =x; c: =x; for i: =1 to n do
a: =c/(2*i+1); if abs(a)< e then goto met; s: =s+a;
met: writeln(‘x=’, x: 3: 1, ‘ y=’y: 8: 5, ’ s=’, s: 8: 5, ’ i=’, i); x: =x+dx; end end.
Результаты Введите xn, xk, dx=0.2 0.8 0.2 x=0.2 y=0.19740 s=0.19733 i=2 x=0.4 y=0.38051 s=0.38048 i=4 да x=0.6 y=0.54042 s=0.54044 i=7 x=0.8 y=0.67474 s=0.67480 i=13 нет
Задача. Разработать программу решения 4-х взаимосвязанных задач 1) расчёт элементов квадратной матрицы A=a(i, j), i, j=1, 2, … по заданной формуле;
2) вычисление элементов вектора X=x(i) i=1, 2, … по заданному правилу;
3) упорядочение элементов матрицы А или вектора Х;
4) вычисление значения функции y по заданной формуле.
Пример. 1) ; ;
2) ; ;
3) упорядочить элементы второго столбца матрицы А по убыванию значений;
4) ; .
Задание выполнить для n=6. Замечание. Предварительно провести отладку программы при n=3, для чего получить решение задачи вручную (или с помощью калькулятора) и проверить полученные данные на ЭВМ.
Блок-схема алгоритма
нет
да
нет
да
Паскаль-программа program prim5; var a: array[1..10, 1..10] of real; x: array [1..10] of real; i, j, k, n: integer; y, s, c: real; begin writeln(‘Введите n’); read(n); {---------------------------------------часть 1-----------------------------------} for i: =1 to n do for j: =1 to n do a[i, j]: =(2*j*i+4*i)/j; writeln(‘ ‘: 20, ’МАТРИЦА А’); for i: =1 to n do begin for j: =1 to n do write(a[i, j]: 8: 3); writeln; end; {---------------------------------------часть 2-----------------------------------} for i: =1 to n do begin s: =0; for j: =1 to n do s: =s+sqr(a[i, j]); x[i]: =sqrt(s)/n; end; writeln(‘ ‘: 20, ’ВЕКТОР Х’); for i: =1 to n do write(x[i]: 8: 3); {---------------------------------------часть 3-----------------------------------} for i: =1 to n-1 do begin k: =i; for j: =i+1 to n do if a[j, 2]> a[k, 2] then k: =j; if i< > k then begin c: =a[i, 2]; a[i, 2]: =a[k, 2]; a[k, 2]: =c; end; end; writeln(‘ ‘: 14, ’УПОРЯДОЧЕННАЯ МАТРИЦА’); for i: =1 to n do begin for j: =1 to n do write(a[i, j]: 8: 3); writeln; end; {---------------------------------------часть 4-----------------------------------} y: =1; for i: =1 to n do begin s: =0; for k: =1 to n do s: =s+x[k]; if x[i]< > 0 then y: =y*x[i]*s; end; writeln(‘ЗНАЧЕНИЕ ФУНКЦИИ У=’, y: 1: 3); end.
Результаты Введите n=6 МАТРИЦА А 6.000 4.000 3.333 3.000 2.800 2.667 12.000 8.000 6.667 6.000 5.600 5.333 18.000 12.000 10.000 9.000 8.400 8.000 24.000 16.000 13.333 12.000 11.200 10.667 30.000 20.000 16.667 15.000 14.000 13.333 36.000 24.000 20.000 18.000 16.800 16.000
ВЕКТОР X 1.555 3.110 4.665 6.220 7.776 9.331
УПОРЯДОЧЕННАЯ МАТРИЦА А 6.000 24.000 3.333 3.000 2.800 2.667 12.000 20.000 6.667 6.000 5.600 5.333 18.000 16.000 10.000 9.000 8.400 8.000 24.000 12.000 13.333 12.000 11.200 10.667 30.000 8.000 16.667 15.000 14.000 13.333 36.000 4.000 20.000 18.000 16.800 16.000
ЗНАЧЕНИЕ ФУНКЦИИ Y=123454118108000.000 Список рекомендуемой литературы
1. Задания для практических и лабораторных занятий по информатике (работы 1-5): Методические указания./ Cост. Т.Г. Умергалин, И.Г. Мухамадеев, Э.В. Писаренко - Уфа: изд-во УГНТУ, 1997.-51 с. 2. Основы программирования и работы в интегрированной среде Турбо-Паскаль: Методические указания./ Cост Т.Г. Умергалин, И.Г. Мухамадеев - Уфа: изд-во УГНТУ, 1992.-45 с. 3. Емелина Е.И. Основы программирования на языке Паскаль. - М.: Финансы и статистика, 1997.-208 с. 4. Фаронов В.В. Турбо Паскаль: В 3-х кн. Кн. 1. Основы Турбо Паскаля. – М.: Учебно-инженерный центр “МВТУ-ФЕСТО ДИДАКТИК”, 1992. – 304 с.
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Популярное:
|
Последнее изменение этой страницы: 2016-05-03; Просмотров: 850; Нарушение авторского права страницы