Чтение RSS
Рефераты:
 
Рефераты бесплатно
 

 

 

 

 

 

     
 
Компьютерное моделирование движения тел

Компьютерное моделирование движения тел

Кравченко Валерия

9 класс

2005

Введение

В настоящее время, в виду большого использования компьютеров на производстве и в вычислительных процессах, ставится задача привития навыков использования компьютеров глубже, чем это достаточно для обычного  пользователя, ограниченного знанием программ Windows и Office.

Существующее обилие языков программирования в значительной степени потеснили позиции языка программирования БЕЙСИК (BASIC). Тем не менее, данный язык и сегодня позволяет решать задачи профессионального уровня. В то же время простота понимания и доступность его использования позволяет применить его как на компьютерах старого класса, так  и современных мощных машинах (P-III, P-IV).

Таким образом, данная работа ставит целью показать возможности использования языка БЕЙСИК для решения математических (профессиональных) задач в условиях обучения учащихся средних школ и профессиональных училищ, и может быть включена в качестве учебного пособия по общетехнической подготовки учащихся по основам информатики и вычислительной техники.  

Одним из видов подготовки специалистов различных профессий являются практические знания. Помимо приобретения  практических навыков они должны развивать обобщенное мышление, так как без этого невозможно научить будущих специалистов самых разнообразным приемам решения технических задач.

Подготовка задач к решению на компьютере во многом способствует развитию абстрактного мышления, связанного с формализацией задач, разработке алгоритмов и программ. В работе использован пример решения типичной задачи с максимальным использованием наглядности и простоты управления, с использованием стандартной программы Qbasic.  

Процесс подготовки и решения задач на компьютере является пока достаточно сложным и  трудоемким требующий выполнения целого ряда этапов:

постановка задачи;

математическая формулировка задачи;

выбор численного метода вычисления;

разработка алгоритма решения задачи;

 написание программы;

ввод в программы и исходных данных;

отладка программы;

решение задачи на компьютере.

 Данная последовательность характерна для решения каждой задачи. Однако в процессе подготовки каждый этап может иметь более или менее выраженный характер. Выполнение этапов в процессе подготовке задачи носит характер последовательного приближения, так как уточнение задачи на последующем этапе приводит к необходимости возврата к предыдущему и повторному выполнению последующих этапов.

Учитывая то, что основная масса современных пользователей имеют возраст 15-30 лет и совершенно недавно обзавелись  домашним компьютером, не обладают большой усидчивостью, и зачастую не задумываются над тем, что из чего берется, то более глубокое рассмотрение этапов подготовки решения задач является нецелесообразным. Поэтому непосредственно перейдем к рассмотрению вопросов работы на языке программирования БЕЙСИК. Для большей наглядности и лучшего понимания в качестве примера составим программу для решения задачи по механике  из учебника физики 10 класса [4].  При этом составление программы разобьем на несколько этапов постоянно наращивая и раскрывая возможности  языка БЕЙСИК. 

1. Этап первый. Знакомство.

Запуск программы осуществляется файлом qbasic.exe. Если при первом запуске выдается сообщение об ошибке в pif-файле, то необходимо в нем (qbasic. pif) прописать путь установки программы Qbasic, а вообще проще удалить сам файл qbasic.pif.  Не забудьте перед запуском программы в Свойствах файла  qbasic.exe указать совместимость с установленной системой и установить Полноэкранный режим. 

В языке БЕЙСИК используются следующие символы:

1) Буква латинского алфавита от A до Z.

2) Цифра от 0 до 9.

3) Специальные символы: + - * / ¬      . , : ; ( ) = > < ‘

4) Ключевые слова:

LET- пусть, READ- ввод, DATA- данные, DIM- размерность, PRINT- вывод, STOP- останов, END- конец, TO- к , STEP- шаг, GOTO- перейти, NEXT- конец цикла, INPUT- вод с экрана, DEFFN- определение функции, REM- комментарий, FOR- для, IF- если, GOSUB- переход к под программе, RETURN- возврат. 

5) знаки операций:

а) арифметические: +(сложение), -(вычитание), *(умножение), /(деление), ¬ или ^ (возведение в степень);

