Линейные программы 1. Написать программу, которая описывает как вещественные переменные и вводит с клавиатуры расстояние и время равномерного движения тела, рассчитывает и выводит на экран значение его скорости, с 3 знаками до и 4 знаками после десятичной запятой. (4 балла) Решение: Program Pr11; var v,t,s:real; begin read(s,t); v:=s/t; writeln('v=',v:8:4); end. 2. Написать программу, которая описывает как целую переменную tC (температура по Цельсию) и вещественные переменные tR, tF (температуры по Реомюру и Фаренгейту). Программа вводит tC с клавиатуры, рассчитывает и выводит tR, tF с одним знаком после запятой по формулам tR=0.8∙tC ; tF=9∙tC/5+32. Решение Program Pr12; var tR,tF:real; tC:integer; begin read(tC); tR:=0.8*tC; tF:=9*tC/5+32; writeln('tR=',tR:5:1,' tR=',tF:5:1); end. 3. Написать программу, которая описывает как целые переменные и вводит с клавиатуры длины сторон прямоугольника, рассчитывает и выводит на экран значение периметра (переменная вещественного типа) с двумя знаками после запятой Решение Program Pr13; var p:real; a,b:integer; begin read(a,b); p:=2*(a+b); writeln('p',p:5:2); end. 4. Написать программу, в которой описываются вещественные переменные x,y,d вводит с клавиатуры координаты точки x,y, рассчитывает расстояние d от нее до точки (1,3) и выводит на экран значение d с двумя знаками до и после запятой . Решение Program Pr13; var x,y,d:real; begin read(x,y); d:=sqrt(sqr(x-1)+sqr(y-3)); writeln('d=',d:5:2); end. Условный и составной оператор. 1 1. Написать оператор, который при условии x2≤2 , печатает на экране значение х и текст: «x вне диапазона». Если условие не выполняется, то рассчитывает значение переменной f 10 5 ( x 2 2) и печатает её значение. Решение if x*x<=2 then writeln(x,' x вне диапазона') else begin f:=sqrt(1e-5*(x*x-2)); writeln(f); end; 2. Написать оператор, который при условии 2<x<10 , рассчитывает значение переменной f 106 e2 x sin x и печатает её. Решение if (2<x) and (x<10) then begin f:=1e6*exp(2*x)*sin(x); writeln(f); end; 3. Написать оператор, который при условии x>2 или х=3у+1 , вводит с клавиатуры переменную m и печатает значение выражения 10-17(m+2m2), если условие не выполняется, то выводит на экран значение х. Решение if (x>2) or (x=3*y+1) then begin read(m); z:=1e-17*(m+2*m*m); writeln(z); end else writeln(x); 4. Написать оператор, который при условии x≠0 , вводит с клавиатуры переменную а, рассчитывает и печатает значение выражения f=a∙sin(a/x) если условие не выполняется, то рассчитывает переменную r=(2x-1)(5-x) и печатает ее значение. (2 балла). Решение if x< >0 then begin read(a); f:=a*sin(a/x); writeln(f); end else begin r:=(2*x-1)*(5-x); writeln(r); end; Суммы рядов. 1. Написать оператор, который находит сумму чисел 8+…+32 Решение s:=0; for i:=4 to 16 do s:=s+2*i; 2. Написать оператор, который находит сумму чисел 11+3+5+7+…+33 Решение s:=11; for i:=1 to 16 do s:=s+2*i+1; 2 3. Написать оператор, который находит сумму целых чисел от -15 до 0 Решение s:=0; for i:=15 downto 0 do s:=s-i; или s:=0; for i:=-15 to 0 do s:=s+i; 4. Написать оператор, который находит произведение нечетных чисел от 2 до 20 Решение p:=1; for i:=1 to10 do p:=p*2*i; Графика 1. Написать фрагмент программы, который рисует в правом верхнем углу экрана синий квадрат внутри красного прямоугольника(цвета №1,4) setcolor(1); rectangle(800,50,850,100); setcolor(4); rectangle(700,20,950,120); 2. Написать фрагмент программы, который рисует в центре экрана синюю окружность (цвет №1) и в ее центре –красную точку (цвет №4) setcolor(1); circle(500,300,50); putpixel(500,300,4); 3. Написать фрагмент программы, который рисует в левом нижнем углу экрана крест. line(200,100,300,100); line(250,50,250,150); 4. Написать операторы, которые устанавливают графический режим. uses graph; var gd,gr:integer; begin gd:=detect; initgraph(gd,gr,' '); Массивы. 1. Написать оператор, который вводит с клавиатуры одномерный массив В из 30 элементов, начиная с нулевого Решение for i:=0 to 29 do read(B[i]); 2. Написать оператор, который выводит на экран ненулевые элементы одномерного массива mas из 20 элементов. Решение for i:=1 to 20 do if mas[i]<>0 then writeln(mas[i]); 3. Написать оператор, который выводит на экран в столбик номера и значения элементов одномерного массива mas из 30 элементов. Решение for i:=1 to 30 do 3 writeln(i,mas[i]); 4. Написать оператор, который описывает массив num из 100 элементов, индекс первого элемента равен 10. Решение var num: array[10..109] of real; Подпрограммы 1. Написать программу с подпрограммой. В основной программе вводятся координаты вершин пятиугольника и находится его периметр. Длины сторон находятся с помощью подпрограммы. Решение Program Prim61; function dlina(xa,ya,xb,yb:real):real; begin dlina:=sqrt(sqr(xa-xb)+sqr(ya-yb)); end; var x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,s1,s2,s3,s4,s5,p:real; begin read(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5); s1:=dlina(x1,y1,x2,y2); s2:=dlina(x2,y2,x3,y3); s3:=dlina(x3,y3,x4,y4); s4:=dlina(x4,y4,x5,y5); s5:=dlina(x1,y1,x5,y5); p:= s1+s2+s3+s4+s5; writeln('p=',p); end. 2. Написать программу с подпрограммой. Основная программа вводит с клавиатуры ускорения и время движения двух тел и выводит значение расстояний, на которые они переместились за это время (начальные скорости равны нулю). Значение расстояния вычисляется в подпрограмме. Решение Program Prim62; function Ras(a,t:real):real; begin Ras:=a*t*t/2; end; var a1,t1,s1,a2,t2,s2:real; begin read(a1,t1); read(a2,t2); v1:= Ras (a1,t1); v2:= Ras (a2,t2); writeln('s1=',s1,' s2=',s2); end. 3. Написать программу с подпрограммой. Основная программа вводит с клавиатуры координаты двух точек, вычисляет и выводит на экран расстояние между точками и от каждой до начала координат. Расстояния между точками находятся с помощью подпрограммы. Решение Program Prim61; function dlina(xa,ya,xb,yb:real):real; begin 4 dlina:=sqrt(sqr(xa-xb)+sqr(ya-yb)); end; var x1,y1,x2,y2,a,b,c:real; begin read(x1,y1,x2,y2); a:=dlina(x1,y1,0,0); b:=dlina(x2,y2,0,0); c:=dlina(x1,y1,x2,y2); writeln('до начала координат r1=',a,' r2=',b); writeln('между точками r=',c); end. 4. Написать программу с подпрограммой. В основной программе ввести с клавиатуры значения переменных а и b. С помощью обращения к подпрограмме найти значения выражений a+b, 2a-b и вывести на экран. Подпрограмма рассчитывает сумму чисел. Решение Program Prim61; function sum(c,d:real):real; begin sum:=c+d; end; var a,b,s1,s2:real; begin read(a,b); s1:=sum(a,b); s1:=sum(2*a,-b); writeln('a+b=',s1,' 2a-b=',s2); end. Численное интегрирование 1. Записать численную схему нахождения значения определенного интеграла методом прямоугольников слева 10 1 1 x coscx dx Решение: В данном интеграле пределы интегрирования а=1, b=10. Возьмем число разбиений n=100. Тогда номера точек i=0..100. Шаг численного интегрирования b a 10 1 h 0.09 и xi a i h 1 0.09i n 100 Подынтегральная функция: 1 1 yi y ( xi ) cosc xi cosc 1 0,09i xi 1 0,09i В методе прямоугольников слева искомый интеграл рассчитывается по формуле n 1 I h y i i 0 Окончательно записываем численную схему для вычисления данного интеграла методом прямоугольников слева: 10 99 1 1 cos cx dx 0 , 09 cosc (1 0,09i ) 1 x i 0 1 0,09i 2. Записать формулу метода прямоугольников справа для интеграла 5 2 x a a 3 x 3 dx 1 Решение: В данном интеграле пределы интегрирования а=-1, b=2. Возьмем число разбиений n=100. Тогда номера точек i=0..100. Шаг численного интегрирования b a 2 1 h 0.03 и xi a i h 1 0.03i n 100 Подынтегральная функция yi f ( xi ) xia (a 3 x 3i ) (1 0.03i) a (a 3 (1 0.03i) 3 ) 2 n 100 1 i 1 i 1 a 3 3 a 3 3 x (a x )dx h yi 0.03 (1 0.03i) (a (1 0.03i) ) 3. Записать формулу метода трапеций для интеграла 0.7 x a dx 0.5 Решение: В данном интеграле пределы интегрирования а=0.5, b=0.7. Возмем число разбиений n=100. Тогда номера точек i=0..100. Шаг численного интегрирования b a 0.7 0.5 h 0.002 и xi a i h 0.5 0.002i n 100 Подынтегральная функция yi f ( xi ) ( xi a) (0.5 0.002i a) yi1 f ( xi1 ) ( xi1 a ) (0.5 0.002(i 1) a) n1 h ( x a ) dx ( yi yi1 ) 0.5 i 0 2 0.7 99 0.001 (0.5 0.002i a) (0.5 0.002(i 1) a) i 0 4. Записать численную схему нахождения значения определенного интеграла методом прямоугольников справа 2с 1 с x cosxdx Решение: Шаг h=(2с-с)/n=с/n=0,01с (n-число разбиений, например, n=100). Переменная интегрирования xi с 0,01с i . Значение хi используется для вычисления значения функции: 1 1 yi y ( xi ) cosxi cosc 0.01c i xi c 0.01c i Численная схема для вычисления данного интеграла методом прямоугольников справа: 6 2c 100 1 1 cos x dx 0 , 01 с cosc 0.01c i c x i 1 c 0.01c i Обыкновенные дифференциальные уравнения 1. Написать, что является решением данного дифференциального уравнения. Выбрать начальные условия для задачи Коши. Записать схему Эйлера для данного ОДУ х+yх’=y. Найти значения искомой функции в точках с номерами 0 и 1. Решение : Решением является функция x(y). Задача Коши, x(2)=1. Для записи схемы Эйлера, выразим производную yx x y Схема Эйлера yi1 yi h xi1 xi h ( yi xi ) / yi y0=2, x0=1 (из задачи Коши). Из схемы Эйлера для i=0: y1=2+h; x1=1+h(2-1)/2=1+0.5h 2. Написать, что является решением данного дифференциального уравнения. Выбрать начальные условия для задачи Коши. Записать схему Эйлера для данного ОДУ z'=-(z+y)y Найти значения искомой функции в точках с номерами 0 и 1. Решение : z'=-(z+y)y Решением является функция z(y). Задача Коши, z(1)=4. Схема Эйлера yi 1 yi h z i 1 z i h ( z i yi ) y i y0=1, z0=4 (из задачи Коши). Из схемы Эйлера для i=0: y1=1+h; z1=4-h(4+1)*1=4-5h 3. Написать, что является решением данного дифференциального уравнения. Выбрать начальные условия для задачи Коши. Записать схему Эйлера для данного ОДУ xy”=y’cos(y). Найти значения искомой функции в точках с номерами 0 и 1. Решение 3: Решением является функция y(x). Задача Коши: у(1)=3; y’(1)=2; Выразим старшую производную у”=(y’-cos(y))/x. Делаем замену y’=z, получаем систему y' z z ' ( z cos( y )) / x Схема Эйлера xi 1 xi h yi 1 yi h zi zi 1 zi h ( zi cos( yi )) / xi x0=1, y0=3, z0=2 (из задачи Коши). Из схемы Эйлера для i=0: x1=1+h; y1=3+2h; z1=2+h(2-cos(3))/1; 7 4. Написать, что является решением данного дифференциального уравнения. Выбрать начальные условия для задачи Коши. Записать схему Эйлера для данного ОДУ z”+yz’=y-z Найти значения искомой функции в точках с номерами 0 и 1. Решение: Решением является функция z(y). Задача Коши: z(0)=1; z’(0)=2; Выразим старшую производную z”=y-z-yz’. Делаем замену z’=t, получаем систему z' t t ' y z yt Схема Эйлера yi1 yi h zi1 zi h ti ti1 ti h ( yi zi yi ti ) y0=0, z0=1, t0=2 (из задачи Коши). Из схемы Эйлера для i=0: y1=h; z1=1+2h; t1=2+h(0-1-0*2)=2-h; Интерполяция полиномом Лагранжа 1. Даны узлы интерполяции (-1,2),(2,3),(3,6),(4,7),(5,9). Записать формулу интерполяционного полинома Лагранжа, проходящий через 5 точек. Чему равно значение полинома при х=4? Решение: ( x 2)( x 3)( x 4)( x 5) ( x 1)( x 3)( x 4)( x 5) ( x 1)( x 2)( x 4)( x 5) 3 6 (1 2)( 1 3)( 1 4)( 1 5) (2 1)( 2 3)( 2 4)( 2 5) (3 1)(3 2)(3 4)(3 5) ( x 1)( x 2)( x 3)( x 5) ( x 1)( x 2)( x 3)( x 4) 7 9 (4 1)( 4 2)( 4 3)( 4 5) (5 1)(5 2)(5 3)(5 4) L5 ( x) 2 при x=х3=4: 0 0 0 (4 2)( 4 3)( 4 4)( 4 5) (4 1)( 4 3)( 4 4)( 4 5) (4 1)( 4 2)( 4 4)( 4 5) L5 (4) 2 3 6 (1 2)( 1 3)( 1 4)( 1 5) (2 1)( 2 3)( 2 4)( 2 5) (3 1)(3 2)(3 4)(3 5) (4 1)( 4 2)( 4 3)( 4 5) (4 1)( 4 2)( 4 3)( 4 4) 7 9 7 y3 (4 1)( 4 2)( 4 3)( 4 5) (5 1)(5 2)(5 3)(5 4) 0 2. Даны узлы интерполяции (-2,4),(3,6),(4,7),(6,9). Записать интерполяционную формулу полнома Лагранжа, являющегося параболой. Указать, через какие точки проходит этот полином. Решение: Параболой (полиномом 2го порядка, у=ах2+bx+c) является полином, проходящий через 3 точки, например: L3 ( x) 3 ( x 4)( x 6) ( x 3)( x 6) ( x 3)( x 4) 7 9 (3 4)(3 6) (4 3)( 4 6) (6 3)(6 4) Он проходит через точки (3,6),(4,7),(6,9). Например, для x=x1=3: L3 (3) 6 (3 4)(3 6) (3 3)(3 6) (3 3)(3 4) 7 9 6 y1 (3 4)(3 6) (4 3)( 4 6) (6 3)(6 4) 3. Даны узлы интерполяции (-1,2),(2,3),(3,6). Записать формулы интерполяционных полиномов Лагранжа, проходящих через 2 первые и через 3 точки. Какова степень этих полиномов? Решение: Полином, проходящий через 2 точки, является полиномом 1-й степени (прямой): 8 L2 ( x) 2 ( x 2) ( x 1) 3 (1 2) (2 1) Полином, проходящий через 3 точки, является полиномом 2-й степени (параболой): L3 ( x) 2 ( x 2)( x 3) ( x 1)( x 3) ( x 1)( x 2) 3 6 (1 2)( 1 3) (2 1)( 2 3) (3 1)(3 2) 4. Даны узлы интерполяции (-1,2),(0,1),(2,3),(4,4),(5,7). Записать интерполяционную формулу полиномов Лагранжа, проходящих через 3 и 4 первые точки. Будут ли оба полинома проходить через точку (4,4)? Решение: Полином, проходящий через 3 точки: ( x 0)( x 2) ( x 1)( x 2) ( x 1)( x 0) 1 3 (1 0)( 1 2) (0 1)(0 2) (2 1)( 2 0) L3 ( x) 2 Полином, проходящий через 4 точки: L4 ( x) 2 ( x 0)( x 2)( x 4) ( x 1)( x 2)( x 4) ( x 1)( x 0)( x 4) ( x 1)( x 0)( x 2) при 1 3 4 (1 0)( 1 2)( 1 4) (0 1)(0 2)(0 4) (2 1)( 2 0)( 2 4) (4 1)( 4 0)( 4 2) x=х3=4: L3 (4) 2 (4 0)( 4 2) (4 1)( 4 2) (4 1)( 4 0) 31 1 3 y3 (1 0)( 1 2) (0 1)(0 2) (2 1)( 2 0) 3 Значит, этот полином не проходит через точку (4,4). (4 0)( 4 2)( 4 4) (4 1)( 4 2)( 4 4) (4 1)( 4 0)( 4 4) (4 1)( 4 0)( 4 2) L4 (4) 2 1 3 4 4 (1 0)( 1 2)( 1 4) (0 1)(0 2)(0 4) (2 1)( 2 0)( 2 4) (4 1)( 4 0)( 4 2) Значит, этот полином проходит через точку (4,4). Решение СЛАУ методом Гаусса 1. Записать решение СЛАУ методом Гаусса: 2 x1 3x 2 x3 9 x1 x 2 2 x3 5 4 x 2 x 4 x 12 2 3 1 Решение: Прямой ход метода Гаусса Преобразуем 2 и 3 уравнения так, чтобы коэффициенты при х 1 стали равны 0. Для этого будем использовать 1 уравнение. 1 уравнение разделим на а11, умножим на а21 и вычтем из второго уравнения. Т.е. (2)-(1)* а21/ а11 : x1 x 2 2 x3 5 3 1 9 x 2 x3 2 2 2 __________________ 1 3 1 x 2 x3 2 2 2 1 уравнение разделим на а11, умножим на а31 и вычтем из третьего уравнения. Т.е. (3)-(1)* а31/ а11 : x1 9 4 x1 2 x 2 4 x3 12 4 x1 6 x 2 2 x3 18 __________________ 4 x 2 2 x 3 6 Перепишем систему в преобразованном виде: 2 x1 3x 2 x3 9 1 3 1 x 2 x3 2 2 2 4 x 2 x 6 2 3 Преобразуем 3 уравнение так, чтобы коэффициент при х2 стал равен 0. Для этого будем использовать 2 уравнение. 2 уравнение разделим на а22, умножим на а32 и вычтем из третьего уравнения. Т.е. (3)-(2)* а32/ а22 : 4 x 2 2 x 3 6 4 x 2 12 x3 4 __________________ 10 x3 10 Перепишем систему в преобразованном виде: 2 x1 3x 2 x3 9 1 3 1 x 2 x3 2 2 2 10 x 10 3 Матрица коэффициентов приведена к треугольному виду. Прямой ход метода Гаусса закончен. Обратный ход метода Гаусса. Найдем значения неизвестных: x3 10 / 10 1 1 3 x 2 1 / 1 / 2 2 2 2 x1 (9 3 2 1) / 2 1 2. Записать решение СЛАУ методом Гаусса: 2 x1 3x 2 x3 6 x1 x 2 2 x3 4 x 2x 2x 5 2 3 1 3. Записать решение СЛАУ методом Гаусса: 2 x1 3x 2 x3 3 x1 x 2 2 x3 3 4 x 2 x 4 x 8 2 3 1 4. Записать решение СЛАУ методом Гаусса: 2 x1 2 x 2 x3 5 2 x1 x 2 3x3 7 4 x 3x x 9 2 3 1 10