ОСВОЕНИЕ ПРАКТИКИ РЕШЕНИЯ ЗАДАЧ НА АЛГОЛЕ

advertisement
ОСВОЕНИЕ ПРАКТИКИ РЕШЕНИЯ ЗАДАЧ НА ОДНОМ ИЗ ЯЗЫКОВ
ПРОГРАММИРОВАНИЯ
Ι. Ц е л ь з а д а н и я – знакомство с практикой решения задач, оформление
программы и отчета по работе, работа с листингом.
2. С о д е р ж а н и е з а д а н и я.
2.Ι. Составление программы для индивидуальной задачи. Знакомство с инструкцией к
программе и паспортом задания.
2.2. Отладка программы. Изучение распечатки, выдаваемой машиной (листинга),
внесение исправлений в программу.
2.3. Получение результата и представление отчета.
3. В ы п о л н е н и е з а д а н и я.
3.Ι. Задание №2 выполняется в течение первого семестра. Самостоятельная работа
студента сочетается с занятиями в аудитории (6 часов в неделю). Тематика (содержание)
занятий может быть примерно следующей:
Ι) синтаксическая таблица определения выражения (на языке Бэкуса);
2) поиск ошибок в выражениях на примерах сообщений, выданных транслятором;
3) синтаксическая таблица определения оператора;
4) поиск ошибок в операторах на примерах сообщений, выданных транслятором;
5) синтаксическая таблица определения описаний;
6) поиск ошибок в описаниях на примерах сообщений, выданных транслятором;
7) внесение исправлений в программу;
8) разбор особых ситуаций, возникающих при выполнении программы;
9 и далее) разбор ошибок студентов, проведение консультаций, проверка усвоения
практических навыков, прием отчетов.
3.2. Самостоятельная работа студента должна выполняться по следующему
примерному плану:
Ι) получение индивидуальной задачи, ее изучение и составление блок-схемы счета – Ιя-2-яя недели;
2) составление программы 3-я неделя;
3) отладка программы, получение решения и представление отчета – 4-я-5-я неделя.
3.3. Задание, которое должен выполнить студент, носит характер числовых
вычислений, не приводящих к трудностям кодирования исходной информации. В задании
требуется, чтобы в программе были выделены процедуры и процедуры-функции.
Примеры задач даны ниже.
4. С о д е р ж а н и е о т ч е т а.
4.Ι. Описание задачи и исходных данных.
4.2. Блок-схема счета и контрольные результаты.
4.3. Отлаженная программа, распечатка с результатами и пояснениями к ней.
5. Т и п о в ы е з а д а ч и.
5.Ι. Табулирование интегральной функции.
Вычислить значение функции
b
f (t )   F ( x, t )x
a
в заданных точках t ,..., tm с точностью ε. Входными данными программы являются
1
числа m, a, b, ε и массив t[1:m]. Выходные данные – массив y[1:m], где y[i]=f(t[i]).
В программе предусмотреть:
- процедуру-функцию вычисления функции F(x,t) с формальными параметрами X и t;
- процедуру вычисления интеграла по одной из квадратурных формул с формальными
параметрами: границы интегрирования a, b, точность вычисления интеграла ε, функция
F(x,t) и значение ее параметра t.
Исходные данные.
Ι. Квадратурная формула для вычисления интеграла
(всюду h 
ba
)
n
b
I   g ( x)dx .
a
а) формула прямоугольников
n1
I n  h  g (a 
i 0
2i  1
* h)
2
б) формула трапеций
n1
1
I n  h[  g (a  ih)  ( g (a)  g (b))]
2
i 1
в) формула Симпсона (n - четно)
n 1
2
n
2
h
I n  [2  g (a  2ih)  4  g (a  (2i 1)h)  g (a)  g (b)]
3 i1
i1
За приближенное значение интеграла принимается такое, при котором | I 2n  I n | ε.
ΙΙ. Подынтегральная функция. Представим
F(x,t)=ψ(x) *( x 
Тогда функция ψ(x):
1  x2
а)
;
1  x2
2, 7 x
г)
;
5, 7  0,9 x  x 2
функция  (z):
а) sinz
t
)
1  x2
б) e  z
б)
д)
2 x
в)
;
1  x  x2
1,8  x
2,5  0, 4 x  1, 6 x 2
в) ln(1  z 2 )
4  x2
1 x
е)
;
1  x2
;
г) cos2 z
0, 2  3x
д) shz
;
е) arctgz
ΙΙΙ. Числовые данные.
а)
б)
в)
г)
д)
е)
a
0
-1
0.8
-2
1
2.0
b
1
2
2.6
0
4
3.7
ε
0.1
0.2
0.3
0.3
0.2
0.1
m
3
4
5
6
3
4
t1
-3.7
-2.1
-0.6
-2.6
-0.4
-1.6
t2
1.8
-3.0
-0.1
-1.8
2.6
-1.5
t3
7.2
-0.9
0.3
-0.2
7.9
-1.4
t4
1.8
1.9
0.7
1.4
t5
7.8
1.6
-
t6
2.5
-
5.2. Табулирование неявной функции.
Вычислить приближенно значение функции в заданных точках x1 ,..., x2 , если
функция задана уравнением F(X,Y)=0. Точность вычисления ε. Входными данными
программы являются числа п, ε и массив x[1:n] ; выходные данные – пары чисел ( xi , yi ),
i=1,…,n такие, что F( xi , yi )=0. Корень уравнения F( xi , yi )=0 находится одним из
итерационных методов.
В программе предусмотреть:
– процедуру-функцию, вычисляющую значение F(x,y), с формальными параметрами
X и Y;
– процедуру нахождения корня уравнения F(a,y)=0 итерационным методом.
Исходные данные.
Ι. Итерационный метод нахождения корня уравнения
F(a,y)=0:
а) Метод касательных. При заданном начальном приближении корня y(0) по формуле
y(i 1)  y(i ) 
F (a, y(i ) )
F (a, y(i ) )
находятся очередные приближения до тех пор, пока не окажется
| y( k )  y( k 1) | ε.
Тогда y( k )  y принимается за искомое значение корня.
Формальными параметрами процедуры нахождения корня должны быть: начальное
приближение корня y(0) , точность приближения ε, функции F(x,y), F  (x,y) и значение
параметра X.
б) Метод половинного деления отрезка. При заданных начальных границах
интервала, содержащего искомый корень (0) и (0) , интерационным процессом
вычисляются новые границы (    ) по границам (    ).
– вычисляется (i+1)  (i  i ) / 2
– если F(a, (i+1) )=0, то искомый корень y  = (i+1)
– если F(a, (i+1) )*F(a,  )>0, то
 = (i+1) ,  = 