б) отношения: >(больше), =(больше равно), /TD TD width=50% style='width:50.72%;border:solid windowtext 1.0pt;border-left:none' PЗапись на Бейсике          /P /TD /TR TR TD width=49% style='width:49.28%;border:solid windowtext 1.0pt;border-top:none' P|x|/P Psin x/P Pcos x/P Ptg x/P Parctg x/P Pex/P Pln x/P Plog2 x/P Plg x/P Pцелая часть  хзнак х (+1 при х > 0, 0 при х=0,  -1 при x < 0) квадратный корень из х количество символов а$ выбирает из a$ n символов,   начиная с  первоговыбирает из a$ n символов, начиная с  m-говыбирает n символов а$,                                начиная с последнегопреобразует число к                                символьному видуопределяет числовое значение а$определяет код первого символа а$указывает номер позиции для                                  вывода следующего элемента в                                  списке вывода оператора PRINT

вывод n пробелов, используется                  в списке вывода оператора PRINT

выдает случайное число из инте                                  рвала (0,1)

ABS (x)

SIN (x)

COS (X)

TAN (x)

ATN (x)

EXP (x)

LOG (x)

LOG2(x)

LOG10(x)

INT (x)

SGN (x)

SQR  (x)

LEN (а$)

LEFT$(a$,n)

MID$  (a$,m,n)

RIGHT$ (a$,n)

STR$ (x)

VAL (a$)

ASC  (a$)

TAB (n)

SPC (n)

RND [(x)]

Откроем  Qbasic  и запишем для пробы несколько строк:

a=2

b=3

c=5

k=(a+b)*c

           PRINT   k

После ввода RunStart, получили результат 25. Поупражнявшись с различными величинами переменных и арифметическими действиями выясняем, что удобно вычислять значение функции  меняя значения переменных.

Для удобства рассмотрения возьмем обычную задачу из учебника физики, где нужно определить дальность полета и время полета тела брошенного с какой-то начальной скоростью V0  под углом к горизонту α, при этом усложним задачу: получим значение высоты и горизонтальной дальности тела через равные промежутки времени ∆t =1 сек, сопротивлением воздуха пренебрегаем.

Рассмотрим график полета тела представленный на рис. 1.

Как видно из графика скорость тела в любой точке траектории полета может быть определенна по формуле V=, в нашем случае вектор начальной скорости V0 определяется формулой V0 =. При этом текущее значение скорости Vт0 в соответствии с законом всемирного тяготения определяется формулой  V0т =  .

Исходя из этого проекция горизонтальной дальности до тела определяется формулой:

S= (V0х+ V1х+ V2х+…+ Vnx). ∆t

Так как Vx это прямолинейное равномерное движение, то  V0x= V1x= V2x=…= Vnx , тогда S= V0x.n∆t = V0x.t, где t общее время полета тела. Таким образом проекция пути на ось Х будет иметь вид:

S=V0cos α . t= V0 n∆t cos α   (1.1)

Рис.1

Высоту полета тела определяем в соответствии с прямолинейным равноускоренным движением по формуле [ 4 ]:

h= V0y.t+= V0sin α.t+= V0sin α.n∆t +   (1.2)

Для построения такого графика не обходимо получить значение точек в плоскости X Y, которые будут отображать траекторию полета тела в каждый момент времени t. 

Для составления программы используем формулы 1.1 и 1.2.

Войдем в Qbasic и наберем программу следующего вида:

    REM полет тела

    PRINT "t", "h", "s"

    v = 50

    g = 9.8

    a = 30

    f = a * 3.14 / 180

         100 q = 1

    t = t + q

    s = v * t * COS(f)

    h = v * t * SIN(f) - (g * t ^ 2) / 2

    PRINT t, h, s

  IF h < 0 THEN 200

  GOTO 100

       200 END

Где V-начальная скорость (м/с), g-ускорение свободного падения (м/с2 ), a-угол, f-формула пересчета угла в радианы, q-единица времени  ∆t, t-текущее время, s- проекция горизонтальной дальности, h- высота.  Каждой строчке в программе может быть присвоен номер или имя. Причем номера идут по возрастающей, при этом нет необходимости все строчки нумеровать. В данном случае между номером 100 и 200 заложено тело цикла в семь строк. Запуск программы осуществляется RUNSTART.

Программа выдаст решение задачи из трех столбиков значений: t, h, s (табл.2).

                                                                                        Табл.2

t

H

s

