| Майер , алгоритмы, программы [Электронный ресурс]. -- Глазов: ГГПИ, 2010. (Web-site http://maier-rv. "Найти задачу -- не меньшая радость, чем отыскать ее решение". Томас де Куинси |
О ЧЕМ ЭТА КНИГА | |
Вот уже около 10 лет я занимаюсь преподаванием ряда информационных дисциплин ("Информатика" (1 курс), "Компьютерное моделирование" (3 курс), "Теоретические основы информатики" (5 курс)) на физическом факультете Глазовского государственного педагогического института. Вместе с этим руковожу выполнением курсовых работ по физике и информатике.
Развитие компьютерной техники привело к повсеместному распространению информационно--коммуникационных технологий, что не могло не сказаться на формах и методах обучения. Доступность ПЭВМ позволяет решать различные задачи, связанные с написанием программ, созданием компьютерных моделей, проведением вычислительного эксперимента. На практических занятиях и лабораторных работах, проводимых в компьютерных классах, студенты, осваивая основы программирования, создают нескложные компьютерные программы, что способствует развитию их творческих способностей, дает возможность проявить себя. Преподаватель формулируя задачу может предложить студентам программу, являющуюся решением аналогичной задачи, чтобы студент на ее основе создал свою, а не писал программу "с нуля". При выполнении курсовых и дипломных проектов также возможно создание и исследование компьютерных моделей изучаемых явлений, решение уравнений и их систем, математическая обработка результатов измерений.
В книге "Задачи, алгоритмы, программы" проанализированы некоторые наиболее интересные с точки зрения автора задачи по программированию, компьютерному моделированию и информатике. Некоторые компьютерные модели физических или биологических явлений могут быть использованы для проведения учебного вычислительного эксперимента, под которым автор предлагает понимать упрощенные варианты научного вычислительного эксперимента, адаптированные к условиям обучения. В процессе выполнения учебного вычислительного эксперимента учащиеся изменяют параметры исследуемых систем, характер и силу внешних воздействий, начальные условия и "наблюдают", как при этом меняется отклик системы, характер исследуемых процессов. Все это позволяет изучить динамику изменения различных величин, характеризующих данное явление, сформировать его наглядный образ. Учебный вычислительный эксперимент следует рассматривать как дополнение к учебной теории и учебному натурному эксперименту.
В книге рассмотрены компьютерные модели некоторых автоматов, в частности, модели машины Поста и машины Тьюринга, а также различных нейросетей и персептронов. Предложенные задачи позволяют студентам и учащимся понять соответствующие вопросы теоретической информатики.
Почти все задачи решены на языке Borland Pascal 7.0, большая часть решений имеет пояснения и рисунки. Многие из представленных программ использовались на занятиях со студентами. Автор выражает благодарность преподавателям физического факультета, в той или иной степени способствовавшим выполнению этой работы.
1. ВЫЧИСЛЕНИЕ ПРОИЗВОДНЫХ И ИНТЕГРАЛОВ
| Задача 1.1. Исследуемый физический процесс описывается уравнением x(t)=3t3-3t2+4. Определите первую и вторую производные функции x=x(t) момент времени 2 с. Найдите интеграл данной функции в интервале от 1 до 3 с методом трапеций. Решите задачу аналитически и сравните результаты. |
Алгоритм решения этой задачи АЛ - 1.1 представлен ниже. При уменьшении шага h получающиеся значения производной и интеграла стремятся к некоторым предельным значениям, которые совпадают с аналитически найденными значениями производной y' и интеграла I функции (табл. 1). Алгоритм АЛ - 1.1 ЗАДАТЬ ФУНКЦИЮ Funct:=t*t*t-t*t+3; НАЧАЛО ПРОГРАММЫ t:=3; h:=0.001; y1:=Funct(t-h); y2:=Funct(t); y3:=Funct(t+h); ПЕЧАТЬ "Первая производная ", (y2-y1)/h ПЕЧАТЬ "Вторая производная ", (y1-2*y2+y3)/(h*h) a:=1; b:=3; t:=a; S:=0; ПОВТОРЯТЬ{S:=S+0.5*(Funct(t)+Funct(t+h))*h; t:=t+h;} ПОКА НЕ t>b; ПЕЧАТЬ "Интеграл ", S КОНЕЦ ПРОГРАММЫ Решением задачи является программа ПР - 1.1. При уменьшении шага точность вычислений обычно возрастает. Если же шаг очень мал, то для нахождения интеграла приходится суммировать слишком большое число слагаемых, что приводит к снижению точности. Точные значения первых двух производных и интеграла приведены в нижней строчке табл. 1.1. |
|
| uses crt; var x, y1,y2,y3,a, b,h, S : real; { ПР - 1.1 } Function Funct(x:real):real; begin Funct:=3*x*x*x-3*x*x+4; end; BEGIN clrscr; x:=2; h:=0.001; y1:=Funct(x-h); y2:=Funct(x); y3:=Funct(x+h); Writeln('Первая производная ', (y2-y1)/h:3:3); Writeln('Вторая производная ', (y1-2*y2+y3)/(h*h):3:3); a:=1; b:=3; x:=a; S:=0; Repeat S:=S+0.5*(Funct(x)+Funct(x+h))*h; x:=x+h; until x>b; Writeln('Интеграл ',S:3:3); Repeat until KeyPressed; END. |
Таблица 1. Результаты вычислений.
Шаг Δx=h | x' | x'' | I |
0,2 | 21,120 | 30,000 | 42,200 |
0,1 | 22,530 | 30,000 | 48,177 |
0,01 | 23,850 | 30,000 | 42,584 |
0,001 | 23,985 | 30,000 | 42,000 |
0,0001 | 23,998 | 30,006 | 42,000 |
0,00001 | 24,000 | 30,268 | 42,001 |
Точн. знач. | 24 | 30 | 42 |
| Задача 1.2. Точка движется по закону: x=3cos(t), y=2cos(3,7t+2). Вычислите координаты x, y, проекции и модули скорости vx, vy, v и ускорения ax, ay, a, нормальное aн и тангенциальное aтускорения в моменты времени t=iΔt, i=1, 2, ... |
| dt = .2: FOR t = 0 TO 10 STEP dt { ПР - 1.2 } x0 = x: y0 = y: vx0 = vx: vy0 = vy 'QBASIC x = 3 * COS(t): y = 2 * COS(3.7 * t + 2) vx = (x - x0) / dt: vy = (y - y0) / dt ax = (vx - vx0) / dt: ay = (vy - vy0) / dt vv = SQR(vx * vx + vy * vy): aa = SQR(ax * ax + ay * ay) cosa = (ax * vx + ay * vy) / (aa * vv): at = aa * cosa: IF at < aa THEN an = SQR(aa * aa - (at * at)) PRINT t; x; y; vv; aa; at; an NEXT |
| Задача 1.3. Имеется неоднородная пластина, ограниченная функцией y=x1/2, осью абсцисс, прямой x=2, плотность которой равна ρ(x, y)=2+0,4y+0,2x2. Найдите момент инерции пластины относительно оси Ox. |

Рис. 1.3. К нахождению момента инерции пластины.
Вычисление момента инерции тела сводится к интегрированию по объему и нахождению суммы элементарных моментов инерции. Разобъем тело (рис. 1.3) на элементарные объемы dV=h·dx·dy массами dm=ρdV, имеющими моменты инерции относительно оси Ox dI=y2dm. Для нахождения суммы всех элементарных моментов инерции dI организуют два вложенных цикла, в которых перебираются и суммируются все dI (программа ПР - 1.3). |
|
| dx = .05: dy = .05: h = .02 { ПР - 1.3 } FOR x = 0 TO 2 STEP dy 'QBASIC WHILE y < SQR(x) y = y + dy: rho = 2 + .4 * y + .2 * x * x dV = dx * dy * h: I = I + rho * dV * y * y WEND: NEXT: PRINT I: END |
| Задача 1.4. Решите дифференциальное уравнение первого порядка y'x-f(x, y)=0 (например, y'x-sin(x)=0) методом Эйлера. Получите семество решений, соответствующих различным начальным условиям y0=y(0). |
Запишем уравнение в конечных разностях: dy/dx=f(x, y), (yi+1-yi)/h=f(x, y), где h=Δ x --- шаг сетки по x. Отсюда следует: yi+1=yi+f(x, y)h. Чтобы численно решить уравнение, необходимо переменной y присвоить значение y_0=y(0), а затем в цикле рассчитать последующие значения yi при i=1, 2, ... в соответствии с приведенной выше формулой. В программе ПР - 1 (алгоритм АЛ - 1.4) решается уравнение y'x-sin(x)=0 при трех различных начальных условиях y(0)=0, 0.5, 1. Получается семейство из трех функций отличающихся на постоянную величину. ДЛЯ j:=0 ДО 3 ДЕЛАТЬ АЛ - 1.4 dx:=0.01: y:=.5*j ДЛЯ i:=1 ДО 1000 ДЕЛАТЬ - FNN:=sin(x); x:=i*dx; y:=y+FNN*dx; ПОСТАВИТЬ ТОЧКУ С КООРДИНАТАМИ (x, y) - Используемая программа ПР - 1.4 представлена ниже. |
|
| SCREEN 12 { ПР - 1.4 } LINE (0, 400)-(640, 400) 'Qbasic LINE (20, 0)-(20, 480) 'DEF FNN (x, y) = - y + 3 'DEF FNN (x, y) = - y - .5 * x + 4 DEF FNN (x, y) = SIN(x) FOR j = 0 TO 3 dx = .01: y = .5 * j FOR i = 1 TO 1000 x = i * dx: y = y + FNN(x, y) * dx CIRCLE (20 + 50 * x, * y), 2 NEXT: NEXT |