– если F(a, (i+1) )*F(a,  )<0, то
 =  ,  = (i+1) .
Итерации проводятся до тех пор, пока не окажется на некотором шаге | ( k )  ( k ) |  ;
Тогда ( k1) принимается за искомое значение y  .
Формальными параметрами процедуры нахождения корня должны быть: начальные
границы (0) , (0) , точность приближения  , функция F(x,y) и значение ее параметра X.
в) Метод хорд. Этот метод отличается от предыдущего только тем, что точка (i+1)
определяется другим выражением
 * F (a, (i ) )  (i ) * F (a, (i ) )
(i 1)  (i )
F (a, (i ) )  F (a, (i ) )
ΙΙ. Исходную функцию F(x,y) зададим в виде:
F(x,y)=y*f(x)+g(x)+h(y)
В качестве начального приближения выбрать (для X=a)
y(0)  
g (a)
f (a)
В качестве начальных границ выбрать (для x=a)
(0) = 
g (a)
 15,
f (a )
(0) = 
g (a )
 15
f (a )
Функция F  (x,y)=f(x)+h  (y)
Варианты задания функции g(x):
а)
1  x2
1  x2
;
5  0,3x
б)
;
6,8  2 x 2
в)
7  0, 2 x 2
1  4 x2
г)
0,8
1  x  x2
1  0, 7 x
д)
;
(1  x) 2 
1
7
е)
;
| x|
|1  x |
Варианты задания функции f(x):
б) 6+9|x|;
в) 2 x 2 -x+1,8;
д) 1,7 x 2 +1;
е) (1  0,6 x)2 ;
2
а) 3+2 x ;
г) 10,8-x;
Варианты задания функции h(y) и h  (y)
a) h(y)=-2,7siny
h  (y)=-2,7cosy
2
б) h(y)=1,14 cos y
h  (y)=-1,14sin2y
в) h(y)= 0, 2e y
г) h(y)=
2
h  (y)=-0,4y e  y
1,3ln(1  y 2 )
1 y2
h  (y)=
2
2,6
(1  ln(1  y 2 ))
(1  y 2 ) 2
ΙΙΙ. Числовые данные.
ε
а)
б)
в)
г)
д)
е)
n
3
4
4
6
5
5
0,1
0,2
0,1
0,3
0,2
0,3
x1
x2
x3
x4
x5
x6
1,1
-0,8
-0,6
-4,1
-2,7
-1,8
1,5
-0,2
-0,1
-2,1
-1,8
-1,2
1,8
1,4
1,7
1,6
1,1
1,5
1,9
2,2
2,4
2,1
1,9
2,5
2,6
2,3
3,0
-
5.3. Упорядочивание последовательности.
По заданным X и n построить последовательность чисел X={ x1 , x2 ,..., xn } по закону
xi  F ( xi 1), если x0  X . Затем эту последовательность упорядочить в новую
последовательность Y={ y1 , y2 ,..., yn } согласно правилу п и найти в Y номер r элемента,
удовлетворяющего условию A.
Входными данными программы являются значения X и n; программа должна
напечатать два массива чисел X и Y, а также номер r. В программе предусмотреть:
– процедуру-функцию вычисления функции F(x) c формальным параметром x;
– процедуру упорядочивания массива B размерности m в массив C в соответствии с
правилом п – с формальными параметрами B,C,m.
Исходные данные.
Ι. Функция F(x):
а) F ( xi )  (1)i
ln(1  xi 2 )
2 xi 4  3xi 2  1
2 xi 2  1
sin( xi  1, 2)
xi 2  6,8
1, 2 | xi |
cos( xi 2  xi  1)
в) F ( xi ) 
1,8 | xi  1|
б) F ( xi ) 
e xi 1
г) F ( xi )  (1)
1  xi 2
i
(1)i xi
д) F ( xi ) 
s h( xi  1)
1  xi  xi 2
ΙΙ. Правило п упорядочивания массива X в массив Y:
а) y1  y2  ...  yn
б) | y1 || y2 | ... | yn |
в) y12  y22  ...  yn 2
г) 1 | y1 |  1 | y2 |  ...  1 | yn |
д) любое отрицательное число левее любого положительного.
ΙΙΙ. Условие А, которому должен удовлетворять элемент yr :
а) yr – первое слева положительное число (если таких чисел нет, то r=п+1);
б) yr – первое справа отрицательное число (если таких чисел нет, то r=0);
в) yr = max yi
x i  n
г) yr = min | yi |
x i  n
д) | yr  yr 1 | m ax | yi  yi 1 |
2i  n
X
n
ΙY. Числовые данные
а)
б)
1,2
1,8
10
11
в)
-2,1
12
г)
-3,6
13
д)
4,2
14
е)
-5,1
15
5.4. Оценка псевдослучайной последовательности. Образовать последовательность
псевдослучайных чисел по рекуррентной формуле
xi  F ( xi 1, xi 2 , xi 3a)
при заданных x0 , x1 , x2 и фиксированном значении a , i=1,2,…,N. Подсчитать  k –
количество чисел этой последовательности, оказавшихся в полуинтервале
k k 1
), k  0,1,..., R  1.
R R
Вычислить математическое ожидание
[ ,
2k  1  
k 0 2 R N
R 1
M  
и дисперсию
R 1
D   (
k 0

2k  1
 M  )2 
2R
N
Провести вычисления для значений a=0 и a=1. Входными данными для программы
служат значения x0 , x1 , x2 ,N,R; выходными данными – массив ε[0,R-1], значения M  и
D для каждого значения а=0 и а=1.
В программе предусмотреть:
– процедуру–функцию вычисления функции F(X,Y,Z,A) с формальными параметрами
x,y,z,a;
– процедуру определения полуинтервала [
k k 1
,
], которому принадлежит заданное
R R
число z, с прибавлением единицы к значению элемента массива   – с формальными
параметрами: числа R,Z и массив ε[0,R-1].
Исходные данные.
Ι. Функция F(x,y,z,a)=T(f(x,y,z,a)) причем функция f(x,y,z,a) определяется
выражением:
а) |sin(ax+y-xz)|
б)
e( x2 y3z10a)
2
в) cos2 ( x  y  z  a)
г) |sin(x+y)+sin(z+a)| : 2
д) sin(x-y)-sin(z-a)| : 2
е)
ln(1 | x  y 2  z 2a |)
1 | x  y 2  z 2a |
1  ax
1  ax  2 y  3z
| cos( x  a) |
з)
2  sin( y  z)
x2  y 2  z 2  a  1
ж)
и)
x  y  z  a 1
к) (x+y+z+a):4
ΙΙ. Преобразование T(u) числа u задается следующим образом: если u=0, u1u2u3...u10 –
представление в виде двоичной дроби с точностью до десятого знака после запятой (то
есть u  u1 21  u2 22  u3 23  ... ), то
а) T (u)  0, u10u9u8 ...u2u1
б) T (u )  0, u5u6u7u8u9u10u1u2u3u4u5
в) T (u)  0, u1u2u3..., u10 , где 0 =1 и 1 =0
г) T (u )  0, u10u1u2u3u4u5u6u7u8u9
д) T (u )  0, vu1u2u3...u9 ,где v  u10  u3
е) T (u)  0, v1v2v3v4v5u6u7u8u9u10 , где
v1  u1  u10 , v2  u2  u9 , v3  u3  u8 , v4  u4  u7 , v5  u5  u6
ж) T (u)  0, v1v2 ...u10 , где vi  ui  ui 1, i  1,...,9
ΙΙΙ. Числовые значения.
а)
100
б)
120
в)
150
г)
140
д)
130
е)
110
10
8
12
9
10
11
0.025
0.230
0.841
0.052
0.664
0.273
0.211
0.050
0.126
0.568
0.099
0.591
0.714
0.928
0.385
0.687
0.402
0.741
5.5. Вычисление интеграла методом Монте–Карло.
t
Вычислить значения функции f (t )   g ( x)dx в заданных точках t1, t2 ,..., tm . Значение
1
интеграла вычисляется приближенно по методу Монте–Карло: в интервале [1,t] случайно
t 1 M
 g ( x ). Входными данными