1

20.08851

43.3079

2

30.37701

86.61581

3

30.86552

129.9237

4

21.55403

173.2316

5

2.442531

216.5395

6

-26.46896

259.8474

Из анализа полученных данных делаем вывод, что максимальная дальность падения тела лежит в пределах  216-259 м, а максимальная высота полета превысила 30 м. Более точные значения можно получить уменьшив дискретную составляющую времени ∆t. Если в программе переменной q присвоить 0.5; 0.25; 0.1 и т.д., полученные значения будут более точные. Но полученный объем данных становится не наглядным. Для решения данной задачи, значительно удобней, если решение будет представлено графически.

2. Этап второй. Графика.

Сохраним отработанную программу (FILESAVE AS*.bas).

Для построения графика нам потребуется соединить на плоскости уже имеющиеся шесть точек.

Откроем новую программу   (FILENEW) и наберем следующий блок:

REM полет тела

REM построение координат

        SCREEN 9:

 x0 = 50

 y0 = 300

 x1 = 600

 y1 = 100

REM координата Y

 LINE (x0, y0)-(x0, y1), 12

 LOCATE 18, 4: PRINT "10"

 LOCATE 14, 4: PRINT "20"

 LOCATE 10, 4: PRINT "30"

  LINE (48, 245)-(52, 245), 11

  LINE (48, 190)-(52, 190), 11

  LINE (48, 135)-(52, 135), 11

REM координата X

 LINE (x0, y0)-(x1, y0), 12

 LOCATE 23, 19: PRINT "50"

 LOCATE 23, 31: PRINT "100"

 LOCATE 23, 44: PRINT "150"

 LOCATE 23, 56: PRINT "200"

 LOCATE 23, 69: PRINT "250"

  LINE (150, 302)-(150, 298), 11

  LINE (250, 302)-(250, 298), 11

  LINE (350, 302)-(350, 298), 11

  LINE (450, 302)-(450, 298), 11

  LINE (550, 302)-(550, 298), 11

END

Ключевое слово (оператор)  SCREEN 9 – обеспечивает перевод в графический режим работы программы. Для построения координат надо учитывать, что точка с координатами X=0, Y=0 лежит в верхнем левом углу экрана монитора. По-этому координаты X0, Y0 определяют начало координат, а X1, Y1- конец координат. Построение линии осуществляется оператором LINE- с указанием координат начала и конца линии и ее цвета  (от 0 до 15). Строчка c ключевым словом LOCATE- означает расположить надпись в точке с указанными координатами. После запуска программы на экране появится сетка координат.

Объединим ( EDITCOPY, EDITPASTE)  имеющийся блок с сохраненной программой, не значительно ее видоизменив.

   REM полет тела

  REM построение координат

 SCREEN 9:

 x0 = 50

 y0 = 300

 x1 = 600

 y1 = 100

 x2 = 50

 y2 = 300

REM координата Y

 LINE (x0, y0)-(x0, y1), 12

 LOCATE 18, 4: PRINT "10"

 LOCATE 14, 4: PRINT "20"

 LOCATE 10, 4: PRINT "30"

  LINE (48, 245)-(52, 245), 11

  LINE (48, 190)-(52, 190), 11

  LINE (48, 135)-(52, 135), 11

REM координата X

 LINE (x0, y0)-(x1, y0), 12

 LOCATE 23, 19: PRINT "50"

 LOCATE 23, 31: PRINT "100"

 LOCATE 23, 44: PRINT "150"

 LOCATE 23, 56: PRINT "200"

 LOCATE 23, 69: PRINT "250"

  LINE (150, 302)-(150, 298), 11

  LINE (250, 302)-(250, 298), 11

  LINE (350, 302)-(350, 298), 11

  LINE (450, 302)-(450, 298), 11

  LINE (550, 302)-(550, 298), 11

REM полет

    v = 50

    g = 9.8

    a = 30

    f = a * 3.14 / 180

100  q = 1

    t = t + q

    s = v * t * COS(f)                                                                                                (2.1)

    h = v * t * SIN(f) - (g * t ^ 2) / 2                                                                        (2.2)

  LINE (x2, y2)-(x0 + s, y0 - h), 14

    x2 = x0 + s

    y2 = y0 - h

  IF h < 0 THEN 200

  GOTO 100

200 END

