Informatyka I – Lab 06, r.a. 2011/2012
prow. Sławomir Czarnecki
Zadania na laboratorium nr. 6
Po utworzeniu nowego projektu, dołącz bibliotekę
bibs.h
.
1. Największy wspólny dzielnik liczb naturalnych a, b oznaczamy przez nwd(a,b). Zdefiniuj
funkcję
(
)
int
in
,
t
int
nwd
a
b
implementującą iteracyjną wersję Algorytmu Euklidesa
znajdowania największego wspólnego dzielnika dwóch liczb naturalnych
{
}
,
1, 2,...
a b ∈
=
ℕ
.
Algorytm Euklidesa
start
naturalne
nwd, a, b, A, B ;
czytaj a ;
czytaj b ;
A = a ;
B = b ;
dopóty dopóki a
b
≠ wykonuj:
jeśli a
b
> to:
a
a b
= − ;
w przeciwnym przypadku: b
b
a
= − ;
nwd = a ;
wyświetl A, B, nwd;
koniec
2. Udowodnij poprawność Algorytmu Euklidesa. W tym celu udowodnij, że funkcja zdaniowa
(
)
(
)
(
)
,
0
0
,
,
P a b
a
b
nwd a b
nwd A B
=
> ∧ > ∧
=
, gdzie a, b, A, B są identyfikatorami
zmiennych zdefiniowanych powyżej, jest prawdziwa w każdym kroku algorytmu oraz, że
liczba kroków jest liczbą skończoną.
3. Zdefiniuj funkcję
(
)
int
in
,
t
int
NWD
a
b
implementującą rekurencyjną wersję Algorytmu
Euklidesa znajdowania największego wspólnego dzielnika dwóch liczb naturalnych
{
}
,
1, 2,...
a b ∈
=
ℕ
.
4. Zdefiniuj funkcję
(
** ,
** , )
?
?
double
double
mm
a
b
, która oblicza iloczyn
m n
M
×
∈
c
macierzy
m k
M
×
∈
a
i
k n
M
×
∈
b
, tj.
=
c
a b
. Przetestuj funkcję wywołując ją dla losowo
wygenerowanych składowych macierzy
m k
M
×
∈
a
i
k n
M
×
∈
b
.
5. Zadanie problemowe z kinematyki bryły sztywnej (nawiązanie do materiału z rozdz. 8.8
na stronie 137, Ruch Płaski w podręczniku R. Nagórski, W. Szcześniak, Mechanika
Teoretyczna, t.1, OW PW 1993 oraz do materiału z rozdz. 6 na stronie 207, Ruch Płaski
Układu Materialnego w podręczniku W. Szcześniak, Zbiór Zadań z Mechaniki Teoretycznej –
Kinematyka, OW PW 2001).
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
. 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 – por. Rys.1.
Rys.1. Szpulka w ruchu płaskim – toczenie się bez poślizgu ze stałą prędkością kątową
ω
. Na
rysunku pokazano szpulkę w chwili początkowej t = 0.
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 t
T
∈ .
Zdefiniuj funkcję
(
*
,
?
, )
?
double
d uble
t
o
F
X
, która opisuje ruch szpulki w opisie
materialnym lub w tzw. opisie Lagrange’a.
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)
Zdefiniuj funkcję
(
* ,
?
, )
?
double
d uble
t
o
G
x
, która opisuje ruch szpulki w opisie
przestrzennym lub w tzw. opisie Eulera.
Rys.2. Trajektoria
3
2
0 xy
czas
ℑ ⊂
=
×
ℝ
ℝ
ℝ
szpulki w pewnym przedziale czasu
[
]
max
0, t
.
Widok „z góry” oraz widok izometryczny.
Rys.3. Szpulka w ruchu płaskim w chwili początkowej t = 0 i w dowolnej chwili
0
t
> . Na
rysunku pokazano zdefiniowany w zadaniu punkt materialny X oraz punkt przestrzenny x.
Nietrudno jest analitycznie sprawdzić, że dla dowolnych X, x, t :
( )
,
,
F G
t t =
x
x
oraz
(
)
, ,
G F
t t =
X
X
.
Dla losowo wygenerowanych wartości X, x, t sprawdź numerycznie obie powyższe relacje.
Wektor prędkości v definiujemy jako pole materialne
(
)
( )
( )
( )
( )
0
1
0
2
0
1
1
sin
cos
v
:
,
, ,
cos
sin
v
X
t
X
t
r
F
T
t
X
t
X
t
t
ω
ω
ω
ω
ω
ω
ω
ω
ω
−
+
+
∂
Ω× →
=
=
−
−
∂
v
v
X
ℝ
.
(3)
Opis przestrzenny V wektora prędkości v definiujemy jako pole przestrzenne
( )
1
0
2
0
1
:
,
,
,
,
x
r
V
G
t t
x
r t
V
ω ω
ω ω
+
ℑ → Ω
=
=
−
+
V
V
v
x
.
(4)
Formułę (4) otrzymujemy ze wzoru (3), w którym składowe
0
X i
1
X obliczone są za pomocą
relacji (2), tj.
(
)
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
1
0
0
1
0
1
0
1
1
0
0
1
c
v
,
sin
cos
cos
sin
c
si
cos
sin
si
os
sin
n
sin
c
n
cos
os
sin
s
sin
cos
s
in
cos
os
o
c
c
in
s
os
x
t
t
x
t
t
x
x
t
X
t
X
t
r
x
t
x
t
r t
t
t
t
x
t
x
t
r t
t
t
r
t
x
t
t
r t
t
t
r
r
t
t
t
ω
ω
ω ω
ω
ω
ω ω
ω ω
ω
ω ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω ω
ω
ω
ω
ω
ω
ω
ω
ω
= −
+
+
=
= −
−
−
+
+
+
−
+
=
= −
+
+
+
+
+
−
+
=
=
X
( )
( )
( )
2
2
1
1
0
sin
cos
,
t
r
x
r
x
V
t
t
ω
ω
ω
ω
ω ω
+
+
=
+
=
x
oraz
(
)
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
0
1
1
0
0
2
1
1
0
0
0
1
0
1
v
cos
cos
,
cos
sin
cos
sin
cos
cos
sin
cos
sin
sin
cos
co
si
s
s
n
cos
cos
s
s
in
in
si
in
sin
s
n
co
t
X
t
X
t
x
t
x
t
r t
t
t
x
t
x
t
r
x
t
t
x
t
x
t
t
t
t
r t
t
t
r
t
x
t
t
x
t
t
t
t
t
x
ω ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω
ω ω
ω
ω ω
ω
ω
ω
ω
ω ω
ω
ω
ω ω
ω
ω
ω
ω
ω
ω
= −
−
=
−
−
−
+
−
+
−
=
= −
+
+
+
−
−
+
=
= −
−
X
( )
( )
( )
( )
2
2
2
2
2
0
1
2
cos
si
s
n
,
in
r t
t
r t
t
x
r t
V
t
t
ω
ω
ω
ω
ω
ω
ω
ω
+
= −
+
+
=
x
Zdefiniuj funkcję
v(
*
,
,
?
?
)
double
do
le
t
ub
X
, która opisuje pole prędkości szpulki (prędkość
dowolnego punktu
∈Ω
X
w chwili t) oraz funkcję
V(
* ,
,
?
?
)
double
do
le
t
ub
x
, która definiuje
opis przestrzenny prędkości szpulki (prędkość szpulki w miejscu
2
∈
x
ℝ
i w chwili t).
Głównym celem ćwiczenia jest stabelaryzowanie powyższych wzorów (1), (2), (3), (4) dla
wartości
1.0 [ ]
r
m
=
,
3.0 [1/ ]
s
ω
=
,
max
5.0 [ ]
t
s
=
w
100
n
=
równo odległych od siebie
chwilach
max
0,1,...,
1,
1
i
t
t
i
t i
n
t
n
= ×
=
−
=
−
△
△
dla punktu materialnego
0
r
=
∈ Ω
−
X
oraz
punktu przestrzennego
2
0
r
=
∈
x
ℝ
. Stabelaryzowane wartości należy zapisać do plików w
celu wizualizacji w Excelu.
Po poprawnie oprogramowanym zadaniu, 4 wykresy w Excelu obejmujące:
• wizualizację trajektorii danego punktu materialnego X
• wizualizację w kolejnych chwilach czasowych punktów materialnych X
przechodzących przez dany punkt x przestrzeni
• wizualizację w kolejnych chwilach czasowych wektora prędkości v danego punktu
materialnego X (stycznego do jego trajektorii) oraz
• wizualizację wektora prędkości poruszającego się ciała (szpulki) w danym miejscu x
(opis przestrzenny V pola materialnego prędkości v)
powinny wyglądać jak na poniższych rysunkach:
Rys.4. Trajektoria punktu materialnego
[
]
0
T
r
=
−
∈ Ω
X
w przedziale czasu
[
]
max
0, t
.
Rys.5. Punkty materialne
∈Ω
X
„przechodzące” przez miejsce zdefiniowane w punkcie
przestrzennym
[
]
2
0
T
r
=
∈
x
ℝ
w przedziale czasu
[
]
max
0, t
.
Rys.6. Wektor prędkości punktu materialnego
2
0
r
=
∈
−
X
ℝ
(lewy rysunek)
oraz wektor prędkości szpulki w miejscu zdefiniowanym przez punkt przestrzenny
2
0
r
=
∈
x
ℝ
(prawy rysunek) w przedziale czasu
[
]
max
0, t
.