M i 1 i
1
программы служат: числа m, M и массив значений ti , i=1,2,…,m.
t
выбираются M точек x1 , x2 ,..., xM и  g ( x)dx 
В программе предусмотреть:
– процедуру–функцию вычисления g(x) с формальным параметром X;
– процедуру без параметров образования «случайного» числа: при i–м обращении в
процедуру из числа i1 образуется i =F( i1 ) и затем xi  1  (t 1)i (значение 0 =1).
Исходные данные.
Ι. Подынтегральная функция g(x):
б) x 2  1 ;
д) x3  x  1 ;
а) 2x+0,8;
г) x+ x ;
в) 1+x+ x 2 ;
е) x x -0,5.
ΙΙ. Рекуррента образования «случайного» числа i  F (i 1 )  T (h(i 1 )), где
функция h(z) задается выражением:
а) |sinz|;
г)
sin z  sin 2 z
2
б) cos 2 z ;
в)
1 z
1 z  z2
д) e  z
е)
|1  z |
и преобразование T – см. исходные данные предыдущей задачи.
ΙΙΙ. Числовые данные.
М
m
t2
t1
а)
250
2
3
3.5
б)
300
2
4
6.5
в)
150
3
5.8
8.2
г)
200
3
4.3
6.0
д)
150
4
3.8
5.4
t3
t4
–
–
12.0
10.2
7.2
–
–
–
–
8.3
5.6. Вычисление вектора.
По заданному x  z0 , двум квадратным матрицам и функционалу F, заданному на
векторах, вычислить вектор y  zs по закону
A*zi , если F(zi )>c
zi 1 = 
B*zi , если F(zi )  c
Входными данными программы служат: размерность n векторов, число C, а также
элементы вектора x ; выходными данными – элементы вектора y .
В программе предусмотреть:
– процедуру–функцию вычисления функционала F(a) с формальными параметрами:
массив a и его размерность m;
– процедуру умножения матрицы (квадратной) на вектор с формальными
параметрами: массив D (матрица), массивы b и c (векторы), размерность n (векторов и
матрицы).
Примечание. Если элементы векторов и матриц – вещественные числа, то
произведение матрицы D на вектор b есть вектор c =D* b с компонентами
Ci  di,1 * b1  di,2 * b2  ...  di,n * bn ,
если
c  (c1,..., cn ), b  (b1,..., bn ) и D=(di,j ),
причем сложение и умножение – обычные операции. Если же элементы векторов и
матриц – булевского типа, то в выражении для ci умножение понимается как
конъюнкция, а сложение – как сложение по модулю 2.
Исходные данные.
Ι. Функционал F( a ) для векторов с вещественными компонентами ( a =( a1,..., am ))
а) F( a )= max ai
1i  m
1  ai
2
i 1 1  ai
д) F( a )= m in | ai |
m
в) F( a )= 
1i  m
m
б) F( a )=  ai
i 1
m
г) F( a )=  ai 2 sin ai
i 1
е) F( a )= max | ai  ai 1 |
2i m
 m a , если a  a