Рис. 1.4. Решение дифференциального уравнения.
| Задача 1.5. Тело ограничено поверхностями z1=f(x, y), z2=f(x, y). Зависимость плотности от координат ρ=ρ(x, y,z) известно. Методом Монте-Карло определите объем, массу и положение центра масс тела. |

Рис. 1.5. К вычислению массы, объема и координат центра масс тела.
Пусть тело ограничено поверхностями z1=1-1,3x2-y2, z2=x2-1. Плотность тела задается соотношением: если x>-0,1, то ρ=3y+5z+10, иначе ρ=20. Опишем вокруг тела куб, стороны которого перпендикулярны осям координат и пересекают их в точках 1 и -1. Случайным образом наполним куб большим количеством точек (106) с координатами x, y, z. Подсчитаем количество точек nt, попавших внутрь тела, тогда объем тела во столько раз меньше объема куба (который равен 4 м3), во сколько раз число nt меньше общего числа точек N. Для того, чтобы определить массу и координаты центра масс, учтем, что на каждую точку приходится элементарный объем dV=4/N. Поэтому будем умножать dV на плотность ρ в данной точке, получающиеся элементарные массы складывать. Так мы найдем массу тела msum. Для нахождения координат центра масс xsum:=xsum+rho*dV*x; ysum:=ysum+rho*dV*y; zsum:=zsum+rho*dV*z; msum:=msum+rho*dV; end; xc:=xsum/msum; yc:=ysum/msum; zc:=zsum/msum; Решением задачи является программа ПР - 1.5. |
|
| {$N+} uses dos, crt; { ПР - 1.5 } var x, y,z, z1,z2,xc, yc, zc, rho, dV, V, msum, xsum, ysum, zsum: single; nt, N: longint; BEGIN clrscr; Randomize; nt:=0; N:=0; dV:=8/1000000; Repeat inc(N); x:=random(200)/100-1; y:=random(200)/100-1; z:=random(200)/100-1; If x>-0.3 then rho:=10+5*z+3*y else rho:=20; z1:=1-1.3*x*x-y*y; z2:=x*x-1; If (zz2) then begin inc(nt); xsum:=xsum+rho*dV*x; ysum:=ysum+rho*dV*y; zsum:=zsum+rho*dV*z; msum:=msum+rho*dV; end; until N>1000000; V:=nt*dV; xc:=xsum/msum; yc:=ysum/msum; zc:=zsum/msum; writeln(xc:3:5,' ',yc:3:5,' ',zc:3:5); writeln(msum:3:5,' | ',V:3:5); ReadKey; END. |
| Задача 1.6. Решите дифференциальное уравнение второго порядка y''x-f(x, y,y'_x)=0 (например, y''x+y'x+1,2y-5sin(x)=0) методом Эйлера. Начальные условия yx(0), y'x(0). |
Дифференциальное уравнение второго порядка представимо в виде системы двух диффуравнений первого порядка:
В программе ПР - 2 создан цикл по i в котором пересчитываются значения yi, y'i и решается уравнение y''x+y'x+1,2y-5sin(x)=0 (алгоритм АЛ - 1.6). y = 20: dx = 0.01 АЛ - 1.6 ДЛЯ i = 1 ДО 5000 ДЕЛАТЬ x = x + dx pr2y = 5 * SIN(x* pr1y - 1.2 * y pr1y = pr1y + pr2y * dx; y = y + pr1y * dx ПОСТАВИТЬ ТОЧКУ С КООРДИНАТАМИ (x, y) |
|
| SCREEN 12 { ПР - 1.6 } LINE (0, 240)-(640, 240) 'Qbasic LINE (20, 0)-(20, 480) y = 20: dx = .01 FOR i = 1 TO 5000 x = x + dx pr2y = 5 * SIN(x* pr1y - 1.2 * y pr1y = pr1y + pr2y * dx y = y + pr1y * dx CIRCLE (20 + 12 * x, * y), 2 NEXT END |

Рис. 1.6. Решение дифференциального уравнения.
| Задача 1.7. Решите дифференциальное уравнение первого порядка вида y'x-f(x, y)=0 методом Рунге--Кутта четвертого порядка. |
Сущность метода Рунге--Кутта четвертого порядка выражается следующими формулами:
Организуем цикл по i, в котором вычисляются значения функции y(x) по этой схеме. Например, для решения уравнения y'x-2sin(x)+0.5/y=0 используется алгоритм АЛ--11. АЛ - 1.7 ЗАДАТЬ ФУНКЦИЮ FNN (x, y) = 2 * SIN(x) + .5 / y y = 1: dx = .01 ДЛЯ i = 1 ДО 1500 ДЕЛАТЬ x = i * dx; k1 = FNN(x, y); k2 = FNN(x + dx / 2, y + dx * k1 / 2) k3 = FNN(x + dx / 2, y + dx * k1 / 2) k4 = FNN(x + dx, y + k3) y = y + dx / 6 * (k1 + 2 * k2 + 2 * k3 + k4) ПОСТАВИТЬ ТОЧКУ С КООРДИНАТАМИ (x, y) Этот алгоритм реализован в программе ПР - 1.7. |
|
| SCREEN 12 { ПР - 1.7 } LINE (0, 400)-(640, 400) 'Qbasic LINE (20, 0)-(20, 480) DEF FNN (x, y) = 2 * SIN(x) + .5 / y 'DEF FNN (x, y) = - y * y + .2 * x y = 1: dx = .01 FOR i = 1 TO 1500 x = i * dx: k1 = FNN(x, y) k2 = FNN(x + dx / 2, y + dx * k1 / 2) k3 = FNN(x + dx / 2, y + dx * k1 / 2) k4 = FNN(x + dx, y + k3) y = y + dx / 6 * (k1 + 2 * k2 + 2 * k3 + k4) CIRCLE (20 + 40 * x, * y), 2 NEXT: END |

Рис. 1.7. Решение диффуравнения методом Рунге-Кутта.
| Задача 1.8. Решите дифференциальное уравнение второго порядка y''x-f(x, y,y'x)=0 методом Рунге--Кутта четвертого порядка. Начальные условия yx(0), y'x(0). |
Записывают данное уравнение в виде системы двух диффуравнений первого порядка и используют рассмотренную выше схему Рунге--Кутта. Используется алгоритм АЛ - 1.8. ЗАДАТЬ ФУНКЦИЮ FNN1 (x, y, pr1) = SIN(x) - .25 * pr* SIN(y) y = 2: v = 0: dx = .01 ДЛЯ i = 1 ДО 8000 ДЕЛАТЬ x = i * dx: k1 = FNN1(x, y, pr1) k2 = FNN1(x + dx / 2, y, pr1 + dx * k1 / 2) k3 = FNN1(x + dx / 2, y, pr1 + dx * k2 / 2) k4 = FNN1(x + dx, y, pr1 + k3) pr1 = pr1 + dx / 6 * (k1 + 2 * k2 + 2 * k3 + k4) y = y + pr1 * dx ПОСТАВИТЬ ТОЧКУ С КООРДИНАТАМИ (x, y) Программа Пр - 1.8 позволяет решить уравнение y''x+0,25y'x + 0,9sin(y)=sin(x). |
|
| SCREEN 12 { ПР - 1.8 } LINE (0, 240)-(640, 240) 'QBasic LINE (20, 0)-(20, 480) DEF FNN1 (x, y, pr1) = SIN(x* pr* SIN(y) y = 2: v = 0: dx = .01 FOR i = 1 TO 8000 x = i * dx: k1 = FNN1(x, y, pr1) k2 = FNN1(x + dx / 2, y, pr1 + dx * k1 / 2) k3 = FNN1(x + dx / 2, y, pr1 + dx * k2 / 2) k4 = FNN1(x + dx, y, pr1 + k3) pr1 = pr1 + dx / 6 * (k1 + 2 * k2 + 2 * k3 + k4) y = y + pr1 * dx CIRCLE (20 + 8 * x, * y), 1 NEXT: END |

Рис. 1.8. Решение диффуравнения методом Рунге-Кутта.
| Задача 1.9. Определите силу гравитационного притяжения, действующую со стороны шарообразного тела радиуса R на материальную точку массой m, находящуюся на расстоянии z' от центра. Плотность шара ρ(r)=100/r, где r -- расстояние от его центра. |

Рис. 1.9. К расчету взаимодействия шара и точки.
Распределение плотности шарообразного тела, а значит и его гравитационное поле обладают центральной симметрией, поэтому задачу следует решать в сферической системе координат. Результирующая сила может быть найдена по формулам;
где i= 1, 2, ... , n, n -- число элементарных масс Δmi, li=z'-r cosθi. Программа ПР - 1.9 для расчета искомой силы F содержит вложенные друг в друга цикл по r, по φ и по θ, позволяющие перебрать все элементарные массы тела, рассчитать и просуммировать проекции сил ΔF на ось Oz. |
|
| CLS: dr = .1: dtheta = .1: dfi = .2 { ПР - 1.9 } m = 1: rho1 = 100: z1 = 20 'QBASIC FOR r = 0 TO 3 STEP dr FOR theta = 0 TO 3.14 STEP dtheta FOR fi = 0 TO 6.28 STEP dfi IF r < 1 THEN rho = 100 ELSE rho = 100 / r z = r * COS(theta): y = r * SIN(theta) * SIN(fi) x = r * SIN(theta) * COS(fi) dm = rho * r * r * dtheta * dfi * dr rast = SQR(x * x + y * y + (z1 - z) * (z1 - z)) l = z1 - r * COS(theta) F = F + m * dm * l / (rast * rast * rast) NEXT: NEXT: PRINT F, r NEXT |
| Задача 1.10. Определите силу гравитационного притяжения, действующую между неоднородным диском радиусом R, толщиной h и однородным стержнем массой m1, концы которого имеют координаты a и b>R. Зависимость плотности диска от координаты: ρ(r)=100/r, где r -- расстояние от его центра O. |

Рис. 1.10. К расчету взаимодействия диска и стержня.
Распределение массы обладает осевой симметрией, будем использовать полярную и декартовую системы координат (рис. 1.10). Разобъем диск на n элементарных объемов ΔV=rh ΔφΔr с координатами xi=r cos(φ), yi=r sin(φ) и массами Δm=ρ(r)ΔV=ρ(r) rhΔφΔr. Стержень рассмотрим как k элементарных масс Δm1=m1/k с координатами x1j=a+jΔx, где j=1, 2, ... , k. Расстояние между Δmi и Δm1j равно dij=[(xi - x1j)2 + yi2]0,5. Проекция силы ΔFij на ось Oz равна:
В используемой программе ПРперебираются все элементарные массы Δmi и Δm1i обоих тел, определяются и суммируются проекции сил притяжения на ось Oz. |
|
| CLS: dr = .1: dfi = .05: rho1 = 100 { ПР - 1.10 } dx1 = .1: dm1 = .2 * dx1: h = .1 FOR x1 = 5 TO 6 STEP dx1 'QBASIC FOR r = 0 TO 3 STEP dr FOR fi = 0 TO 6.28 STEP dfi IF r < 1 THEN rho = 100 ELSE rho = 100 / r x = r * COS(fi): y = r * SIN(fi): dm = rho * h * r * dr * dfi rast = SQR((x - x1) * (x - x1) + y * y): l = x1 - r * COS(fi) F = F + dm1 * dm * l / (rast * rast * rast) NEXT: NEXT: PRINT F, r, x1: NEXT |
2. МЕХАНИКА ТОЧКИ | |
| Задача 2.1. Промоделируйте скольжение материальной точки по циклоидальной горке в поле тяжести. Убедитесь в том, что циклоида явлется таутохроной, то есть время скольжения к основанию горки не зависит от точки запуска. |

Рис. 2.1. К доказательству таутохронных свойств циклоиды.
Исследуем скольжение точки по циклоидальной горке и вычислим время движения при различных начальных положениях точки (рис. 2.1). Запишем уравнения циклоиды и выразим параметр α:
Чтобы определить угол β, найдем координаты двух близко расположенных точек, соответствующих значениям параметра α1, α2 и выразим угол β между касательной к траектории и осью Oy равен:
Для расчета тангенциального ускорения точки, скорости и координат используются формулы:
Таким образом, программа ПР - 2.1, моделирующая скольжение тела по циклоидальной горке, должна содержать цикл по времени, в котором будут пересчитываться координаты и скорости частицы, осуществляться построения ее изображения на экране, вычисляться время движения, которое также выводится на экран. Изменяя начальное значение α, можно запускать точку с различных положений. При отсутствии трения (rs=0) время скольжения не зависит от точки запуска (в пределах погрешности вычислений). |
|
| uses dos, crt, graph; {ПР - 2.1} const r=100; g=10; rs=0.00; dx=0.001; dt=0.0005; da=0.001; pi=3.1415926; var c, s,a, b,x1,x2,y1,y2,at, v,vx, vy, x,y, t: real; Gd, Gm, n : integer; tt : string; BEGIN Gd:=Detect; InitGraph(Gd, Gm, 'c:\bp\bgi'); a:=1.3; x:=r*(a-sin(a)); y:=r*(1-cos(a)); Repeat c:=1-y/r; s:=sqrt(1-c*c); If y<=r then a:=arctan(s/c) else a:=pi-arctan(abs(s/c)); x1:=r*(a-sin(a)); y1:=r*(1-cos(a)); a:=a+da; x2:=r*(a-sin(a)); y2:=r*(1-cos(a)); b:=pi/2-arctan((y2-y1)/(x2-x1)); at:=g*cos(b)-rs*v; v:=v+at*dt; x:=x+v*sin(b)*dt; y:=y+v*cos(b)*dt; If n mod 100=0 then begin Circle(120+round(x),240+round(y),1); end; Circle(120,240,2); t:=t+dt; inc(n); until (KeyPressed)or(a>pi); Str(round(t*1000),tt); OutTextXY(10,10,tt); Readkey; END. |
| Задача 2.2. С помощью вычислительного эксперимента убедитесь в том, что циклоида является брахистохроной -- кривой наибыстрейшего спуска. |
Рассмотрим скольжение частицы массой m по циклоидальной горке в однородном поле тяжести. Исходя из параметра α, можно вычислить координаты частицы x1 и y1. Если параметру α дать малое приращение Δα и рассчитать соответствующие координаты x2, y2, то элементарное перемещение ΔS можно найти по формуле:
Скорость v вычисляется из закона сохранения механической энергии: v=(2gy)1/2. Это позволяет определить промежуток времени Δt=ΔS/v, в течение которого частица, двигаясь со скоростью v, прошла расстояние ΔS. Суммируя элементарные промежутки времени Δt можно получить общее время скольжения частицы по кривой из точки O(0,0) до точки A(πR, 2R). Допустим, необходимо сравнить время скольжения частицы по циклоиде с аналогичным временем движения по другой кривой, достаточно близкой к циклоиде и проходящей через точки O(0,0) и A(πR, 2R). Эти кривые могут быть заданы уравнениями:
где k -- некоторый параметр. Видно, что независимо от значения k при кривые соединяют точки O(0,0) и A(πR, 2R). При k=1 получается циклоидальная траектория. В программе можно создать цикл, в котором с некоторым шагом будет изменяться параметр k и вычисляться время движения материальной точки по соответствующей кривой. При k=1 время должно быть минимально. Текст используемой программы ПР - 2 приводится ниже. При ее запуске на экране рисуются траектории, соответствующие различным значениям (рис. 2.2), и рассчитывается время движения частицы и выводится на экран. Из результатов вычислительного эксперимента следует, что минимальным является время движения по циклоиде (k=1). |
|
| uses dos, crt, graph; {ПР - 2} const r=150; dx=0.001; dt=0.001; da=0.0005; pi=3.1415926; var k, a,x1,x2,y1,y2,ds, at, v,vx, vy, t : real; Gd, Gm, n,i : integer; tt, kk : string; BEGIN Gd:=Detect; InitGraph(Gd, Gm,'c:\bp\bgi'); For i:=1 to 8 do begin k:=0.4+0.2*i; a:=0; t:=0; Repeat a:=a+da; x1:=r/k*(k*a-sin(a)); y1:=r*(1-cos(a)); a:=a+da; x2:=r/k*(k*a-sin(a)); y2:=r*(1-cos(a)); ds:=sqrt(sqr(x1-x2)+sqr(y1-y2)); v:=sqrt(20*y1); t:=t+ds/v; Putpixel(110+round(x1),150+round(y1),15); until (KeyPressed)or(a>pi); Str(round(t*1000),tt); OutTextXY(550,10*i, tt); Str(round(k*10),kk); OutTextXY(500,10*i, kk); end; Readkey; END. |

|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |














