Програмски пакет МАТНЕМАТ i СА

36
Програмски пакет МАТНЕМАТIСА И симулација кретања тела у гравитационом пољу Земље Ученик Марко Стевановић Ментор др Марко Петковић

Upload: dunne

Post on 21-Jan-2016

67 views

Category:

Documents


0 download

DESCRIPTION

Ментор д р Марко Петковић. Ученик Марко Стевановић. Програмски пакет МАТНЕМАТ I СА. И симулација кретања тела у гравитационом пољу Земље. 1. Увод. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Програмски пакет МАТНЕМАТ I СА

Програмски пакет МАТНЕМАТIСА

И симулација кретања тела у гравитационом пољу Земље

УченикМарко Стевановић

Ментордр Марко Петковић

Page 2: Програмски пакет МАТНЕМАТ I СА

1. Увод• MATHEMATICA је програмски пакет за математичке и

научне примене. Поред тога користи се у инжењерству, техничким наукама, економији и образовању.

• MATHEMATICA је посебно погодна за следеће намене:▫ обрада нумеричких података,▫ способност симболичког процесирања,▫ систем за графичко приказивање података и функција.

• Историја овог програмског пакета почиње крајем 80-их година прошлог века, када је Стивен Волфрам (Stephen Wolfram) конструисао SMP (Simbolic Manipulation Program), први систем модерне компјутерске алгебре.

Page 3: Програмски пакет МАТНЕМАТ I СА

• Од почетка 1980-их година па до данас MATHEMATICA је трпела знатне измене и побољшања, која се тичу лакшег и ефикаснијег рада са што већим бројем објеката који се јављају у природним и техничким наукама.

• Данас је актуелна седма верзија која поседује хиљаде уграђених функција које олакшавају рад при разним израчунавањима.

• Захваљујући изузетној практичности, корисници овог пакета се налазе на свим континентима, укључују сва годишта и обухватају најразличитије врсте занимања, попут уметника, композитора, лингвиста, адвоката, као и многе хобисте из свих сфера друштвеног живота.

Page 4: Програмски пакет МАТНЕМАТ I СА

2. Програмски пакет MATHEMATICA

• Главни део софтвера MATHEMATICA је Kernel (језгро) које служи за обављање математичких операција и ради независно од рачунара на коме је инсталиран.

• Корисник поставља своје захтеве у радном простору (Notebook – свеска, белешка). Радни простор је структуирани интерактивни документ који се састоји од низа ћелија (Cells).

• Pад са MATHEMATICA-ом одвија се у оквиру дијалога. У линије са ознаком In[n] корисник укуцава свој текст, а језгро даје повратну информацију у линијама са ознаком Out[n].

Page 5: Програмски пакет МАТНЕМАТ I СА

Аритметичке операције• Пакет MATHEMATICA омогућава рад са рационалним,

реалним и комплексним бројевима и поседује све тригонометријске, експоненцијалне, логаритамске и друге функције које се често користе у математици и осталим природним наукама.

In[1] := (3 + 4)*9 - 12/3Out[1] = 59

In[2] := 2^100Out[2] = 1267650600228229401496703205376

In[3] := N[Pi, 20]Out[3] = 3.14159265358979324

In[4] := Sum[x^2, {x, 1, 7}]Out[4] = 140

Page 6: Програмски пакет МАТНЕМАТ I СА

Манипулација алгебарским изразима• Једна од главних могућности MATHEMATICA-е је

манипу- лација симболичких израза.

In[5] := Izraz1 = (2y+4x^2)^2(x-y)^2Out[5] = (x-y)2 (4x2 + 2y)2

In[6] := Expand[Izraz1] Out[6] = 16x6 + 16x4 y – 32x5 y + 4x2 y2 – 32x3 y2 + 16x4 y2 – 8x y3 + 16x2 y3 + 4y4