m
1
ж) F( a )= i 1 i
a m , если a1 <a m
max ai , если a1 <0
з) F( a )=  1i m
a1, если a1 >0
и) F( a )= m in ln(1  ai 2 )
к) F( a )=  (2  cos ai )
1i  m

m
i 1
II. Функционал F(  ) для векторов с булевскими компонентами


а) F(  ) = количество true в векторе  ;



б) F(  ) = количество true, предшествующих в  первому значению false (F(  ) =

m, если в  значений false нет);

в) при трактовке true как I и false как 0 вектор  представляет в двоичной

системе число F(  );

 количество true в  , если 1  true

г) F(  ) = 

 количество false в  , если 1  false
0, если в  нет true


д) F( ) = r , где   true и   ...   =false
r
r 1
m


e) F(  ) = максимальное количество значений true между двумя значениями false

в векторе  ;
m
i, если  i  false

ж) F(  ) =   i , где  i = 
i 1
0, если  i  true
m
1, если  i  false

з) F(  ) =  i , где  i = 
i 1
i, если  i  true
III. Числовые данные.
Для элементов векторов и матриц – вещественных чисел
а)
б)
в)
г)
д)
е)
n
4
5
6
7
8
9
с
0,5
5,8
1,2
9,6
4,3
8,6
Для элементов векторов и матриц – булевских чисел
а)
б)
в)
г)
д)
е)
n
5
6
6
7
7
8
с
2
2
3
3
4
4