Веденные дополнительные значения X2, Y2 обеспечивают привязку координат к началу системы отчета. Программа выдаст график полета тела, который в данном случае не привязан к масштабу сетки координат. Устранить это неудобство можно в ведя множитель для Y координаты 5.5 (1:5,5), а для координаты X множитель  2 (1:2).

Заменив строчки 2.1 и 2.2 на выражения 2.3 и 2.4

s = v * t * COS(f) * 2                                                                                               (2.3)

              h = (v * t * SIN(f) - (g * t ^ 2) / 2) * 5.5                                                                 (2.4)

получим окончательную программу полета тела (Приложение 1). График полета представлен на рисунке 2.

Рис. 2

В данном случаи он не отражает истинной траектории полета тела, так как значение координат получены с шагом (дискретой) в 1 сек. Если значению q присвоить 0,5; 0,25; 0,1; и т.д., то график приблизится к идеальной кривой полета тела.

На кривизну графика так же влияет  изменение скорости и начального угла полета тела.

3.Этап третий. Работа пользователя.

Хорошую наглядность программа приобретает, когда она становится унифицированной, т.е. чтобы ее можно было успешно  использовать  для различных параметров. Для того, чтобы можно было менять начальные условия, несколько модернизируем уже имеющуюся программу полета тела. Но вместо тела используем пушечное ядро и попытаемся им попасть в цель находящуюся на каком-то  заданном расстоянии.

Для составления программы необходимо учитывать, что начальная скорость ядра составляет примерно 200 м/с, следовательно, и дальность полета значительно возрастет, при этом сопротивлением воздуха опять пренебрегаем. Программу начнем с ввода данных в соответствии с условием задачи.

REM   ЯДРО

5   INPUT «  Ввести угол стрельбы от 5 до 80 град»; a

7    IF a < 5 THEN 10

     IF a > 80 THEN 20

     GOTO 40

10 INPUT «   Угол должен быть >=5»; a

    GOTO 7

20 INPUT «   Угол должен быть 5000 THEN 60

     GOTO 70

50   INPUT «   Расстояние до цели должно быть >=200»; l

     GOTO 45

60   INPUT «   Расстояние до цели должно быть 80 THEN 20

     GOTO 40

10 INPUT «   Угол должен быть >=5»; a

    GOTO 7

20 INPUT «   Угол должен быть 5000 THEN 60

     GOTO 70

50   INPUT «   Расстояние до цели должно быть >=200»; l

     GOTO 45

60   INPUT «   Расстояние до цели должно быть 80 THEN 20

     GOTO 40

10 INPUT "   Угол должен быть >=5"; a

    GOTO 7

20 INPUT "   Угол должен быть 5000 THEN 60

     GOTO 70

50   INPUT "   Расстояние до цели должно быть >=200"; l

     GOTO 45

60   INPUT "   Расстояние до цели должно быть 80 THEN 20

     GOTO 40

10 INPUT "   Угол должен быть >=5"; a

      GOTO 7

20 INPUT "   Угол должен быть 5000 THEN 60

       GOTO 70

50   INPUT "   Расстояние до цели должно быть >=200"; l

       GOTO 45

60   INPUT "   Расстояние до цели должно быть

 
     
Бесплатные рефераты
 
Банк рефератов
 
Бесплатные рефераты скачать
| Интенсификация изучения иностранного языка с использованием компьютерных технологий | Лыжный спорт | САИД Ахмад | экономическая дипломатия | Влияние экономической войны на глобальную экономику | экономическая война | экономическая война и дипломатия | Экономический шпионаж | АК Моор рефераты | АК Моор реферат | ноосфера ба забони точики | чесменское сражение | Закон всемирного тяготения | рефераты темы | иохан себастиян бах маълумот | Тарых | шерхо дар борат биология | скачать еротик китоб | Семетей | Караш | Influence of English in mass culture дипломная | Количественные отношения в английском языках | 6466 | чистонхои химия | Гунны | Чистон | Кус | кмс купить диплом о language:RU | купить диплом ргсу цена language:RU | куплю копии дипломов для сро language:RU
 
Рефераты Онлайн
 
Скачать реферат
 
 
 
 
  Все права защищены. Бесплатные рефераты и сочинения. Коллекция бесплатных рефератов! Коллекция рефератов!