Автор работы: Пользователь скрыл имя, 08 Ноября 2015 в 13:46, курсовая работа
Из перечисленных примеров может сложиться впечатление, что некоторые математические объекты и операции не реализуются компьютером в их совершенстве и полноте, но таких объектов как будто мало, и их нужно специально отыскивать. Однако такое впечатление, если бы оно возникло, было бы ошибочным. В действительности, пожалуй, нет таких математических объектов и операций, которые были воплощены в компьютере точно. Так, самая очевидная и простая операция - сложение целых чисел - может быть выполнена компьютером лишь для некоторых целых чисел.
Негосударственное образовательное учреждение
среднего профессионального образования
«Абаканский техникум прикладной информатики»
Специальность |
230115 Программирование в |
Дисциплина |
Численные и Математические методы |
Допускается к защите Заместитель директора по учебной работе ______________________________ 14 ноября 2014 г. |
КУРСОВАЯ РАБОТА
на тему
Скатывание шарика с эллиптической горки.
студента группы 323 Тарадаева Виталия Евгеньевича Научный руководитель – преподаватель компьютерных дисциплин НОУ СПО «АТПИ» Скаерин Виктор Алексеевич Дата защиты курсовой работы 17 ноября 2014 г. Оценка________________________ |
Абакан, 2014
Оглавление
При моделировании реальных систем мы вначале составляем некоторое представление о реальной системе, достаточно точное, чтобы можно было что-либо утверждать о системе доказательно. Это значит, что мы формируем математическую (в широком смысле слова) модель системы. Затем эту математическую модель мы превращаем в модель компьютерную. Следовательно, математические представления играют при моделировании роль своеобразного «интерфейса» между компьютерными моделями и реальными системами.
Но мы должны понимать, что объекты, реализованные в компьютерной программе, только лишь похожи на соответствующие математические объекты, но не идентичны им. Например, прямая линия на экране дисплея не есть то же самое, что прямая линия в математике. В математике прямая линия не имеет толщины. А на экране компьютера прямая не может не иметь определенную толщину, иначе она не была бы видна.
Это обычная компьютерная практика - моделировать математические объекты с известными свойствами посредством физических (компьютерных) объектов, которые сами этими свойствами не обладают. При этом, хотя точность моделирования математических объектов компьютерными может быть очень высокой, это все-таки не избавляет нас от необходимости понимания замаскированных различий между исходными математическими объектами и их компьютерными образами.
Рассмотрим еще один пример. Вещественные величины в математике непрерывны, а в компьютере дискретны, т.к. длина разрядной сетки у компьютерных чисел принципиально ограничена. Точность представления конкретных вещественных чисел при этом может быть сколь угодно большой. Так, число p можно представить с двумя знаками после запятой, с десятью, с сотней знаков и т.д. Но такое свойство этого числа, как его иррациональность и трансцендентность, ни одно из компьютерных приближений «ухватить» не может. Это пример различия хотя и тонкого, но принципиального.
Другой подобный нюанс возникает при численном дифференцировании функций. В математике мы пользуемся для вычисления производной dy/dx пределом отношения Δy/Δx при Δx, стремящемся к нулю. На компьютере приращения Δy и Δx можно брать малыми, обеспечивая все более высокую точность вычисления производной. Однако, в отличие от математических законов, уменьшение приращений в компьютере будет приводить к повышению точности результата лишь до некоторого момента, после которого дальнейшее уменьшение приращений будет вызывать уже рост ошибки и закончится либо тем, что приближенное значение производной превратится в нуль, либо тем, что компьютер сообщит об ошибке «деление на нуль». Причина - ограниченность разрядной сетки, т.е., в конечном счете, - отличие компьютерных вещественных чисел от математических.
Из перечисленных примеров может сложиться впечатление, что некоторые математические объекты и операции не реализуются компьютером в их совершенстве и полноте, но таких объектов как будто мало, и их нужно специально отыскивать. Однако такое впечатление, если бы оно возникло, было бы ошибочным. В действительности, пожалуй, нет таких математических объектов и операций, которые были воплощены в компьютере точно. Так, самая очевидная и простая операция - сложение целых чисел - может быть выполнена компьютером лишь для некоторых целых чисел. Если числа достаточно большие, то результат сложения переполнит разрядную сетку, т.е. компьютер не сможет сложить двух чисел. Выходит, что из бесконечного множества целых чисел «лишь некоторые», лишь конечное их множество, доступны компьютеру для сложения.
Подобные нюансы в компьютерных представлениях математических объектов неисчислимы. Они приводят, в конечном счете, к тому, что правильное применение компьютера для решения серьезных задач может гарантироваться только совместными усилиями профессионалов высокой квалификации в области вычислительной техники, в области математики и в той предметной области, в которой компьютер применяется. Это соответствует специфике тройственного отношения «реальная система - математическая модель - компьютерная модель».
В связи с этим уместно упомянуть еще об одном распространенном разрыве соответствий в рамках рассматриваемого тройственного отношения. Весьма часто используемым элементом в компьютерных моделях являются датчики случайных чисел. Несомненно, что их правильное применение можно гарантировать лишь при достаточной квалификации в теории вероятностей и в математической статистике. Обычно необходима еще и квалификация в той отрасли прикладной математики, которая специализируется на моделях заданной предметной области (например, в теории массового обслуживания). Но и этих математических квалификаций мало, т.к. компьютерные случайные числа не идентичны математическим случайным числам.
Например, они совсем не являются случайными числами. Они вычисляются через некоторое начальное значение по рекуррентной формуле. Значит, можно заранее вычислить и предсказать любое из последующих «случайных» чисел, зная единственное начальное значение. Более точное название компьютерных «случайных чисел» - это псевдослучайные числа.
Псевдослучайные числа позволяют моделировать случайные числа, в принципе, с любой заданной точностью. Так, программа «генератор базовой случайной величины» выдает псевдослучайные числа, «равномерно распределенные» на интервале (0,1) и «статистически независимые». И никакой другой физический объект или устройство не позволяют получить базовую случайную величину, которая столь точно отвечала бы критериям и тестам математической статистики.
Но, тем не менее, при использовании компьютерного датчика возникает целый ряд специфических нюансов, часть из которых перечислена в Приложении 1 «Пояснения к статистическому методу». Эти нюансы не видны просто математику или просто программисту, но видны специалисту, который одновременно и математик, и программист, т.е. специалист «на стыке», специалист нового конкретного узкого направления.
http://www.rae.ru/monographs/
Смоделировать скатывание шарика с дуговой плоскости, где после окончания дуги он падает на наклонную плоскость и отталкивается от ней.
Шарик должен скатиться с дуговой плоскости, при это нужно учитывать силу трения, силу скатывающую, прижимную силу, силу тяжести и силу упругости.
При попадании на площадь с наклонной плоскостью, нужно учесть только проекции, угол отражения и силу тяжести.
Движение рассматривается на двух участках, круговом и наклонном. Проведена касательная, отображены Ft(сила тяжести), Fs(скатывающая сила), Fp(прижимная сила), Fu(сила упругости). Сила упругости найдена по закону Гука(4-й источник): Fu = k * d, где k – коэффициент жесткости, d – деформация. Чтобы найти деформацию, найдем настоящее расстояние и расстояние с деформацией: .(расстояние от центра шарика до центра жёлоба). Для нахождения расстояния от центра шарика до желоба( r) применена теорема Пифагора: . Проекции сил найдены из подобия треугольника и треугольника расстояния: == => , . Сила трения по формуле(Закон Кулона , 3-й источник): = .
Проекции сил трения находятся из подобия треугольника сил и треугольника расстояний: == => (знак минус взят из физических соображений), . Аналогично: = = => , . Результирующие проекции всех сил по оси OX и OY: ,
Проекции ускорений находятся по второму закону Ньютона(Источник номер 2 «Второй закон Ньютона»): , , где m это масса шарика. Новые скорости и координаты: , (), , . Величины и слишком маленькие, поэтому в данной модели для они не используются.
Переход ко второму участку происходит тогда, когда шарик пересекает вертикальную линию от центра дуги ().
Проекции сил сопротивления находятся из подобия треугольника сил и треугольника скоростей: => , , (Как говорится во втором источнике) знаки минус взяты из физических соображений. , где Re(число Рентгольц), S(площадь поперечного сечения), v(скорость). V находится по теореме Пифагора: . Проекции ускорений найдены по второму закону Ньютона: , . Так как модель динамическая, то скорости и координаты рассчитываются за очень маленький промежуток времени dt, в течении которого движение можно считать равноускоренным, это выполнено еще в первой части.
Рассматривается столкновение шарика с плоскостью. Для этого найдено кратчайшие расстояние от центра шарика до плоскости и сравнивается оно с радиусом шарика.
Далее находится уравнение прямой d (),
α, (уравнение прямой взято с первого источника литературы «Уравнение прямой»). Найдено уравнение перпендикуляра к плоскости. Уравнение самой плоскости находится по формулам: , , . Далее прировняв эти 2 уравнения находится точка пересечения: , (5-й источник литературы «Теорема Пифагора»). Если столкновение было, то находится новая скорость шарика после столкновения:
,
находится из треугольника скоростей: , , , , γ это угол в новом треугольник скоростей следовательно: , .
Так как при ударе энергия (а значит скорость) уменьшилась, то учитывается это уменьшение отсрочено, после того как находится новая координата.
Данная программа состоит из одного модуля и нескольких подпрограмм в данном модуле. Модель считается успешно выполненная.
Основные части программы, это процедуры :, FormCreate, Timer1Timer, Timer2Timer. В процедуре «FormCreate» создание кадра и задание размеров. В «Button1Click» Задание начальных параметров, угла наклона, скоростей и включение таймера движения по элипстической дуге. В «Timer2Timer» соответственно само движение по элипстической дуге, если дуга закончилась, то переход к следующему таймеру. В «Timer1Timer» движение по наклонной плоскости, где шарик падает на наклонную плоскость, и отражается под тем же углом теряя скорость, как шарик выходит за правый предел экрана, то модель завершает работу.
Данная программа является моделью скатывания шарика с эллиптической горки(третья четверть круга), далее там ниже расположена наклонная плоскость угол (от -5 до 40 градусов) которой задается в начале работы модели, перед запуском. Как только шарик задел наклонную плоскость, он отражается под тем же углом теряя при этом скорость.
Как описано в части 3.2, работу можно считать выполненной, так как модель выполняет нужные требования.
1. http://ru.wikipedia.org/wiki/%
2. http://ru.wikipedia.org/wiki/
3. http://ru.wikipedia.org/wiki/
4. http://ru.wikipedia.org/wiki/
5.http://ru.wikipedia.org/
6. http://www.soprotmat.ru/kruch.
7. www.nado5.ru/e-book/sila-
8. http://www.univer.omsk.su/
9. http://ru.wikipedia.org/wiki/%
10. http://ru.wikipedia.org/wiki/%
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Math, Vcl.ComCtrls;
type
TForm1 = class(TForm)
Label3: TLabel;
Edit3: TEdit;
Button1: TButton;
Timer1: TTimer;
Timer2: TTimer;
UpDown1: TUpDown;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const
m = 1.0;
g = 9.8;
Ft = m * g;
n = 0.01;//этта
Re = 1.0;//Число рентольца
R = 20.0;//Радиус шарика
s = 1.0;//pi * r * r/100;//1.0;
dt = 0.01;
Rg = 200.0;//радиус горки
mu = 0.1;
k = 100.0;
us = 5;//ускорение модели
var
Form1: TForm1;
kadr, kadr1: TBitmap;
x, y, xc, yc, x2, y2, vx, vy, alf, x0, y0, vvx, vvy: Real;
implementation
{$R *.dfm}
//Запускаем модель с начальной скоростью
procedure TForm1.Button1Click(Sender: TObject);
var
s1:String;
begin
S1 := Form1.Edit3.Text;
if (s1 = '') then
begin
MessageDlg('Не все введено!!!!!', mtError, [mbOK], 0);
exit;
end;
alf := UpDown1.Position * pi / 180;
x0 := 200;
y0 := 300;
vvx := 0;
vvy := 0;
x2 := 0;
y2 := 600;
xc := 200;
yc := 600;
Form1.Timer2.Enabled := True;
end;
//Создаем кадр
procedure TForm1.FormCreate(Sender: TObject);
begin
kadr := TBitmap.Create;
kadr.Width := Form1.ClientWidth;
kadr.Height := Form1.ClientHeight - 100;
kadr1 := TBitmap.Create;
kadr1.Width := Form1.ClientWidth;
kadr1.Height := Form1.ClientHeight - 100;
end;
//Таймер движения по наклонной плоскости
procedure TForm1.Timer1Timer(Sender: TObject);
var
fs, v, fsx, fsy, fx, fy, ax, ay, bet, gam, d, k1, k2, b2, b1, xp, yp, fi: Real;
i: Integer;
begin
//Покажем текущий кадр
Kadr.Canvas.Brush.Color := clWhite;
kadr.Canvas.FillRect(rect(0, 0, 900, 600));
kadr.Canvas.Pen.Color := 0;
kadr.Canvas.Pen.Width := 3;
kadr.Canvas.MoveTo(200, 600 - 400);
kadr.Canvas.LineTo(200, 600 - 300);
kadr.Canvas.Arc(0, 600 - 800, 400, 600 - 400, 0, 600 - 600, 200, 600 - 400);
kadr.Canvas.MoveTo(round(x0), round(600 - y0));
kadr.Canvas.LineTo(round(900), round(600 - y0 + (900 - x0) * sin(alf) / cos(alf)));