Элементы вектора x и матриц A,B выбираются произвольно.
5.7
Вычисление матрицы.
Вычислить элементы квадратной матрицы M по выражению  (A,B,x,y),
содержащему заданные матрицы A,B и числа x,y. Определить значение функционала F на
матрице M. Входные данные для программы: число n – размерность матриц, числа x,y и
элементы матриц A,B. Выходные данные – элементы матрицы M и значение функционала
F(M) .
В программе предусмотреть:
- процедуру-функцию вычисления функционала F (без параметров);
- процедуру для той операции над матрицами, которая входит в
выражение  .
Исходные данные.
I. Выражение  (A,B,x,y) для вещественных матриц
а) M =x  (A+y  B)+y  (B+x  A)
(операция +)
б) M =A-x  (B-y  (A-x  B))
(операция -)



в) M =((A+x) (B+x)-y) ((A-y) (B-x)+x)
(операция  )
г) M =(((A-x) / (B+y)+x) / (AB-y)) / B
(операция /)
3
2
2
3
2
д) M =x  A +y  A +(x+y)  B  A+x  B +y  B
(операция  , причём A = A  A,
3
2
A = A  A)
Пояснение. Операции  ,+,- между числом и матрицей означает поэлементную
операцию (между числом и каждым элементом матрицы); операции между матрицами +,-,
 , / – операции поэлементные; операция  - обычное произведение матриц.
