Informatyka - Podstawy Programowania w Języku C++
prow. Sławomir Czarnecki
Zadania na laboratorium nr. 4
Uwaga !
Na laboratorium, zademonstrowany zostanie sposób wywoływania funkcji NEW(...)
i DEL(...) dynamicznego alokowania i de-alokowania tablic jedno oraz dwuwymiarowych
(tzn. wektorów oraz macierzy) z biblioteki
bib.h
. Zadanie drugie nawiązuje do tematyki
wykładu z Mechaniki Teoretycznej – dział kinematyka – nauka o ruchu ciał sztywnych.
1. Dynamiczna alokacja i de-alokacja tablic.
• Wprowadź z klawiatury liczby całkowite dodatnie m i n .
• Zdefiniuj następnie dynamicznie tablice: wektor u[m] typu
int
, wektor v[m] typu
long
oraz wektor w[m] i macierz t[m][n] typu
double
inicjalizując składowe definiowanych
tablic dowolną, ale ustaloną liczbą (np. liczbą zero). Wykorzystaj w tym celu
odpowiednie wersje funkcji NEW(...) z biblioteki
bib.h
.
• Wyświetl na ekranie wszystkie składowe macierzy t[m][n] wywołując funkcję cout .
• Zmień składowe powyżej zdefiniowanych tablic wywołując funkcję random(…).
• Wyświetl na ekranie wszystkie składowe powyżej zdefiniowanych tablic wywołując
odpowiednie wersje funkcji display(...) z biblioteki
bib.h
.
• Zwolnij zarezerwowaną dynamicznie na stercie pamięć wywołując funkcje DEL(...) z
biblioteki
bib.h
.
2. Wzdłuż poziomej linii prostej toczy się ze stałą prędkością kątową
ω
oraz bez poślizgu
szpulka Ω o mniejszym promieniu r i o większym R – por. rys.1.
Rys.1. Szpulka w ruchu płaskim – toczenie się bez poślizgu ze stałą prędkością kątową.
Dla uproszczenia interpretacji formuł zakładamy, że R = ∞ . W chwili początkowej
0
t =
,
środek szpulki znajduje się w początku 0 globalnego układu współrzędnych kartezjańskich.
Ruch szpulki Ω w globalnym układzie współrzędnych kartezjańskich i w przedziale czasu
[
)
0,
T =
∞
opisuje odwzorowanie
(
)
( )
( )
( )
( )
0
1
0
2
0
1
1
cos
sin
:
,
,
,
sin
cos
X
t
X
t
r t
x
F
T
F
t
X
t
X
t
x
ω
ω
ω
ω
ω
+
+
Ω × →
=
=
−
+
x
X
ℝ
,
(1)
gdzie:
0
2
1
x
x
=
∈
x
ℝ
oznacza punkt przestrzenny definiujący położenie punktu
materialnego
0
1
X
X
=
∈ Ω
X
identyfikującego punkt szpulki Ω w chwili czasowej t
T
∈ .
Definiując trajektorię jako zbiór
( )
(
)
{
}
,
,
t
F
t
T
ℑ =
∈
Ω
×
x
odwzorowanie odwrotne
1
:
G
F
−
=
ℑ → Ω
do odwzorowania
2
:
F
T
Ω × → ℝ
możemy zdefiniować następująco:
( )
( )
( )
( )
( )
( )
( )
0
1
0
0
1
1
cos
sin
cos
:
,
,
,
sin
cos
sin
x
t
x
t
r t
t
X
G
G
t
x
t
x
t
r t
t
X
ω
ω
ω
ω
ω
ω
ω
ω
−
−
ℑ → Ω
=
=
+
−
X
x
.
(2)
Nietrudno jest sprawdzić, że dla dowolnych X, x, t :
( )
,
,
F G
t t =
x
x
oraz
(
)
, ,
G F
t t =
X
X
.
Wektor prędkości v definiujemy jako pole materialne
(
)
( )
( )
( )
( )
0
1
0
2
0
1
1
sin
cos
:
,
,
,
cos
sin
X
t
X
t
r
v
F
T
t
X
t
X
t
v
t
ω
ω
ω
ω
ω
ω
ω
ω
ω
−
+
+
∂
Ω× →
=
=
−
−
∂
v
v
X
ℝ
,
(3)
natomiast opis przestrzenny V wektora prędkości v definiujemy jako pole przestrzenne
( )
( )
1
0
2
0
1
:
,
,
, ,
,
x
r
V
t
G
t t
x
r t
V
ω ω
ω ω
+
ℑ → Ω
=
=
−
+
V
V x
v
x
.
(4)
Zdefiniuj i zainicjalizuj trzy zmienne typu
double
:
1[ ]
r
m
=
,
3 [1 / ]
s
ω
=
,
5 [ ]
T
s
=
.
Zdefiniuj i zainicjalizuj zmienną
100
n =
typu
int
, oznaczającą liczbę chwil
czasowych, w przedziale czasu T.
Zdefiniuj dynamicznie dwa wektory: X[2], x[2] typu
double
. Składowe wektora X
zainicjalizuj dowolnymi liczbami wskazującymi wybrany punkt materialny szpulki
Ω , a składowe wektora x zainicjalizuj dowolnymi liczbami wskazującymi wybrane
miejsce w przestrzeni
2
ℝ .
Zdefiniuj dynamicznie cztery macierze: FX[n][2], Gx[n][2], v[n][2], V[n][2]. W
każdym z n wierszy oblicz następnie według formuł odpowiednio: (1), (2), (3) i (4)
położenia punktu materialnego X, punkty materialne przechodzące przez miejsce x,
wektor prędkości v punktu materialnego X oraz wektor prędkości V w miejscu x w n,
równo odległych od siebie chwilach czasowych
0,1,...,
1,
1
i
T
t
i
T i
n
T
n
= ×
=
−
=
−
△
△
.
Zapisz do czterech plików tekstowych: trajektoria.txt, X.txt, predkosc.txt, V.txt
składowe macierzy odpowiednio: FX, Gx, v, V w taki sposób, aby na podstawie
zapisanych danych, możliwe było sporządzenie wykresów w Excelu wizualizujących
(w sposób dyskretny) odpowiednio: trajektorię wybranego punktu materialnego X,
zbiór punktów materialnych przechodzących przez wybrane miejsce x, wektor
prędkości v wybranego punktu materialnego X, wektory prędkości V punktów
materialnych przechodzących przez wybrane miejsce x w kolejnych chwilach
czasowych
(
)
0,1,...,
1
i
t i
n
=
−
.
Uwaga ! Znacznie „lepszą” wizualizację wektora prędkości v można uzyskać,
sporządzając jego prezentację w postaci odcinków o początkach w n zmieniających
się punktach x reprezentujących – zmieniające się – położenie punktu X w kolejnych
chwilach
i
t i o końcach w punktach
+
x
v . Taka wizualizacja umożliwia bowiem
potwierdzenie znanego faktu styczności (w każdej chwili czasowej t) wektora
prędkości do toru ruchu punktu. Analogiczna uwaga dotyczy wizualizacji wektora
prędkości v w ustalonym miejscu x przestrzeni, czyli wizualizacji tzw. opisu
przestrzennego V materialnego pola wektorowego v. Początki odcinków
reprezentujących wektor V w kolejnych chwilach czasowych
i
t powinny być zawsze
w ustalonym punkcie x, natomiast ich końce w punktach
+
x
V . Zamieszczone w
uwadze wskazówki powinny być uwzględnione w zmienionym nieco sposobie zapisu
danych do plików tekstowych predkosc.txt, V.txt , umożliwiającym sporządzenie w
Excelu rysunków zgodnych z przedstawioną wyżej interpretacją.