Algorytmika i Programowanie.
Podstawy języka C++ ze wstępem do programowania dla
inżynierów
Tematyka ćwiczeń laboratoryjnych AiP_Lab08
dla 2 semestru studiów dziennych
na Wydziale Inżynierii Lądowej PW
Prowadzący Sławomir Czarnecki
tablice, funkcje c.d.
Zad.1. Zdefiniuj następujące 4 funkcje:
• obliczania sumy dwóch wektorów
(
)
,
1
n
a b
n
∈
≥
ℝ
,
• obliczania iloczynu skalarnego dwóch wektorów
(
)
,
1
n
a b
n
∈
≥
ℝ
,
• obliczania długości wektora
(
)
1
n
a
n
∈
≥
ℝ
,
• obliczania iloczynu wektorowego dwóch wektorów
3
,
a b ∈ ℝ (tylko w
przestrzeni
3
ℝ
!!!).
Przypomnienie !
Iloczyn skalarny dwóch wektorów
(
)
,
1
n
a b
n
∈
≥
ℝ
liczymy ze wzoru
0
[ ] [ ]
n
i
a b
a i b i
=
⋅ =
∈
∑
ℝ
,
natomiast długość wektora
(
)
1
n
a
n
∈
≥
ℝ
ze wzoru
a
a a
=
⋅ ∈ ℝ
.
Dla
n
=3 mamy następującą definicję iloczynu wektorowego dwóch wektorów
3
,
a b ∈ ℝ
0
1
2
3
[1] [2]
[2] [1]
[0]
[1]
[2]
[0] [2]
[2] [0]
[0]
[1]
[2]
[0] [1]
[1] [0]
e
e
e
a
b
a
b
a b
a
a
a
a
b
a
b
b
b
b
a
b
a
b
−
× =
≈ −
+
∈
−
ℝ
.
Zad.2.
Pręt AB porusza się po płaszczyźnie Oxy w ruchu płaskim. Dane:
•
długość pręta AB:
l
•
ruch punktu A we współrzędnych kartezjańskich:
( )
( )
( )
( )
A
A
A
x
A
y
A
z
t
x
t
y
t
z
t
=
=
+
+
r
r
e
e
e
dla
( )
A
A
x
x
t
t
α
=
=
,
( )
2
1
2
A
A
y
y
t
t
β
=
=
,
( )
0
A
A
z
z
t
=
= .
• ruch obrotowy pręta wokół bieguna A
( )
2
1
2
t
t
φ φ
γ
=
=
.
W powyższych wzorach, w trakcie przeprowadzania obliczeń numerycznych,
przyjmiemy, że:
[ ]
2
2
1
1.0
,
1.0
,
1.0
,
1.0
m
m
l
m
s
s
s
α
β
γ
=
=
=
=
. Parametr t
oznacza czas w sekundach [s],
3
A
∈
r
ℝ
oznacza wektor wodzący ruchu punktu
A, natomiast
3
,
,
x
y
z
∈
e e e
ℝ
oznaczają wektory bazy ortonormalnej w
3
ℝ
.
l
A - biegun
B
e
x
e
y
y
x
φ
0
2.1. Zdefiniuj funkcję, w której dla dowolnej ale ustalonej chwili czasu t,
obliczane
byłyby
współrzędne
kartezjańskie
( )
A
A
x
x
t
=
,
( )
A
A
y
y
t
=
jednoznacznie definiujące położenie punktu A na płaszczyźnie
2
ℝ
.
Wykorzystaj następnie funkcję do (dyskretnego) obliczenia toru ruchu punktu A
poprzez stabelaryzowanie odciętej
A
x
i rzędnej
A
y
w 250 „punktach
czasowych” odpowiadających kolejnym chwilom czasowym
[ ]
0,
t
T
∈
dla
[ ]
5.0
T
s
=
. Obliczane współrzędne
( )
A
A
x
x
t
=
,
( )
A
A
y
y
t
=
zapisuj jednocześnie
do pliku
A.txt
w taki sam sposób jak w Zad.2. z AiP_Lab07, aby było możliwe
sporządzenie wykresu toru ruchu punktu A w programie Microsoft Excel.
2.2. Zauważając, że
( )
( )
( )
B
B
A
t
t
t
=
=
+
r
r
r
ρ
, gdzie:
( )
( )
( )
sin
cos
0
x
y
z
t
l
t
l
t
φ
φ
= −
+
+
ρ
e
e
e
zdefiniuj funkcję, w której dla dowolnej ale ustalonej chwili czasu
t
, obliczane
byłyby współrzędne kartezjańskie
( )
B
B
x
x
t
=
,
( )
B
B
y
y
t
=
jednoznacznie
definiujące położenie punktu B na płaszczyźnie
2
ℝ
. Znajdź tor ruchu punktu B
w analogiczny sposób jak dla punktu A powyżej (obliczane współrzędne
( )
B
B
x
x
t
=
,
( )
B
B
y
y
t
=
zapisuj do pliku
B.txt
, w celu późniejszego sporządzenie
wykresu toru ruchu punktu B w programie Microsoft Excel).
2.3. Zdefiniuj funkcje, w których dla dowolnej, ale ustalonej chwili czasu
t
byłyby obliczane kolejno:
• wektor
( )
A
A
t
=
v
v
prędkości oraz prędkość
( )
A
A
v
v
t
=
punktu A
( )
0
A
A
A
x
y
z
dx
dy
t
dt
dt
=
+
+
v
e
e
e ,
( )
( )
A
A
v
t
t
= v
• wektor
( )
t
=
ω
ω
prędkości kątowej oraz prędkość kątowa
( )
t
ω ω
=
pręta
AB
( )
0
0
x
y
z
d
t
dt
φ
=
+
+
ω
e
e
e ,
( )
( )
t
t
ω
= ω
• wektor
( )
B
B
t
=
v
v
prędkości oraz prędkość
( )
B
B
v
v
t
=
punktu B
B
A
=
+ ×
v
v
ω ρ
,
( )
( )
B
B
v
t
t
= v
, gdzie (w naszym przykładzie):
AB
=
ρ
.
(wektor prędkości
( )
B
B
t
=
v
v
punktu B obliczamy w oparciu o
fundamentalne twierdzenie kinematyki ruchu bryły sztywnej
wykorzystujące pojęcie bieguna, który przyjmujemy w rozpatrywanym
problemie jako punkt A).
•
Wykorzystując powyższe funkcje, zapisz do plików odpowiednio
vA.txt
i
vB.txt
prędkości punktów A i B w celu sporządzenie ich wykresów w
funkcji czasu
t
w programie Microsoft Excel (analogicznie jak w
poprzednich zadaniach).
•
Tabelaryzowanymi (po trzy dla każdej z 250 chwil czasowych
t
)
składowymi kartezjańskimi wektorów prędkości
( )
A
A
t
=
v
v
i
( )
B
B
t
=
v
v
punktów A i B, zainicjalizuj składowe tablic TA[250][3] i TB[250][3],
które wyświetl następnie na ekranie.