II. Функционал F
n
a) F(M) = max |  mi ,k |
k
i 1
n
б) F(M) =  mi ,i
i 1
в) F(M) = max i , где  i - количество положительных чисел в i -й строке;
i
г) F(M) = r , где r - номер того столбца, сумма элементов которого минимальна;
д) F(M) = max i , j , где  i , j = i, j i 1, j 1  i1, j i, j 1 .
1i, jn 1
III. Числовые данные.
a)
б)
в)
г)
д)
е)
x
0,2
18,3
1,7
24,5
2,5
4,3
y
6,8
1,8
0,2
18,1
19,6
14,2
n
5
5
6
6
7
8
Элементы матриц A и B выбираются произвольно.
5.8.
Преобразование матрицы.
По заданной матрице A (размерности n x n) вычислить новую матрицу X :
E (A) , если предикат p(A) истинен,
X=  1
E 2 (A) , если предикат p(A) л ожен,
где E1 и E 2 - заданные преобразования матрицы A. Входными данными программы
являются: число n и элементы матрицы A; выходными – элементы матрицы X.
В программе предусмотреть:
- процедуру вычисления матрицы E1 (A) с формальными параметрами:
размерность матрицы m, массивы A и B (исходная матрица и
вычисляемая);
- процедуру-функцию булевского типа, вычисления значения предиката
с формальными параметрами: размерность матрицы и массив её
элементов.
Исходные данные.
I. Две различные операции E1 и E 2 над вещественными матрицами из следующего
списка:
а) транспонирование;
б) умножение на 3 тех элементов и только тех строк, в которых диагональный
элемент больше 1.
в) возведение в l – ю степень ( l =3,4);
г) замена элементов  i, j на sin i, j для тех и только тех столбцов j , которые имеют
в первой строке числа, принадлежащие интервалу [-1 ,+1] (т.е.  1   i , j  1 );
д) к элементам нечётных строк прибавить значение их логарифма;
е) преобразование в симметричную с сохранением элементов, находящихся справа от
главной диагонали;
II. Операции E1 и E 2 над булевскими матрицами:
ж) транспонирование;
з) инвертирование (замена true на false и false на true) элементов чётных строк
матрицы;
и) инвертирование элементов тех и только тех строк, которые на главной диагонали
имеют true.
к) возведение в l – ю степень ( l =3,4), при этом умножение трактуется как
конъюнкция, а сложение – как неэквивалентность булевских чисел;
л) преобразование в симметричную с сохранением элементов, находящихся слева от
главной диагонали;
м) в каждом нечётном столбце переставить местами первый и последний элементы,
второй и предпоследний и так далее.
III. Предикат p(A) на вещественных матрицах:
а) все определители второго порядка положительны (т.е.  i , j   i 1, j 1   i 1, j   i , j 1  0 ,
где i, j  1,..., n  1 );
б) каждая строка матрицы содержит и положительные и отрицательные элементы;
в) в каждой строке и каждом столбце есть элемент по модулю не превосходящий 1;
г) для всех i и j таких что i  j имеет место  i , j   j ,i ;
n
д) max |  i, j | 2,5 ;
j
i 1
е) сумма элементов, находящихся слева от главной диагонали, вдвое превышает
сумму элементов, находящихся справа от главной диагонали;
Предикат p(A) на булевских матрицах:
ж) все определители второго порядка равны true (определитель вычисляется по формуле
( i , j   i 1, j 1   i 1, j   i , j 1 ) где i, j  1,..., n  1 );
з) каждая строка матрицы содержит значения как true, так и false;
и) в каждой строке количество значений true больше количества значений false;
к) в матрице имеется либо строка, либо столбец, целиком состоящий из true;
л) для всех i и j таких что i  j имеет место i, j   j ,i ;
м) количество значений true, находящихся слева от главной диагонали, больше
количества значений false, находящихся справа от главной диагонали.
IV. Числовые данные. Размерность матрицы n =5,6,7 или 8, а элементы матрицы
выбираются произвольно.
5.9. Рекуррентное образование матрицы.
По двум заданным матрицам X и Y размерности n на m вычислить матрицу X 5
согласно следующему рекуррентному соотношению:
E1 (X i , Y) , если F(X i )  F(Y)
X i 1  
E 2 (Y, X i ) , если F(X i )  F(Y)
где X= X 0 , F(A) – функционал на матрице А, E1 и E 2 - две операции над парой матриц
образования новой матрицы.
Входными данными являются размерности n, m и элементы матриц X и Y;
выходными данными – элементы матрицы X 5 .
В программе предусмотреть:
- процедуру-функцию вычисления функционала F с формальными
параметрами: размерность n и m массива и сам массив (элементов
матрицы);
- процедуру образования матрицы согласно операции E1 с
формальными параметрами размерность n, m и три массива (элементов
матриц).
Исходные данные.
I. Операции E1 и E 2 выбираются из следующего списка (элементы матриц A, B и
С=E (A, B) обозначены ai , j , bi , j , ci , j ; 1  i  n,1  j  m ).
В случае вещественных матриц:
ai , j  bi , j , если i  j
а) ci , j  
ai , j  bi , j , если i  j
 (ai, j bi, j )
, если i  j
e
б) ci, j  
 | ai, j  bi, j | , если i  j


ai, j  bi, j , если i  1  i  n  j  1  j  m
в) ci, j  
a  b , в остальных случаях

 i, j i, j
bi, j -ai, j , если ai, j  bi, j
г) ci, j  
ai, j  bi, j , если ai, j  bi, j
sin( ai, j  bi, j ) , если ai,i  bi,i
д) ci, j  
если ai,i  bi,i
ai, j  bi, j ,
В случае булевских матриц:
ai, j  bi, j , если i  j
е) ci, j  
ai, j  bi, j , если i  j
( ai, j  bi, j ), если i  j
ж) ci, j  
ai, j  bi, j , если i  j
ai, j  bi, j , если i  1  i  n  j  1  j  m
з) ci, j  
ai, j  bi, j , в остальных случаях
ai, j , если ai, j  bi, j  true
и) ci, j  
bi, j , в противном случае
 ai,1 , если ai,i  bi,i
к) ci, j  
bi,1 , если (ai,i  bi,i )
II. Функционал F(A) на матрице A=( a i , j ), 1  i  n,1  j  m
В случае вещественных матриц:
n
а) F(A)= max |  ai,k |
i
k 1
б) F(А) =
k
 ai,i