In[7] := Coefficient[Izraz1, x^2]Out[7] = 4y2 + 16y3

In[8] := Izraz1 /. {x → 4, y → 3}Out[8] = 4900

Page 7: Програмски пакет МАТНЕМАТ I СА

Диференцирање и интеграција

• Симболичко диференцирање је једна од основних симболичких операција у MATHEMATICA-и. Израчунавање интерграла je супротан поступак од диференцирања и много је компли- кованије јер не постоје нека генерална правила.

In[9] := D[Exp[x^2 Sin[x]], x]Out[9] =

In[10] := D[Sqrt[x^2 - 3], {x, 3}]

Out[10] =

Page 8: Програмски пакет МАТНЕМАТ I СА

In[11] := Integrate[Sin[2x], x]

Out[11] =

In[12] := Integrate[(3x^2+2x-3)/(x^4-1), x]

Out[12] =

In[13] := Integrate[Sin[x], {x, 0, Pi}]Out[13] = 2

In[14] := Integrate[x y/(1+x^2), {x, 1, 2}, {y, 0, 1}]

Out[14] =

Page 9: Програмски пакет МАТНЕМАТ I СА

2D и 3D графика

• Као што је већ раније речено, један од најважнијих делова програмског пакета MATHEMATICA је систем за графичко приказивање података и функција.

In[15] := Plot[x/(x^2-1), {x, -3, 3}]

Out[15] = 3 2 1 1 2 3

3

2

1

1

2

3

Page 10: Програмски пакет МАТНЕМАТ I СА

In[16] := Plot3D[Sin[xy], {x, -1, 5}, {y, -1, 5}]

Out[16] =

Page 11: Програмски пакет МАТНЕМАТ I СА

Решавање алгебарских једначина

• Аналитичко решавање једначина степена не већег од четири:

In[17] := Solve[x^3 + x^2 + 2x == 0, x]

Out[17] = {{x → 0}, {x → }, {x → }}

• Нумеричко решавање једначина:

In[18] := NSolve[x^5 + x^2 - 1 == 0, x]Out[18] = {{x → -0.869278 - 0.388269i}, {x → -0.869278 + 0.388269i}, {x → 0.464912 - 1.07147i}, {x → 0.464912 + 1.07147i}, {x → 0.808731}}

In[19] := FindRoot[x^5 + x^2 – 1 == 0, {x, 1}]Out[19] = {x → 0.808731}

Page 12: Програмски пакет МАТНЕМАТ I СА

Решавање диференцијалнихједначина

• Диференцијална једначина је једначина која изражава везу између независне променљиве, непознате функције и њених извода:

• Многе диференцијалне једначине представљају математичке моделе разноврсних процеса у природи, друштву, друштвеним и техничким наукама, и као такве имају многобројне примене.

• MATHEMATICA омогућава решавање оваквих једначина на симболички и на нумерички начин.

Page 13: Програмски пакет МАТНЕМАТ I СА

• Аналитичко решeње диференцијалне једначине првог реда y’(x) = y(x)/5 + sin(x):

