Линейные программы

advertisement
Линейные программы
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 coscx 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 )  cosc  xi  
cosc  1  0,09i 
xi
1  0,09i
В методе прямоугольников слева искомый интеграл рассчитывается по формуле
n 1
I  h y i
i 0
Окончательно записываем численную схему для вычисления данного
интеграла методом прямоугольников слева:
10
99
1
1


cos
cx
dx

0
,
09
cosc  (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)
yi1  f ( xi1 )  ( xi1  a )  (0.5  0.002(i  1)  a)
n1
h
(
x

a
)
dx

 ( yi  yi1 ) 

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 cosxdx
Решение:
Шаг h=(2с-с)/n=с/n=0,01с (n-число разбиений, например, n=100).
Переменная интегрирования xi  с  0,01с  i .
Значение хi используется для вычисления значения функции:
1
1
yi  y ( xi )  cosxi  
cosc  0.01c  i 
xi
c  0.01c  i
Численная схема для вычисления данного интеграла методом прямоугольников
справа:
6
2c
100
1
1


cos
x
dx

0
,
01
с
cosc  0.01c  i 

c x
i 1 c  0.01c  i
Обыкновенные дифференциальные уравнения
1. Написать, что является решением данного дифференциального уравнения. Выбрать
начальные условия для задачи Коши. Записать схему Эйлера для данного ОДУ х+yх’=y.
Найти значения искомой функции в точках с номерами 0 и 1.
Решение :
Решением является функция x(y). Задача Коши, x(2)=1.
Для записи схемы Эйлера, выразим производную
yx
x 
y
Схема Эйлера
yi1  yi  h
xi1  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
Схема Эйлера
yi1  yi  h
zi1  zi  h  ti
ti1  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
Download