i 1
,где k  min( n, m)
n
в) F(A) = min  | ai,k |
k i 1
г) F(A)= max i ,где i –количество положительных чисел в i–й строке матрицы А;
i
д) F(А) =
n
 ai, j ; i<j
i , j 1
В случае булевских матриц:
е) F(A) = max  i , где  i - количество true в i -й строке;
i
ж) F(A) количество false среди значений a1,1 , a 2, 2 ,..., a k ,k , где k  min( n, m) ;
з) F(A) = max i , i - целое число, двоичное представление которого даёт i - й
i
столбец при замене true на 1 и false на 0;
и) общее количество true, среди значений a i , j , когда i  j ;
к) F(A) = min (  i   i ) , где  i - количество true и  i - количество false в i - м столбце.
i
III. Числовые данные.
a)
б)
в)
г)
д)
n
4
3
3
4
5
m
7
8
9
6
6
Элементы матриц X и Y могут быть выбраны произвольно.
5.10. Определение характеристики степеней матрицы.
Для заданной квадратной матрицы A порядка m найти её степени A 2 , A 3 ,..., A n и
вычислить значение функционала F( A i ), i  1,..., n . Если для некоторого l (2  l  n)
окажется F( A l ) > C, то вывести на печать значение p = true и F( A l ),… ,F( A n );
В противном случае напечатать значение p = false. Входными данными программы
являются значения m, n и элементы матрицы A.
В программе предусмотреть:
- процедуру умножения двух матриц с формальными параметрами: три
массива (элементов двух исходных матриц и матрицы их
произведения) и порядок матрицы;
- процедуру – функцию вычисления значения функционала на матрице с
формальными параметрами: массив элементов матрицы и её порядок.
Исходные данные.
I. Элементы матрицы.
а) произвольные вещественные числа;
б) булевские числа;
в) вероятности, т.е. вещественные числа в пределах от 0 до 1 (стохастические
матрицы).
II. Функционал F(A) на матрице – см. задачу 5.9
III. Числовые данные.
a)
б)
в)
г)
д)
m
4
5
6
6
7
n
8
7
6
5
5
c
8
10
4
12
20
5.11. Преобразование сумм.
Функциональная сумма вида
r
P(x)   pi fi ( x)
i 0
задаётся массивом коэффициентов p0 , p1 ,..., pr . По заданному выражению
( P1 ( x), P2 ( x), P3 ( x))  Q( x)
над тремя такими суммами найти коэффициенты q0 , q1 ,..., q r аналогичного вида суммы
Q (x) . Затем вычислить Q( x j ), j  1,..., m .
Входными данными программы являются: массивы коэффициентов сумм
P1 ( x), P2 ( x), P3 ( x) ; их размерность r; значения x1 , x2 ,..., xm и число m. Выходными данными
являются: массив коэффициентов q0 , q1 ,..., q r и числа Q( x1 ) ,…, Q( xm ) .
В программе предусмотреть:
- процедуры для тех операций над суммами, которые входят в
выражение  с формальными параметрами: массивы (коэффициентов
исходных сумм и результирующей) и их размерность;
- процедуру – функцию вычисления значения суммы P (x ) в заданной
точке с формальными параметрами: массив коэффициентов суммы и
значений X.
Исходные данные.
I. Задание функциональной суммы.
r
а) P(x)   pi xi
i 0
r
б) P(x)   pi eix
i 0
r
в) P(x)   ( p sin(ix)  p' cos(ix))
i
i
i0
r
г) P(x)   ( pi s h(ix)  pi' c h(ix))
i0
II. Выражение F ( P1 ( x), P2 ( x), P3 ( x))

 

а) Q( x)   P1 ( x)    P1 ( x)  P3 ( x)   P2 ( x)dx dxdx    P2 ( x)  P3 ( x) dxdx  P1 ( x)
(операции – суммирование двух сумм, интегрирование одной суммы);

 

''
'
б) Q( x)  P1 ( x)  P2' ( x)  P3 ( x)  P1 ( x)  P1' ( x)  P2 ( x)  P2 ' ' ( x)  P3 ' ' '  P3' ( x)
(операции – суммирование двух сумм, и дифференцирования одной суммы);
в) Q( x)  Pr ( x)   P1 ( x)    P2 ( x)  P3 ( x) dxdx   P3 ( x) dx    P1 ( x)  P2 ( x)dx dxdx


(операции – вычитания одно суммы из другой и интегрирование одной функции);

 