In[20] := sol1 = DSolve[{y'[x] == y[x]/5 + Sin[x], y[0]==0}, y, x]

Out[20] = {{y → Function[{x}, ]}}

• Нумеричко решење исте диференцијалне једначине:

In[21] := sol2 = NDSolve[{y'[x] == y[x]/5 + Sin[x], y[0]==0}, y, {x, 0, 13}]Out[21] = {{y → InterpolatingFunction[{{0., 13.}}, <>]}}

• Када се добијена решења прикажу графички на први поглед се чини да између њих не постоје никакве разлике, међутим ако се на графику прикажу релативне грешке видеће се да ипак постоји разлика.

Page 14: Програмски пакет МАТНЕМАТ I СА

2 4 6 8 10 12

2

4

6

8

10

12

2 4 6 8 10 12

0 .00001

5 . 10 6

5 . 10 6

0 .00001

0 .000015

Аналитичко и нумеричкорешење

Релативна грешканумеричког решења

у односу на аналитичко

Page 15: Програмски пакет МАТНЕМАТ I СА

3. Кретање тела у хомогеном гравитационом пољу Земље• Да би се моделирала нека физичка појава или процес

потребно је, поред познавања основа програмирања и програмског језика, и одређено познавање теоријских појмова који су неопходни за решавање одговарајућег проблема.

• Гравитација - једна од четири основних сила у Универзуму, дугог је домета и делује привлачно између свака два тела која имају масу.

• Гравитационо поље - материјални посредник преко којег се преноси гравитационо деловање са једног на друго тело; то је векторска физичка величина и представља јачину грави- тационе силе која делује на тело јединичне масе које се налази у датој тачки гравитационог поља.

Page 16: Програмски пакет МАТНЕМАТ I СА

• Свако масивно тело, укључујући и Земљу, окружено је вла- ститим гравитационим пољем које делује привлачно на сва тела које се у њему налазе.

• Јачина гравитационог поља је бројно једнака убрзању које оно саопштава свим телима под његовим утицајем. Узимајући вредности за масу земље M = 5,98 × 1024 kg и полупречник r=6371 km, добија се вредност којa се обележава са g и износи 9,81 m s-2.

• Све ово значи да сва тела близу Земљине површине, при паду, добијају убрзање једнако g, које је усмерено ка површини тј. средишту Земље.

Page 17: Програмски пакет МАТНЕМАТ I СА

Једначине кретања тела у хомогеном гравитационом пољу• На основу другог Њутновог закона и познавања облика

силе отпора ваздуха, могуће је написати диференцијалну једначину кретања тела у једној димензији.

• Знак минус означава да је х оса оријентисана у супротном смеру у односу на смер деловања гравитационе силе, а b je линеарни коефицијент отпора средине (при брзинама мањим од 24 m/s).

• Дата диференцијална једначина лако се решава, а познавањем почетних услова добија се једначина кретања.

Page 18: Програмски пакет МАТНЕМАТ I СА

• Кретање тела у две димензије може се лако проанализирати, ако се занемaри утицај отпора средине. Решавањем две дифе- ренцијалне једначине другог реда (посебно за x и посебно за y осу):

• Познавањем почетних услова, може се елиминисањем времена из једначина кретања по x и по y оси добити зависност y(x) која, заправо, представља путању по којој се тело креће.

• Ако је почетна брзина тела v0, a α угао између вектора почетне брзине и x осе, онда је путања тела дата изразом:

• vxo = v0 сos α, a vyo = v0 ѕin α (пројекције почетне брзине на x и на y осу).

Page 19: Програмски пакет МАТНЕМАТ I СА

• Важне величине које карактеришу коси хитац су домет (xmax), максимална висина (ymax) и време лета (T).

• Међутим, реалистичан модел подразумева силу отпора средине тј. отпор ваздуха. Овај ефекат може се апроксимирати силом отпора која зависи од квадрата брзине:

• v је брзина као скаларна величина (интензитет), а v брзина као вектор. Коефицијент отпора средине је k и за ваздух износи 5,2×10-3 m-1.

• Сада у диференцијлане једначине кретања треба уврстити и силу отпора.

Page 20: Програмски пакет МАТНЕМАТ I СА

• Дакле, диференцијалне једначине које описују коси хитац имају следећи облик:

• Нажалост, ове једначине се не могу решити аналитички, тако да се морају упослити нумеричке методе. Решавање ових дифе- ренцијалних јeдначина, и уопште моделирање косог хица и других врста кретања у гравитационом пољу Земље обавиће се уз помоћ програмског пакета MATHEMATICA.

Page 21: Програмски пакет МАТНЕМАТ I СА

4. Симулација кретања тела у гравитационом пољу Земље•Слободан пад

▫ Мало тело, близу Земљине површине, пада са висине h са почетном брзином v0.

▫ Ако се х оса усмери навише дифе- ренцијалне једнaчине су:

▫ Дата једначина се решава при- меном функције DSolve.

Page 22: Програмски пакет МАТНЕМАТ I СА

In[1] := sol = DSolve[{x'[t]== v[t], v'[t]== -g-(b/m)v[t], x[0]== h, v[0]== v0}, {x[t], y[t]}, t]//Expand

Out[1] = {{x[t] → ,

v[t] → }}

In[2] := sol[[1, 2]] /. bt/m → Infinity

Out[2] = v[t] →

▫ Коначна брзина се добија из услова bt/m >> 1.

▫ Одавде се јасно види да свако тело има своју коначну брзину, која зависи од масе и његових димензија, што јасно показује фактор b.

Page 23: Програмски пакет МАТНЕМАТ I СА

▫ Брзина као функција од времена може се одредити у систему где је јединица за време m/b, а јединица за брзину gm/b.

In[3] := v[t_] = sol[[1, 2, 2]]//.{gm/b → 1, b/m → 1}

Out[3] =

In[4] := Plot[{Abs[v[t]]/.v0 → -3, Abs[v[t]]/.v0 → -0.6, Abs[v[t]]/.v0 → 0, 1}, {t, 0, 3.5}, PlotStyle → {{}, {}, {}, {Dashing[{0.02}]}}, PlotRange → All, Frame → True, FrameLabel → {"t (m/b)", "v (gm/b)"} LabelStyle → {FontSize → 14}]

▫ Сада се цртају графици v(t) за три карактеристичне вредности почетне брзине тела: v0=–3, v0=–0,6 и v0=0. Брзине су негативне због усмерености х осе.

Page 24: Програмски пакет МАТНЕМАТ I СА

Out[4] =

0 . 0 0 . 5 1 . 0 1 . 5 2 . 0 2 . 5 3 . 0 3 . 50 . 0

0 . 5

1 . 0

1 . 5

2 . 0

2 . 5

3 . 0

t m b

vgmb

▫ Две доње криве показују да се брзина тела повећава, и да после извесног времена достиже максималну вре- дност. Горња крива показује да тело које пада, заправо успорава, јер је почетна брзина већа од коначне.

Page 25: Програмски пакет МАТНЕМАТ I СА

•Коси хитац▫ У тренутку t = 0 тело масе m, приближно сферног

облика (лопта), налази се у координатном почетку. Вектор почетне брзине v0 заклапа са хоризонталом угао α.

▫ Најпре је потребно дефинисати почетне параметре и оне величине косог хица када је k = 0.

In[5] := g=9.81; k=0.0052; v0=40; α=60; vx0=v0 Cos[Pi α/180]; vy0=v0 Sin[Pi α/180];  Xmax=2vx0 vy0/g; (* domet za k=0 *) Ymax=vy0^2/(2g); (* maksimalna visina za k=0 *) T=2vy0/g; (* vreme leta za k=0 *)

Page 26: Програмски пакет МАТНЕМАТ I СА

▫ За решавање диференцијалних једначина које описују коси хитац (треће поглавље) биће употребљена функција NDSlove.

In[6] := sol = NDSolve[{ x’’[t]== -k*Sqrt[x’[t]^2 + y’[t]^2] x’[t], y’’[t]== -g-k*Sqrt[x’[t]^2 + y’[t]^2] y’[t], x’[0]== vx0, x[0]== 0, y’[0]== vy0, y[0]== 0} ,{x, y}, {t, 0, T}]; solX = sol[[1, 1, 2]]; (* x(t) *) solY = sol[[1, 2, 2]]; (* y(t) *)

Tk = FindRoot[solY[t]== 0, {t, T}][[1, 2]]; (* vreme leta za k ≠ 0 *)

▫ Како је позната путања косог хица без отпора средине, може се упоредити са реалистичном путањом, која је добијена нумеричким поступком. Ове две криве биће приказане на истом графику функцијом Show.

Page 27: Програмски пакет МАТНЕМАТ I СА

In[7] := Show[ Plot[vy0/vx0 x - 1/2 g/vx0^2 x^2, {x, 0, Xmax}, AxesLabel → {"x(m)", "y(m)"}], ParametricPlot[{solX[t], solY[t]}, {t, 0, Tk}, PlotStyle → Dashed, AxesLabel → {"x(m)", "y(m)"}]]

Out[7] =

2 0 4 0 6 0 8 0 1 0 0 1 2 0 1 4 0x m 1 0

2 0

3 0

4 0

5 0

6 0

y m

Page 28: Програмски пакет МАТНЕМАТ I СА

▫ Јасно је да домет косог хица зависи од угла избацивања (α). Када је отпор ваздуха једнак нули угао при коме је домет максималан износи 45°, међутим у реалном случају је тај угао нешто мањи.

▫ Одређивање тог угла обавиће се, дефинисањем функције зависности домета од угла. Команда Module означава да се у функцији користе локалне променљиве, и то само онда када се позове дата функција.

In[8] := Domet[α_, v0_] := Module[

{g=9.81, k=0.0052, vx0, vy0, T, sol, solX, solY, Tk}, (* lokalne promenljive *)

vx0=v0 Cos[Pi α/180]; vy0=v0 Sin[Pi α/180]; T=2vy0/g;

Page 29: Програмски пакет МАТНЕМАТ I СА

sol = NDSolve[{ x’’[t]== -k*Sqrt[x’[t]^2 + y’[t]^2] x’[t], y’’[t]== -g-k*Sqrt[x’[t]^2 + y’[t]^2] y’[t], x’[0]== vx0, x[0]== 0, y’[0]== vy0, y[0]== 0} ,{x, y}, {t, 0, T}]; solX = sol[[1, 1, 2]]; solY = sol[[1, 2, 2]];

Tk = FindRoot[solY[t]==0, {t, T}][[1, 2]];

Return[solX[Tk]] (* izlazna vrednost funkcije *) ]

In[9] := Domet[50, 80]Out[9] = 203.026

▫ Овако дефинисана функција враћа вредност за различите параметре које корисник унесе као аргументе.

Page 30: Програмски пакет МАТНЕМАТ I СА

▫ Као и свака друга функција, и ова се може представити графички. Биће приказана зависност домета од угла за v0 = 70 m/s.

In[10] := Plot[Domet[α, 70], {α, 0, 90}, AxesLabel → {"α(°)", "Domet(m)"}, Ticks → {{0, 15, 30, 45, 60, 75, 90}}]

Out[10] =

15 30 45 60 75 90

50

100

150

Domet m

Page 31: Програмски пакет МАТНЕМАТ I СА

▫ Налажење тачне вредности угла постиже се следећим алгоритмом:

In[11] := L = Table[{α, Domet[α, 70]}, {α, 30, 45, 0.01}]; Do[ If[ L[[i, 2]] == Max[L], imax=i] ,{i, Length[L]}] Print[L[[imax]]]

Out[11] = {37.84, 193.092}

▫ Дакле, када је почетна брзина 70 m/s, највећи домет од 193,092 метара, остварује се при углу од 37,84°. Ако се исти поступак понови за друге вредности брзине, може се закључти да се при већим почетним брзинама оптимални угао смањује и све више удаљава од 45°.

Page 32: Програмски пакет МАТНЕМАТ I СА

Визуализација косог хица

• За визуализацију косог хица потребна је функција Manipulate. То је функција за интерактивну визуализацију и најчешће има следећи облик: Manipulate[expr, {u, umin, umax}]. Њен рад се заснива на томе да генерише и приказује различите верзије објекта expr, мењањем параметра u.

• У случају косог хица, објекат који се мења је график путање и положај тачке која представља тело. За сваку појединачну вредност параметра t (време) генерише се нови график и нови положај тела. Све ово омогућава да се низ статичних слика претвори у анимацију која симулира кретање тела у гравитационом пољу.

Page 33: Програмски пакет МАТНЕМАТ I СА

• Сада се дефинише функција Projektil[v0_, α_], која за различите вредности угла и почетне брзине даје интерактивну визуализацију косог хица.

In[12] := Projektil[v0_, α_ ] := Module[

{g=9.81, k=0.0052, vx0, vy0, Xmax, Ymax, T, sol, solX, solY, Tk},

vx0=v0 Cos[Pi α/180]; vy0=v0 Sin[Pi α/180]; Xmax=2vx0 vy0/g; Ymax=vy0^2/(2g); T=2vy0/g;

sol = NDSolve[{ x’’[t]== -k*Sqrt[x’[t]^2 + y’[t]^2] x’[t], y’’[t]== -g-k*Sqrt[x’[t]^2 + y’[t]^2] y’[t], x’[0]== vx0, x[0]== 0, y’[0]== vy0, y[0]== 0} ,{x, y}, {t, 0, T}];

solX = sol[[1, 1, 2]]; solY = sol[[1, 2, 2]];

Tk = FindRoot[solY[t]==0, {t, T}][[1, 2]];

Return[ Manipulate[ If[i==0, Plot[vy0/vx0 x - 1/2 g/vx0^2 x^2, {x,0,Xmax}, PlotRange → {{0, 1.03Xmax}, {0, 1.03Ymax}}, AspectRatio → Ymax/Xmax, AxesLabel→{"x(m)","y(m)"}, Prolog → {Blue, PointSize[0.02], Point[{0, 0}]}], Show[ Plot[vy0/vx0 x - 1/2 g/vx0^2 x^2, {x, 0, Xmax}, PlotRange → {{0, 1.03Xmax},{0, 1.03Ymax}}, AspectRatio → Ymax/Xmax, AxesLabel → {"x(m)", "y(m)"}], ParametricPlot[{solX[t], solY[t]}, {t, 0, i}, PlotRange → {{0, 1.03Xmax},{0, 1.03Ymax}}, AspectRatio → Ymax/Xmax, PlotStyle → Dashed, AxesLabel → {"x(m)", "y(m)"}], Graphics[{Blue, PointSize[0.02], Point[{solX[i], solY[i]}]}]] ] ,{{i, 0, "Vreme"}, 0, Tk}] ]]

Page 34: Програмски пакет МАТНЕМАТ I СА

• Сада се позивањем ове функције за вредности v0=40 m/s и α=60° добија тражена симулација.

In[13] := Projektil[40, 60]

Out[13] =

Vreme

4.5

0 2 0 4 0 6 0 8 0 1 0 0 1 2 0 1 4 0xm0

1 0

2 0

3 0

4 0

5 0

6 0

ym

Page 35: Програмски пакет МАТНЕМАТ I СА

5. Закључак• У овом раду представљене су само неке од могућности про-

грамског пакета MATHEMATICA и његова примена на решавање одређених проблема из физике. Све описане функције чине само један делић огромног, али компактног система свестране намене.

• Проблеми из механике (математичко и сферно клатно), електромагнетизма (електрично поље и линије сила), квантне физике (зрачење црног тела, таласне функције, потенцијалне јаме итд.) и још многи други обимнији и комплекснији проблеми релативно брзо се решавају применом овог софтвера.

• Дакле, програмски пакет MATHEMATICA је незаобилазан алат свих оних који се баве математиком, физиком и осталим природним и техничким наукама. Све у свему, MATHEMATICA умногоме олакшава рад у науци и чина га занимљивијим.

Page 36: Програмски пакет МАТНЕМАТ I СА

Хвала на пажњи !!!