ОСВОЕНИЕ ПРАКТИКИ РЕШЕНИЯ ЗАДАЧ НА ОДНОМ ИЗ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ Ι. Ц е л ь з а д а н и я – знакомство с практикой решения задач, оформление программы и отчета по работе, работа с листингом. 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 ba ) n b I g ( x)dx . a а) формула прямоугольников n1 I n h g (a i 0 2i 1 * h) 2 б) формула трапеций n1 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 i1 i1 За приближенное значение интеграла принимается такое, при котором | 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 ) | ; Тогда ( k1) принимается за искомое значение 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 | 2i 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 , x1 , x2 и фиксированном значении 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 , x1 , x2 ,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( x2 y3z10a) 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 21 u2 22 u3 23 ... ), то а) 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–м обращении в процедуру из числа i1 образуется i =F( i1 ) и затем 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 1i m 1 ai 2 i 1 1 ai д) F( a )= m in | ai | m в) F( a )= 1i m m б) F( a )= ai i 1 m г) F( a )= ai 2 sin ai i 1 е) F( a )= max | ai ai 1 | 2i m m a , если a a m 1 ж) F( a )= i 1 i a m , если a1 <a m max ai , если a1 <0 з) F( a )= 1i m a1, если a1 >0 и) F( a )= m in ln(1 ai 2 ) к) F( a )= (2 cos ai ) 1i 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 i1, j i, j 1 . 1i, jn 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 eix i 0 r в) P(x) ( p sin(ix) p' cos(ix)) i i i0 r г) P(x) ( pi s h(ix) pi' c h(ix)) i0 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 произвольны.