'
'
г) Q( x)  P3 ( x)  P1 ( x)  P2 ' ( x)  P3 ' '  P1 ' ( x)  P2 ( x)
(операции – дифференцирования одной суммы и  );
д) Q( x)  P1 ( x)  P2 ( x)  P3 ( x)  P1 ( x) P 2 ( x) P3 ( x)  P 2 ( x)
(операции – вычитания одной суммы из другой и  );


е) Q( x)  P1 ( x)  P2 ( x)  P3 ( x)  P2 ' ( x)  P3 ( x)  P1 ' ' ' ( x)
(операции – дифференцирования суммы и 0);
ж)
Q( x)  P2 ( x)  P1 ( x)  P3 ( x)  P2 ( x)  P3 ( x)  P1 ( x)  P1 ( x)  P2 ( x)  P3 ( x)  P2 ( x)  P1 ( x)
(операции – вычитания и 0);
з) Q( x)    P1 ( x)  P2 ( x) dxdx    P3 ( x)   P2 ( x)dx   P3 ( x)dx dxdx
''

'
 


(операции – интегрирования и  );
Примечание. Если A( x)   ai f i ( x) и B( x)  bi f i ( x) , то сумма C( x)   ci f i ( x)
определяется так:
ci  ai  bi
для операции C ( x)  A( x) B( x)
ci  max( ai , bi )
для операции C ( x)  A( x) B( x)
III. Числовые данные.
a)
б)
r
20
24
m
4
4
-3,18
x1 -2,72
в)
28
3
-3,57
г)
30
3
-0,41
д)
30
2
-2,17
x 2 -0,04
x3 1,10
x 4 5,07
-1,92
2,71
4,18
0,82
4,44
1,63
5,17
4,31
5.12. Арифметические операции над двоичными кодами.
Каждое целое число x ( | x |  2 n  1 ) задаётся булевским массивом размерности n+1:
массив x[0..n] задаёт число a1  2 n 1  a 2  2 n  2  ...  a n 1  2  a n где,
1, если x[ i ]  true
, причём знак числа определяется по x[0] : знак +, если
ai  
0, если x[ i ]  false
x[0]  true, и знак - , если x[0]  false.
По заданной функции F(x,y,z) и трём числам x,y,z (в виде булевских массивов)
вычислить число U = F(x,y,z) – также в виде булевского массива. Полученное число
вывести на печать. Входными данными программы являются: n и три булевских массива;
выходными значениями являются U.
Функция F(x,y,z) содержит операции; для её вычисления в программе предусмотреть
процедуры выполнения этих операций над булевскими векторами.
Исходные данные.
I. Функция F(x,y,z).
а) F(x,y,z)=((x+y)-(x+z)+(y-z))
б) F(x,y,z) = (x  2 3  y  2 2 )  ( z  2  x)  2 2
в) F(x,y,z) = (( x  2  y  5)  z  4)  2  ( x  y  3)
операции (+ и -)
(+ и  2 i )
(+ и  i )
г) F(x,y,z) = (( x  y )  (( x  z )  ( x  y )))  ( y  z )
д) F(x,y,z) = (( x  3  z  2)  ( x  4  y  5))  1  ( y  z )  2
е) F(x,y,z) = (( x  y)  2 3  ( x  z )  3  (( y  z )  2  ( x  y)  21 )  4
(+ и )
(- и  i )
(+,  2 i ,  i )
ж) F(x,y,z) = (( x  y )  z )  (( x  y )  ( x  y )  ( y  z ))
(+ ,-,
з) F(x,y,z) = (( x  y  2)  ( x  z  1)  3)  2  ( y  2  2)  5
(+,  i , )
и) F(x,y,z) = (( x  y )  2 3  ( x  y )  2 2 )  (( x  z )  2 4  ( y  z )  2 3 )  21
(-, ,  i )
)
Пояснение.
операция + определяется как сложение чисел по модулю 2 n ;
операция - определяется как вычитание чисел по модулю 2 n ;
операция  2 i - умножение числа на  2 i (результат берётся по модулю 2 n );
операция  i - циклического сдвига значащих разрядов числа на i позиций
вправо;
операция - изменение значащих разрядов числа на противоположное;
Старшими считаются операции  2 i ,  i , , младшими +, - .
II. Вывод числа U – результата.
а) в виде массива булевских чисел;
б) в виде десятичного числа (перевод числа в десятичную систему оформить в
виде процедуры – функции);
в) в восьмеричном виде.
III. Числовые значения.
а)
б)
в)
г)
д)
10
12
15
18
20
Значения булевских массивов x ,y, z произвольны.
Download