mirror of
https://github.com/szymon-jozef/ZUT-notatki.git
synced 2026-09-07 12:10:40 +02:00
Compare commits
30 Commits
d38af389b6
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 437aa678fc | |||
| 36028899bc | |||
| f3cebb936b | |||
| fdcf4b4a3d | |||
| 4951da8fd9 | |||
| 2237683c00 | |||
| 4cf7dce6fc | |||
| 0d7c0d381a | |||
| f9fce835d5 | |||
| 829a08766a | |||
| 24979a137d | |||
| 6738650e7f | |||
| a645291f8b | |||
| 6a948ffe9f | |||
| f5edd8ed79 | |||
| 4fbd30fa19 | |||
| 4db9e10dd6 | |||
| 2b9fa6f3ad | |||
| a37d75f2d5 | |||
| 399f1218f4 | |||
| a3bd6af48a | |||
| 0d5d9dc969 | |||
| 6270be5805 | |||
| 1a8ba1c2bf | |||
| 738a3dc371 | |||
| 4ca7ab71a6 | |||
| 0eee499998 | |||
| 5bd6a056b9 | |||
| 7016157d6f | |||
| ccacf0e97a |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,3 +6,4 @@
|
||||
*/out
|
||||
.Rhistory
|
||||
main
|
||||
.Rproj.user
|
||||
|
||||
BIN
media/Pasted image 20260529204254.png
Normal file
BIN
media/Pasted image 20260529204254.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
BIN
media/Pasted image 20260529204333.png
Normal file
BIN
media/Pasted image 20260529204333.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
BIN
media/Pasted image 20260530180423.png
Normal file
BIN
media/Pasted image 20260530180423.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
media/Pasted image 20260616200137.png
Normal file
BIN
media/Pasted image 20260616200137.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
BIN
media/Pasted image 20260617124924.png
Normal file
BIN
media/Pasted image 20260617124924.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.5 KiB |
54
uczelnia/2_semestr/matematyka_dyskretna/egzamin.md
Normal file
54
uczelnia/2_semestr/matematyka_dyskretna/egzamin.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Logika
|
||||
- Prawo de'morgana – przy negacji alternatywy lub koniunkcji zamieniamy też ze sobą działania
|
||||
- suma indeksowanej rodziny zbiorów – elementy które występują w co najmniej jednym
|
||||
- iloczyn indeksowanej rodziny zbiorów – elementy które wystęupją w każdym
|
||||
# Abstrakcja
|
||||
- Izomorfizm – bijekcja, która zachowuje funkcje i relacje.
|
||||
- Homomorfizm – odwzorowanie jednej algebry liniowej(np. pierścienia) w drugą przy zachowaniu odpowiednich działań
|
||||
- Automorfizm – izomorfizm na samym sobie, czyli odwzorowanie struktury na samą siebie przy zachowaniu działań itp.
|
||||
|
||||
# Relacje
|
||||
- piwo z kolegami
|
||||
- zwrotność (każda ze sobą)
|
||||
- symetryczność (działa w dwie strony)
|
||||
- przechodniość (jeśli xRy i yRz to xRz)
|
||||
- relacja równoważności, gdy spełnia wszystko powyżej
|
||||
- antysymetryczność (xRy i yRx wtedy i tylko wtedy gdy x = y)
|
||||
# Struktury
|
||||
- Grupa – struktura algebraiczna definiowana jako zbiór z określonym na nim łącznym i odwracalnym dwuargumentowym działaniem wewnętrznym[1]; szczególny przypadek monoidu, w którym każdy element ma element odwrotny (zob. Podobne struktury).
|
||||
- Iniekcja – każdy argument ma przypisaną tylko jedną wartość i żadne dwa argumenty nie dają tej samej wartości. Innymi słowy jest różnowartościowa.
|
||||
- Suriekcja – zbiór wartości pokrywa się z przeciwdziedziną (każdy element przeciwdziedziny jest użyty)
|
||||
- Bijekcja – iniekcja i suriekcja na raz. Liczba bijekcji to $n!$ gdzie n to ilość el. zbioru.
|
||||
|
||||
- działanie wewnętrzne – operacjie nie wyrzucają nas z danego zbioru
|
||||
- rozdzielność $a \cdot (b + c) = (a \cdot b) + (a \cdot c)$
|
||||
- półgrupa – nie potrzebuje el. neutralnego i odwrotnego
|
||||
# Grafy
|
||||
- Graf – podstawowy obiekt rozważań teorii grafów, struktura matematyczna służąca do przedstawiania i badania relacji między obiektami. W uproszczeniu graf to zbiór wierzchołków, które mogą być połączone krawędziami w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków.
|
||||
|
||||
- Graf planarny – graf który można narysować nie przecinając linii na kartce.
|
||||
- Graf spójny – każda para wierzchołków jest połączona
|
||||
|
||||
- Twierdzenie Kuratowskiego – graf jest planarny, jeśli nie zawiera podgrafu, który jest grafem rozszerzonym grafu $K_5$ lub $K_{3,3}$. Innymi słowy: graf jest planarny jeśli nie jest stworzony z pentagramu/3 kropek na góra-dół.
|
||||
- Macierz incydencji – pokazuje gdzie wierzchołki grafu mają krawędzi. Wiersz to wierzchołek, a kolumny to krawędzi. Jeśli jest $0$ to nie styka się, jeśli liczba $< 0$ to wchodzi do wierzchołka, a jeśli $> 0$ to z niego wychodzi.
|
||||
|
||||
# Teoria liczb
|
||||
- $ax + by = c$, przy takim zapisie szukamy $NWD(a, b)$ i sprawdzamy czy dzieli liczbę c. Uzywamy rozszerzonego algorytmu Euklidesa
|
||||
- Hinolskie twierdzenie o resztach służy do rozwiązywania układów równań.
|
||||
Ważne wzory:
|
||||
$$
|
||||
\begin{align}
|
||||
N &= n_i \cdot n_{i + 1} \cdot \ ...\ \cdot n_k \\
|
||||
N_i &= \frac{N}{n_i} \\
|
||||
N_i \cdot y_i &\equiv 1 \pmod{n_i} \\
|
||||
x &= \sum_{i = 1}^{k}({a_i \cdot N_i \cdot y_i}) \pmod{N}
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
# Euklides
|
||||
Mamy NWD(a,b), gdzie a > b
|
||||
1. Rozpisujemy a za pomocą b $a = b \cdot x + r$, gdzie x to wielokrotność a r reszta
|
||||
2. rozpisujemy b za pomocą r
|
||||
3. powtórz, aż dojdziesz do momentu gdy $r = 0$
|
||||
|
||||
Rozszerzenie polega na robieniu tego samego ale w drugą stronę
|
||||
15
uczelnia/2_semestr/matematyka_dyskretna/rekurencja.md
Normal file
15
uczelnia/2_semestr/matematyka_dyskretna/rekurencja.md
Normal file
@@ -0,0 +1,15 @@
|
||||
Funkcje rekurencyjne są trudne i często nierozwiązywalne.
|
||||
|
||||
Równania liniowe jednorodne.
|
||||
|
||||
Funkcja afiniczna nie jest liniowa.
|
||||
|
||||
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
a_{n + 1} &= 4 \cdot a_n \\
|
||||
a_{a} &= 1 \\
|
||||
a_{i} &= 0 \\
|
||||
\end{align}
|
||||
$$
|
||||
3
uczelnia/2_semestr/matematyka_dyskretna/wykład 18.md
Normal file
3
uczelnia/2_semestr/matematyka_dyskretna/wykład 18.md
Normal file
@@ -0,0 +1,3 @@
|
||||
Permutacją zbioru nazywamy dowolną iniekcję sigma an do an. Zbiór wszystkich permutacji zbioru an oznaczamy Sn z działaniem składania funkcji jest grupą.
|
||||
|
||||
Grupa ma dobre dzialania :D
|
||||
27
uczelnia/2_semestr/matematyka_stosowana/Egzamin.md
Normal file
27
uczelnia/2_semestr/matematyka_stosowana/Egzamin.md
Normal file
@@ -0,0 +1,27 @@
|
||||
24 punkt suma, od 17 zdajesz
|
||||
14 pytań zamkniętych, 10 otwartych
|
||||
# Zadania zamknięte, które na pewno będą$1$!!!!!!!!
|
||||
|
||||
$$
|
||||
\begin{align}
|
||||
P(a < X < b) \\
|
||||
P(a <= X <= b) \\
|
||||
P(X > a) \\
|
||||
P(X >= a) \\
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
Statystyka $Tn$ jest estymatorem najefektywniejszym jeśli
|
||||
|
||||
Pytanie o współczynnik korelacji i jego interpretacje
|
||||
|
||||
# Otwarte
|
||||
Prawdopodobieństwo geometryczne
|
||||
|
||||
Standaryzacja rozkładu normalnego
|
||||
|
||||
Zawsze do policzenia współczynnik korelacji, ale używać skróconych ułamków z pierwiastkiem
|
||||
|
||||
Funkcja charakterystyczna, wzory których __nie ma na kartach__. $EX to \frac{\phi(0)}{i}$ a $EX^2 = -\phi''(0)$
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
# Spis tematów
|
||||
Oto uporządkowana lista tematów, które pojawiają się w przesłanych przez Ciebie notatkach. Zostały one pogrupowane w logiczne kategorie:
|
||||
|
||||
**1. Podstawy rachunku prawdopodobieństwa i zdarzenia losowe**
|
||||
|
||||
- Przestrzeń zdarzeń elementarnych (Ω) i pojedyncze zdarzenia elementarne (ω)
|
||||
@@ -219,3 +217,100 @@ Centralne twierdzenie graniczne — jeśli ciąg zmiennych losowych $Y_{n\space
|
||||
Twierdzenie Lindberga - Levy'ego i Moivre'a - Laplace'a
|
||||
|
||||
Elementy statystyki opisowej
|
||||
|
||||
# Szereg statystyczny
|
||||
- Prosty – uporządkowany niemalejąco
|
||||
- Punktowy – dla cech skokowych (na wykresie kropki)
|
||||
- Przedziałowy – dla cech ciągłych (na wykresie takie prostokąciki)
|
||||
|
||||
# Statystyka i estymacja
|
||||
## Definicje
|
||||
- Cecha – zmienna losowa
|
||||
- Badanie próbne – wysoce wiarygodne, ale estymowane na podstawie próbki, więc nieidealne
|
||||
- Estymacja – policzenie próbki i uogólnienie wyników
|
||||
- Weryfikacja hipotez
|
||||
|
||||
- Próba losowa prosta – mamy zmienną losową X. Ciąg zmiennych $X_1$, $X_2$, ..., nazywamy n-elementową statystyczną próba losowa prosta. Jeśli zmienne są niezależnie i rozkłada $X_i$ nie jest taki sam jak rozkład X.
|
||||
- Statystyka – dowolna funkcja statystyczna
|
||||
|
||||
## Średnia z próby
|
||||
Przy zmiennych losowych o rozkładzie normalnym, średnia artymetyczna z próby ma rozkład normalny.
|
||||
|
||||
|
||||
## Estymacja punktowa
|
||||
Mamy nieznane $\theta$ rozkładu zmiennej losowej X.
|
||||
Estymator $\theta$ rozkładu zmiennej X nazywamy dowolną statystyką, której wartości przyjmujemy za ocenę wielkości parametru $\theta$
|
||||
|
||||
Używając lepszego estymatora otrzymujemy większą dokładność.
|
||||
|
||||
Sprawdzenie efektywności umożliwia nierówność Rao-Cramera.
|
||||
|
||||
|
||||
# Istotna uwaga
|
||||
Przy interpretacji przedziału ufności nie należy stosować następującego sformułowania: „parametr z prawdopodobieństwem należy do przedziału w okolicach (...)”, ponieważ parametr nie zalezy od wyników próby losowej. Jest stałą. Zmienny jest natomiast przedział ufności, którego końce zależą od próby losowej.
|
||||
|
||||
# Parametryczne testy istotności
|
||||
Weryfikacja hipotezy dotyczącej wariancji
|
||||
- Obszar krytyczny K – Lewo prawo, oba
|
||||
Jakieś dziwne znaczki.
|
||||
---
|
||||
Przykład:
|
||||
$s = 1.5$
|
||||
$n = 10$
|
||||
$\alpha = 0.05$
|
||||
Teza: odchylenie standardowe pomiarów różni się od $1.0$ na poziomie istotności $0.05$
|
||||
|
||||
1) Hipotezy
|
||||
$$
|
||||
\begin{align}
|
||||
h_0 = \chi = 1 \\
|
||||
h_1 = \chi ≠ 1
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
2) stat testowa
|
||||
$$
|
||||
\chi^2 = \frac{ns^2}{\sigma^2} = \frac{10 \times 1.5^2}{1^2} = 22.5
|
||||
$$
|
||||
3) Kwantyle
|
||||
$$
|
||||
\begin{align}
|
||||
\chi^2(\frac{\alpha}{2}, n - 1) = \chi&2(0.025, 9) = 2.700 \\
|
||||
\chi^2(1 -\frac{\alpha}{2}, n - 1) = \chi&2(0.0975, 9) = 19.023
|
||||
\end{align}
|
||||
$$
|
||||
4) Obszar krytyczny
|
||||
$$
|
||||
k = <0;2.700> u <10.023;∞>
|
||||
$$
|
||||
5) Wniosek
|
||||
$\chi^2-2.5 e K$, więc na poziomie istotności 0.05 odrzucamy $H_0$
|
||||
|
||||
|
||||
# Analiza wariancji
|
||||
Pobieramy próbki
|
||||
$x_{ij}$ j - ty wynik w i-tej próbce
|
||||
Średnia
|
||||
Średnia ogólna – średnia ze wszystkich wyników razem (średnia ważona w grupach)
|
||||
Analiza wariancji opiera się na obserewacji Karla Pearcena – jakbyśmy policzyli sumy kwadratów i odjęli średnią ogólną to rozbijemy to ona mierzy zmienność między próbkami. Suma kwadratów odchyleń według grup (resztkowa suma kwadratów) $= q_G$
|
||||
Suma odchyleń kwadratów między próbami $= q_P$
|
||||
Wszystkie q traktujemy jako realizacje zmiennych losowych Q z indeksem odpowiednim do q.
|
||||
Rozkład fishera snedekora.
|
||||
|
||||
Test Barteletta jednorodności w wariancji w k populacji.
|
||||
Zał:
|
||||
- Jednakowe wariancje
|
||||
- Rozkład normalny
|
||||
|
||||
Test rangowych znaków dla jednej populacji
|
||||
Rangowanie polega na nadawaniu rang wartościom. Przy identycznych wartościach nadajemy średnią artmetyczną rang, które przypadałaby na te wartości.
|
||||
|
||||
# Regresje I i II rodzaju
|
||||
## I rodzaj
|
||||
Funkcja regresji liniowej I rodzaju zmiennej Y względem zmiennej X jest zbiorem punktów $(x, g_2(x)) \in R^2$
|
||||
|
||||
__Zadanie 27.7 prezentacja wykład 12 na egzaminie__
|
||||
|
||||
## Rodzaj II
|
||||
Funkcję, której przewidywaną postać wyznacza się metodą mniejszych kwadraatów minimalizując wyrażenie $E(Y - g(X))^2$, nazywamy funkcją regresji II rodzaju
|
||||
|
||||
|
||||
BIN
uczelnia/2_semestr/matematyka_stosowana/laby/.RData
Normal file
BIN
uczelnia/2_semestr/matematyka_stosowana/laby/.RData
Normal file
Binary file not shown.
88
uczelnia/2_semestr/matematyka_stosowana/laby/cz1/lab_6.R
Normal file
88
uczelnia/2_semestr/matematyka_stosowana/laby/cz1/lab_6.R
Normal file
@@ -0,0 +1,88 @@
|
||||
# zadanie 1 | zmienne ciągłe
|
||||
n = 130
|
||||
m = 7
|
||||
sig = 1/2
|
||||
|
||||
# P(x1 + x2 + ... + xn > 900)
|
||||
|
||||
pnorm(900, n * m, sig * sqrt(n), F) # 0.9602947
|
||||
|
||||
# zadanie 2 na kolokwium | zmienne skokowe
|
||||
n = 2000
|
||||
p = 0.002
|
||||
q = 1 - p
|
||||
|
||||
# a)
|
||||
# P(6 <= Sn <= 12)
|
||||
# rozkład dwumianowy
|
||||
sum(dbinom(6:12, n, p)) # 0.2144444
|
||||
|
||||
# rozkład poissona
|
||||
sum(dpois(6:12, n * p)) # 0.2145959
|
||||
|
||||
# b)
|
||||
# P(Sn >= 1992)
|
||||
n = 2000
|
||||
q = 0.002
|
||||
p = 1 - q
|
||||
|
||||
# rozkład dwumianowy
|
||||
sum(dbinom(1992:2000, n, p)) # 0.9787556
|
||||
|
||||
# CTG P(Sn >= 1992) = P(Sn >= 1991.5)
|
||||
pnorm(1991.5, n * p, sqrt(n * p * q), F) # 0.9878469
|
||||
|
||||
# zadanie 3 | zmienne ciągłe
|
||||
n = 500 / 2
|
||||
m = 1.99
|
||||
sig = 0.05
|
||||
|
||||
# P(x1 + x2 ... + xn < 500)
|
||||
pnorm(500, n * m, sig * sqrt(n)) # 0.9992173
|
||||
|
||||
# zadanie 4
|
||||
n = 1000 # ok
|
||||
p = 0.525 # nie ok
|
||||
q = 1 - p
|
||||
|
||||
# P(450 < Sn < 520)
|
||||
# P(451 <= Sn <= 519)
|
||||
|
||||
sum(dbinom(451:519, n, p)) # 0.3636469
|
||||
# nie można użyć poissona
|
||||
pnorm(519.5, n * m, sqrt(n * p * q)) - pnorm(450.5, n * m, sqrt(n * p * q))
|
||||
|
||||
# zadanie 5
|
||||
n = 1200
|
||||
p = 0.08
|
||||
q = 1 - p
|
||||
|
||||
# P(0.07 < Sn < 0.11)
|
||||
sum(dbinom(0.08:0.10, n, p))
|
||||
pnorm(0.10, n * p, sqrt(n * p * q)) - pnorm(0.08, n * p, sqrt(n * p * q)) # 2.053723e-26
|
||||
|
||||
# zadanie 6
|
||||
n = 5000
|
||||
p = 0.01
|
||||
q = 1 - p
|
||||
|
||||
z = 0.015 * n
|
||||
|
||||
# n * p nie jest <= 10, więc nie można użyć poissona
|
||||
# P(x1 + ... + xn < z)
|
||||
sum(dbinom(1:z, n, p)) # 0.9996532
|
||||
pnorm(z, n * p, sqrt(n * p * q)) # 0.9998098
|
||||
# poprawka ctg
|
||||
pnorm(z - 0.5, n * p, sqrt(n * p * q)) # 0.9997514
|
||||
|
||||
|
||||
# zadania na kolokwium
|
||||
# 1. układ równań | lab1
|
||||
# 2. wektor wielokrotności i do potęgi i zliczyć ile elementów jest podzielnych przez jakieś wartości | lab1
|
||||
# 3. rozkład z listy nr 2 geometryczny albo dwumianowy
|
||||
# 4. rozkład normalny i prawdopodobieństwo z wartością bezwzględną | lab 3
|
||||
# 5. kwantyle | lab 3
|
||||
# 6. zadanie nr 2 tego co dzisiaj
|
||||
# 7. standaryzacja rozkładu normalnego, ale 1 niewiadoma (m/sig nieznane) | lab 4 i 5
|
||||
# 8. standaryzacja rozkładu normalnego, dwie niewiadome | lab 5
|
||||
|
||||
13
uczelnia/2_semestr/matematyka_stosowana/laby/cz1/laby.Rproj
Normal file
13
uczelnia/2_semestr/matematyka_stosowana/laby/cz1/laby.Rproj
Normal file
@@ -0,0 +1,13 @@
|
||||
Version: 1.0
|
||||
|
||||
RestoreWorkspace: Default
|
||||
SaveWorkspace: Default
|
||||
AlwaysSaveHistory: Default
|
||||
|
||||
EnableCodeIndexing: Yes
|
||||
UseSpacesForTab: Yes
|
||||
NumSpacesForTab: 2
|
||||
Encoding: UTF-8
|
||||
|
||||
RnwWeave: Sweave
|
||||
LaTeX: pdfLaTeX
|
||||
@@ -0,0 +1,243 @@
|
||||
|
||||
# === Lista 1 ===
|
||||
|
||||
|
||||
# rozwiązywanie układu równań
|
||||
|
||||
# zadanie 3
|
||||
|
||||
macierz_ukladu = matrix(c(1, 2, 5, -2, 1, 2, 5, -3, -1, 0, 2, 1, -2, 3, 5, 2), 4, 4) # wypisujemy liczby kolumnami w pierwszy argumencie, w drugim ile wierszy, w trzecim ile kolumn
|
||||
macierz_rozwiazan = c(-7, 21, 40, 2) # wektor rozwiązań
|
||||
solve(macierz_ukladu, macierz_rozwiazan) # solve(A, B) rozwiązuje układ równań
|
||||
|
||||
solve(macierz_ukladu)[2, 3] # podaje wartość elementu w drugim wierszu, w trzeciej kolumnie macierzy odwrotnej do macierzy układu
|
||||
|
||||
# zadanie 7
|
||||
|
||||
macierz_ukladu = matrix(c(-9, 15, -14, -1, 13, 5, 18, 6, 8, 12, 10, -4, -1, 5, 8, 12), 4, 4)
|
||||
macierz_rozwiazan = c(4, 298, 294, 120)
|
||||
solve(macierz_ukladu, macierz_rozwiazan) # rozwiązujemy układ
|
||||
|
||||
|
||||
# zadanie 4
|
||||
|
||||
# wektory wielokrotności i potęg
|
||||
w = (1:100)^2 # wektor zawierający kwadraty liczb od 1 do 100
|
||||
summary.factor(w%%10) # wyświetla ile liczb występuje na pozycji dziesiątek
|
||||
summary.factor(w%%2 == 0) # zlicza ile liczb jest podzielnych przez 2
|
||||
summary.factor(w%%3 == 0) # zlicza ile liczb jest podzielnych przez 3
|
||||
summary.factor(w%%3 == 0 & w%%2 == 0) # zlicza ile jest podzielnych przez oba
|
||||
|
||||
# zadanie 5
|
||||
w = seq(21, 29903, 7)^3 # wektor wielokrotności liczby 7 od 21 do 29903
|
||||
summary.factor(w %% 100 == 23) # ile liczb w tym wektorze kończy się na 2 ostatnie cyfry 23
|
||||
|
||||
# === Lista 2 ===
|
||||
|
||||
# typ skokowy
|
||||
|
||||
# zadanie 1
|
||||
dbinom(2, 4, 1/3) # prawdopodobieństwo, że nauczyciel wybierze 2 osoby z dostępnych 4 jeśli prawdopodobieństwo wybrania jednej wynosi 1/3. używamy dbinom jeśli prawdopodobieństwo ma być równe X (pierwszemu argumentowi)
|
||||
pbinom(1, 4, 1/3) # prawdopodobieństo wybrania mniej niz 2 osób. pbinom jeśli X <= wartość (tu mniejszy równy 1)
|
||||
pbinom(2, 4, 1/3, F) # prawdopodobieństwo wybrania co najmniej 3 osób (czyli więcej niż 2 osób). pbinom z F na końcu
|
||||
|
||||
# binom jeśli liczba sukcesów
|
||||
|
||||
# zadanie 2
|
||||
|
||||
dgeom(3, 0.02)
|
||||
pgeom(2, 0.02)
|
||||
|
||||
# geom jeśli liczba porażek do pierwszego sukcesu
|
||||
|
||||
# zadanie 3
|
||||
|
||||
dbinom(2, 100, 0.01)
|
||||
dpois(2, 100 * 0.01)
|
||||
|
||||
# można zrobić dwoma funkcjami ale nie wiem czemu
|
||||
|
||||
pbinom(6, 100, 0.01) - pbinom(1, 100, 0.01) # odejmujemy szansę na co najmniej 6 elementów od szansy na co najmniej 1 element
|
||||
sum(dbinom(2:6, 100, 0.01)) # sumujemy prawdopodobieństwo | lepsza metoda
|
||||
|
||||
pbinom(3, 100, 0.01, F) # co najmniej 4 elementy
|
||||
ppois(3, 100 * 0.01, F)
|
||||
|
||||
|
||||
# === Lista 3 ===
|
||||
# typ ciągły
|
||||
|
||||
# zadanie 1
|
||||
qnorm(0.97, 0, 1) # rozkład normalny od 0 do 1 (to wartości domyślne tych argumentów więc bez też zadziała)
|
||||
qchisq(0.975, 9)
|
||||
qt(0.95, 9)
|
||||
qf(0.995, 10, 23)
|
||||
|
||||
|
||||
# zadanie 2
|
||||
pnorm(2.5, 1.5, 2)
|
||||
pnorm(-0.5, 1.5, 2, F)
|
||||
|
||||
round(pnorm(2, 1.5, 2) - pnorm(0.5, 1.5, 2), 4)
|
||||
|
||||
round(pnorm(5, 1.5, 2) - pnorm(-1, 1.5, 2),4)
|
||||
|
||||
# zadanie 3
|
||||
#b)
|
||||
round(pnorm(0.7, -4, 3.5, F) + pnorm(-0.3, -4, 3.5),4)
|
||||
#d)
|
||||
pnorm(7.5/4, -4, 3.5) - pnorm(-3.5/4, -4, 3.5)
|
||||
|
||||
# zadanie 4
|
||||
round(pnorm(900, 1000, 50) * 4000)
|
||||
qnorm(0.13, 1000, 50, F)
|
||||
|
||||
# === Lista 4 ===
|
||||
# zadanie 1
|
||||
#a)
|
||||
sigma = 1
|
||||
# P(3 < X < 6)
|
||||
U = qnorm(1 - 70/200)
|
||||
m = 5 - U * sigma
|
||||
|
||||
round(pnorm(6, m, sigma) - pnorm(3, m, sigma), 4)
|
||||
|
||||
# b)
|
||||
sigma = sqrt(4)
|
||||
U = qnorm(0.85)
|
||||
|
||||
m = 6 - U * sigma
|
||||
round(pnorm(6, m, sigma), 4)
|
||||
|
||||
|
||||
# zadanie 2
|
||||
m = 5.2
|
||||
# P(X < 3) = 12.1
|
||||
X = 3
|
||||
U = 0.121
|
||||
sigma = (X - m)/qnorm(U)
|
||||
qnorm(0.8, m, sigma)
|
||||
|
||||
# zadanie 3
|
||||
m = -5
|
||||
# P(X < 2) = 0.95
|
||||
U = qnorm(0.95)
|
||||
sig = (-2 - m) / U
|
||||
pnorm(0, m, sig, F)
|
||||
|
||||
# zadanie 4
|
||||
X = 0.7
|
||||
U = qnorm(1 - 0.4)
|
||||
m = 0.46
|
||||
|
||||
sigma = (0.5 - m) / U
|
||||
pnorm(X, m, sigma, F)
|
||||
qnorm(0.1, m, sigma, F)
|
||||
|
||||
# zadanie 5
|
||||
sigma = 0.12
|
||||
# P(X > 0.8) = 3/12
|
||||
U = qnorm(3/12, lower.tail = FALSE)
|
||||
X = 0.8
|
||||
m = X - U * sigma
|
||||
qnorm(0.1, m, sigma, F)
|
||||
|
||||
# zadanie 6
|
||||
m = 86.5
|
||||
X = 90.5
|
||||
U = qnorm((0.3472 /2) + 0.5)
|
||||
# P(82.5 < X < 90.5) = 0.3472
|
||||
sigma = (X - m) / U
|
||||
round(pnorm(95, m, sigma, F) * 400)
|
||||
|
||||
# === Lista 5 ===
|
||||
|
||||
# zadanie 1
|
||||
# qnorm(3/10) = 5281.21
|
||||
# qnorm(3/4) = 9090.90
|
||||
|
||||
A = matrix(c(1, 1, qnorm(3/10), qnorm(3/4)), 2, 2)
|
||||
B = c(5281.21, 9090.9)
|
||||
wynik = solve(A, B)
|
||||
m = wynik[1]
|
||||
sigma = wynik[2]
|
||||
|
||||
#a)
|
||||
# P(X > 7800)
|
||||
pnorm(7800, m, sigma, F) * 100
|
||||
|
||||
# b)
|
||||
round(qnorm(0.15, m, sigma), 2)
|
||||
|
||||
# zadanie 2
|
||||
# qnorm(0.2) < 2
|
||||
A = matrix(c(1, 1, qnorm(0.2, lower.tail = FALSE), qnorm(0.44)), 2, 2)
|
||||
B = c(120, 90)
|
||||
wynik = solve(A, B)
|
||||
m = wynik[1]
|
||||
sigma = wynik[2]
|
||||
|
||||
# a)
|
||||
pnorm(45, m, sigma)
|
||||
|
||||
# b)
|
||||
qnorm(0.13, m, sigma, F)
|
||||
|
||||
# zadanie 3
|
||||
m = 165.5
|
||||
# 155 < qnorm(0.93) < 176
|
||||
U = qnorm(0.93 / 2 + 0.5)
|
||||
X = 176
|
||||
sigma = (X - m) / U
|
||||
|
||||
round(pnorm(170, m, sigma, F) * 500)
|
||||
|
||||
# zadanie 4
|
||||
# qnorm(0.9, lower.tail = False) = 1/12
|
||||
# qnorm(0.5) = 2/12
|
||||
A = matrix(c(1, 1, qnorm(1/12, lower.tail = FALSE), qnorm(2/12)), 2, 2)
|
||||
B = c(90, 50)
|
||||
wynik = solve(A, B)
|
||||
m = wynik[1]
|
||||
sigma = wynik[2]
|
||||
|
||||
qnorm(0.1, m, sigma, F)
|
||||
|
||||
# zadanie 5
|
||||
m = 4001.5
|
||||
# 3503 < P(X) < 4500
|
||||
X = 3503
|
||||
U = qnorm((1 - 0.15) / 2)
|
||||
sigma = (X - m) / U
|
||||
|
||||
qnorm(0.25, m, sigma, F)
|
||||
|
||||
|
||||
# zadanie 6
|
||||
# qnorm(2/524) = 17
|
||||
# qnorm(7/524, F) = 70
|
||||
A = matrix(c(1, 1, qnorm(2/524), qnorm(7/524, lower.tail = FALSE)), 2, 2)
|
||||
B = c(17, 70)
|
||||
wynik = solve(A, B)
|
||||
m = wynik[1]
|
||||
sigma = wynik[2]
|
||||
|
||||
pnorm(55, m, sigma) - pnorm(45, m, sigma)
|
||||
|
||||
# === Lista 6 ===
|
||||
n = 2000
|
||||
p = 0.002
|
||||
q = 1 - p
|
||||
|
||||
sum(dbinom(6:12, n, p))
|
||||
if (n >= 50 & n * p <= 10) {
|
||||
sum(dpois(6:12, n * p))
|
||||
}
|
||||
|
||||
p = q
|
||||
q = 0.002
|
||||
|
||||
sum(dbinom(1992:2000, n, p))
|
||||
pnorm(1992, n * p, sqrt(n * p * q), F)
|
||||
|
||||
|
||||
201
uczelnia/2_semestr/matematyka_stosowana/laby/cz1/powtórka.R
Normal file
201
uczelnia/2_semestr/matematyka_stosowana/laby/cz1/powtórka.R
Normal file
@@ -0,0 +1,201 @@
|
||||
# układ równań
|
||||
|
||||
A = matrix(c(-9, 15, -14, -1, 13, 5, 18, 6, 8, 12, 10, -4, -1, 5, 8, 12), 4, 4)
|
||||
B = c(4, 298, 294, 120)
|
||||
solve(A, B)
|
||||
|
||||
solve(A)
|
||||
solve(A)[1, 4]
|
||||
|
||||
# wektory
|
||||
|
||||
## Skonstruować wektor w trzecich potęg wielokrotności liczby 7 od 21 do 29903
|
||||
## następnie zliczyć, ile wśród elementów tego wektora jest liczb, których dwie ostatnie cyfry to
|
||||
## 23.
|
||||
w = seq(21, 29903, 7)^3
|
||||
summary.factor(w %% 100 == 23)
|
||||
|
||||
|
||||
## Skonstruować wektor w kwadratów liczb od 1 do 100 a następnie zliczyć, które
|
||||
## cyfry oraz jak często występują na pozycji jedności w wyznaczonych kwadratach (użyć operatora modulo, funkcji summary oraz typu factor). Ile wśród kwadratów liczb od 1 do 100 jest
|
||||
## podzielnych przez 2, przez 3 oraz przez 2 i 3?
|
||||
|
||||
w = (1:100)^2
|
||||
summary.factor(w %% 2 == 0)
|
||||
summary.factor(w %% 3 == 0)
|
||||
summary.factor(w %% 3 == 0 & w %% 2 == 0)
|
||||
|
||||
# dwumianowy i geom | lista 2
|
||||
|
||||
# zad 1
|
||||
|
||||
# P(X = 2)
|
||||
dbinom(2, 4, 1/3)
|
||||
# P(X < 2)
|
||||
pbinom(1, 4, 1/3)
|
||||
# P(X > 2)
|
||||
pbinom(2, 4, 1/3, F)
|
||||
|
||||
|
||||
# zad 2
|
||||
prob = 0.02
|
||||
dgeom(3, prob)
|
||||
|
||||
pgeom(2, prob)
|
||||
|
||||
# zad 3
|
||||
size = 100
|
||||
prob = 0.01
|
||||
# P(X = 2)
|
||||
dbinom(2, size, prob)
|
||||
dpois(2, size * prob)
|
||||
|
||||
# P(2 < X < 6)
|
||||
sum(dbinom(2:6, size, prob))
|
||||
|
||||
pbinom(3, size, prob, F)
|
||||
|
||||
# zad 4
|
||||
dbinom(2, 4, 1/7)
|
||||
|
||||
dbinom(3, 5, 1/2) > dbinom(2, 3, 1/2)
|
||||
|
||||
# kwantyle
|
||||
qnorm(0.97)
|
||||
qchisq(0.975, 9)
|
||||
qt(0.95, 9)
|
||||
qf(0.995, 10, 23)
|
||||
|
||||
|
||||
# zad 2
|
||||
# d)
|
||||
# |x - 2| < 3
|
||||
# x - 2 < 3 || x - 2 > -3
|
||||
# x < 5 || x > -1
|
||||
pnorm(5, 1.5, 2) - pnorm(-1, 1.5, 2)
|
||||
|
||||
|
||||
# e)
|
||||
# |x| > 0.5
|
||||
# x > 0.5 || x < -0.5
|
||||
pnorm(-0.5, 1.5 ,2) + pnorm(0.5, 1.5, 2, F)
|
||||
|
||||
# f)
|
||||
# -1 < 2x - 1 < 1
|
||||
# 0 < 2x < 2
|
||||
# 0 < x < 1
|
||||
pnorm(1, 1.5, 2) - pnorm(0, 1.5, 2)
|
||||
|
||||
# g)
|
||||
# 3x - 1 > 2 || 3x -1 < -2
|
||||
# 3x > 3 || 3x < -1
|
||||
# x > 1 || 3 < -1/3
|
||||
pnorm(-1/3, 1.5, 2) + pnorm(1, 1.5, 2, F)
|
||||
|
||||
# zad 3
|
||||
# 5x - 1 > 2.5 || 5x -1 < -2.5
|
||||
# 5x > 3.5 || 5x < -1.5
|
||||
pnorm(-1.5/5, -4, 3.5) + pnorm(3.5/5, -4, 3.5, F)
|
||||
|
||||
# 4x - 2 <= 5.5 || 4x -2 >= -5.5
|
||||
# -5.5 < 4x - 2 < 5.5
|
||||
# -3.5 < 4x < 7.5
|
||||
pnorm(7.5/4, -4, 3.5) - pnorm(-3.5/4, -4, 3.5)
|
||||
|
||||
# zad 4
|
||||
# P(X < 900)
|
||||
round(pnorm(900, 1000, 50) * 4000)
|
||||
qnorm(0.13, 1000, 50, F)
|
||||
|
||||
# zad 5
|
||||
round(pnorm(7.1, 6.8, 0.3) * 30)
|
||||
qnorm(0.15, 6.8, 0.3)
|
||||
|
||||
# zad 6
|
||||
# 22:05 < X < 22:10
|
||||
# 22 * 5/60 < X < 22 * 10/60
|
||||
pnorm(22 * 1/6 * 60, 15, 13) - pnorm(22 * 5/60 * 60, 15, 13)
|
||||
|
||||
pnorm(22, 15, 13, F)
|
||||
|
||||
# standaryzacja rozkładu normalnego
|
||||
# zad 1
|
||||
# P(X > 5) = 70/200
|
||||
sigma = 1
|
||||
m = 5 - sigma * qnorm(70/200, lower.tail = FALSE)
|
||||
round(pnorm(6, m, sigma) - pnorm(3, m, sigma), 4)
|
||||
|
||||
# P(X < 6) = 0.8
|
||||
sigma = sqrt(4)
|
||||
m = 6 - sigma * qnorm(0.8)
|
||||
round(pnorm(6, m, sigma) - pnorm(3, m, sigma) ,4)
|
||||
|
||||
# zad 2
|
||||
m = 5.2
|
||||
U = qnorm(0.121)
|
||||
sigma = (3 - m)/U
|
||||
qnorm(0.8, m, sigma)
|
||||
|
||||
# zad 3
|
||||
m = -5
|
||||
X = -2
|
||||
U = qnorm(0.95)
|
||||
sigma = (X - m)/U
|
||||
pnorm(0, m, sigma, F)
|
||||
|
||||
# zad 4
|
||||
m = 0.46
|
||||
X = 0.5
|
||||
U = qnorm(0.6)
|
||||
sigma = (X - m)/U
|
||||
pnorm(0.7, m, sigma, F)
|
||||
|
||||
# zad 1
|
||||
A = matrix(c(1, 1, qnorm(3/10), qnorm(3/4)), 2, 2)
|
||||
B = c(5281.21, 9090.9)
|
||||
wynik = solve(A, B)
|
||||
m = wynik[1]
|
||||
sigma = wynik[2]
|
||||
|
||||
pnorm(7800, m, sigma, F) * 100
|
||||
qnorm(0.15, m, sigma)
|
||||
|
||||
|
||||
# zad 3
|
||||
m = 165.5
|
||||
# 155 < X < 176
|
||||
U = qnorm((1 - 0.93)/2)
|
||||
sigma = (155 - m)/U
|
||||
round(pnorm(170, m, sigma, F) * 100)
|
||||
|
||||
# zad 4
|
||||
A = matrix(c(1, 1, qnorm(1/12, lower.tail = FALSE), qnorm(2/12)), 2, 2)
|
||||
B = c(0.9, 0.5)
|
||||
wynik = solve(A, B)
|
||||
m = wynik[1]
|
||||
sigma = wynik[2]
|
||||
qnorm(0.1, m, sigma, F)
|
||||
|
||||
A = matrix(c(1, 1, qnorm(11/12), qnorm(2/12)), 2, 2)
|
||||
B = c(0.9, 0.5)
|
||||
wynik = solve(A, B)
|
||||
m = wynik[1]
|
||||
sigma = wynik[2]
|
||||
|
||||
qnorm(0.1, m, sig, F)
|
||||
|
||||
# zadanie 2 lista 6
|
||||
n = 2000
|
||||
p = 0.002
|
||||
q = 1 - p
|
||||
|
||||
sum(dbinom(6:12, n, p))
|
||||
if (n >= 50 & p < 10) {
|
||||
print("Rozkład poissona")
|
||||
sum(dpois(6:12, n * p))
|
||||
} else {
|
||||
print("Nie można użyć rozkładu poissona")
|
||||
}
|
||||
|
||||
|
||||
|
||||
BIN
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/ankieta.RData
Normal file
BIN
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/ankieta.RData
Normal file
Binary file not shown.
BIN
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab8.RData
Normal file
BIN
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab8.RData
Normal file
Binary file not shown.
167
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_10.R
Normal file
167
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_10.R
Normal file
@@ -0,0 +1,167 @@
|
||||
# zadanie 1
|
||||
|
||||
# Próby niezależne
|
||||
|
||||
# a)
|
||||
|
||||
# założenie 1: normalność rozkładów
|
||||
|
||||
# h0 – rozkład średnich ocen w populacji studentek jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
# h0' – rozkład średnich ocen w populacji studentów jest normalny
|
||||
# h1' – ~h0'
|
||||
|
||||
by(Ankieta$Średnia, Ankieta$Płeć, shapiro.test)
|
||||
|
||||
# dla kobiet: W = 0.97625, p-value = 0.942
|
||||
# dla mężczyzn: W = 0.97148, p-value = 0.1578
|
||||
# aplha = 0.01
|
||||
|
||||
# w obu przypadka alpha < p-value
|
||||
# brak podstaw do odrzucenia h0 i h0'
|
||||
|
||||
# b)
|
||||
|
||||
# h0 – jednorodność wariancji sigma.k^2 = sigma.m^2
|
||||
# h1 – ~h0
|
||||
|
||||
var.test(Ankieta$Średnia ~ Ankieta$Płeć)
|
||||
# F = 0.40623, num df = 9, denom df = 61, p-value = 0.1459
|
||||
# alpha = 0.01
|
||||
|
||||
# Wniosek: brak podstaw do odrzucenia h0
|
||||
# będziemy stosować test bez poprawki welcha
|
||||
|
||||
# c)
|
||||
|
||||
# h0 – m.kobiet = m.mężczyzn
|
||||
# h1 – m.kobiet > m.mężczyzn
|
||||
|
||||
|
||||
t.test(Ankieta$Średnia ~ Ankieta$Płeć, alternative = 'g', var.equal = TRUE)
|
||||
# t = -0.49177, df = 70, p-value = 0.6878
|
||||
# alpha = 0.01
|
||||
|
||||
# Wniosek: Na poziomie istotności 0.01 nie ma podstaw do odrzucenia hipotezy h0, zatem wyniki próby nie potwierdzają przypuszczenia, że średnie oceny studentek są wyższe niż studentów studiujących na I roku WI na ZUT w Szczecinie w tym roku akademickim.
|
||||
|
||||
|
||||
|
||||
# Zadanie 2
|
||||
# alpha = 0.05
|
||||
|
||||
# Test dla dwóch wskaźników struktury
|
||||
|
||||
# grupy:
|
||||
# 1 – grupa mieszkających z rodziną
|
||||
# 2 – grupa mieszkających poza domem rodzinnym
|
||||
|
||||
# wyróżniona cecha: absolewnci TI
|
||||
|
||||
# Hipotezy:
|
||||
# h0 – p1 = p2
|
||||
# h1 – p1 < p2
|
||||
|
||||
table(Ankieta$M.zamieszkania, Ankieta$Sz.średnia)
|
||||
prop.test(c(15, 20), c(32, 40), alternative = 'l')
|
||||
# X-squared = 0.00069498, df = 1, p-value = 0.4895
|
||||
# aplha = 0.05
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 nie można odrzucić hipotezy h0. Zatem odsetki osób, które ukończyły TI nie różnią się istotnie dla mieszkających podczas studiowania z rodziną oraz dla mieszkających poza domem rodzinnym.
|
||||
|
||||
# Zadanie 3
|
||||
|
||||
# próby zależne
|
||||
|
||||
# alpha = 0.01
|
||||
|
||||
# założenie: normalność różnicy zmiennych
|
||||
# h0 – rozkład różnicy zmiennych jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
x1 = c(225, 236, 312, 238, 241, 196, 205, 259, 218)
|
||||
x2 = c(216, 195, 245, 235, 221, 170, 180, 265, 179)
|
||||
|
||||
shapiro.test(x1 - x2)
|
||||
# W = 0.96898, p-value = 0.8858
|
||||
|
||||
# Wniosek: brak podstaw do odrzucenia h0
|
||||
|
||||
|
||||
# test studenta dla dwóch średnich – próby zależne
|
||||
# h0 – m1 - m2 = 0
|
||||
# h1 – m1 - m2 > 0
|
||||
t.test(x1, x2, paired = T, alternative = 'g')
|
||||
# t = 3.3633, df = 8, p-value = 0.004942
|
||||
|
||||
# Wniosek: na poziomie isotności 0.01 odrzucamy h0 i przyjmujemy h1, zatem leczenie statynami istotnie wpływa na obniżenie poziomu cholesterolu.
|
||||
|
||||
# Zadanie 4
|
||||
# normalność rozkładów -> jednorodność wariancji -> właściwy test
|
||||
|
||||
# aplha = 0.01
|
||||
|
||||
# założenie 1: normalność rozkładów
|
||||
# h0 – średni wzrost w populacji studentek jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
# h0' – średni wzrost w populacji studentów jest normalny
|
||||
# h1 – ~h0'
|
||||
by(Ankieta$Wzrost, Ankieta$Płeć, shapiro.test)
|
||||
# dla kobiet: W = 0.95432, p-value = 0.7197
|
||||
# dla mężczyzn: W = 0.9598, p-value = 0.04048
|
||||
|
||||
# brak podstaw do odrzucenia h0 i h0'
|
||||
|
||||
# założenie 2: jednorodność wariancji
|
||||
# h0 – jednorodność wariancji k.sigma^2 = m.sigma^2
|
||||
# h1 – ~h0
|
||||
var.test(Ankieta$Wzrost ~ Ankieta$Płeć)
|
||||
# F = 1.2842, num df = 9, denom df = 61, p-value = 0.528
|
||||
# brak podstaw do odrzucenia h0
|
||||
# będziemy stosować test bez poprawki welcha
|
||||
|
||||
# h0 – m.kobiet = m.mężczyzn
|
||||
# h1 – m.kobiet ≠ m.mężczyzn
|
||||
t.test(Ankieta$Wzrost ~ Ankieta$Płeć, alternative = 'two.sided', var.equal = T)
|
||||
# t = -5.2844, df = 70, p-value = 1.36e-06
|
||||
|
||||
# Na poziomie istotności 0.01 odrzucamy h0 i przyjmujemy h1.
|
||||
|
||||
# zadanie 5
|
||||
# wskaźnik struktury, grupująca jest płeć
|
||||
|
||||
# zadanie 7
|
||||
|
||||
|
||||
# zadanie 8
|
||||
# alpha = 0.02
|
||||
|
||||
# założenie 1: normalność rozkładu
|
||||
# h0 – rozkład średnich ocen w grupie posiadającej rodzeństwo jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
# h0' – rozkład średnich ocen w grupie nieposiadającej rodzeństwa jest normalny
|
||||
# h1' – ~h0'
|
||||
|
||||
by(Ankieta$Średnia, Ankieta$Rodzeństwo, shapiro.test)
|
||||
# nieposiadający rodzeństwa: W = 0.93477, p-value = 0.3929
|
||||
# posiadający rodzeństwo: W = 0.97486, p-value = 0.26
|
||||
|
||||
# brak podstaw do odrzucenia h0 i h0'
|
||||
|
||||
# założenie 2: jednorodność wariancji
|
||||
# h0 – jednorodność wariancji n.sigma^2 = t.sigma^2
|
||||
# h1 – ~h0
|
||||
var.test(Ankieta$Średnia ~ Ankieta$Rodzeństwo)
|
||||
# F = 0.80082, num df = 12, denom df = 58, p-value = 0.704
|
||||
|
||||
# brak podstaw do odrzucenia h0
|
||||
# test bez poprawki welcha
|
||||
|
||||
# h0 – m.z_rodzeństwem = m.bez_rodzeństwa
|
||||
# h1 – m.z_rodzeństwem ≠ m.bez_rodzeństwa
|
||||
t.test(Ankieta$Średnia ~ Ankieta$Rodzeństwo, alternative = 'two.sided', var.equal = T)
|
||||
# t = -0.61915, df = 70, p-value = 0.5378
|
||||
|
||||
# wniosek: na poziomie istotności 0.02 brak podstaw do odrzucenia h0, że średnia ocen osób posiadających rodzeństwo nie różni istotnie od średniej osób nieposiadających rodzieństwa w badanej grupie.
|
||||
178
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_11.R
Normal file
178
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_11.R
Normal file
@@ -0,0 +1,178 @@
|
||||
# zadanie 1
|
||||
|
||||
# zmienna mierzalna
|
||||
plony = c(2.6, 2.4, 2, 1.8, 2.2, 1.5, 1.5, 1.4, 1.2, 1.5, 1.2, 1.5, 0.8, 1)
|
||||
# zmienna grupująca
|
||||
kombinacje = c(rep('1', 5), rep('2', 4), rep('3', 5))
|
||||
|
||||
## Normalność rozkładów
|
||||
|
||||
### (wariant skrócony)
|
||||
by(plony, kombinacje, shapiro.test)
|
||||
# kombinacja 1: W = 0.98676, p-value = 0.9672
|
||||
# kombinacja 2: W = 0.82743, p-value = 0.1612
|
||||
# kombinacja 3: W = 0.90345, p-value = 0.4292
|
||||
|
||||
# Brak podstaw do odrzucenia hipotez zerowych
|
||||
|
||||
## Jednorodność wariancji
|
||||
# h0: sigma^2 = (sigma.2)^2 = (sigma.3)^2
|
||||
# h1: ~h0
|
||||
bartlett.test(plony ~ kombinacje)
|
||||
# Bartlett's K-squared = 1.8396, df = 2, p-value= 0.3986
|
||||
|
||||
# alpha < p-value – Brak podstaw do odrzucenia h0
|
||||
|
||||
## Test anova
|
||||
# h0: m.1 = m.2 = m.3 (brak wpływu)
|
||||
# h1: ~h0 (istotny wpływ)
|
||||
|
||||
anova(aov(plony ~ kombinacje))
|
||||
|
||||
# Response: plony
|
||||
# Df Sum Sq Mean Sq F value Pr(>F)
|
||||
# kombinacje 2 2.7571 1.37857 18.053 0.0003356 ***
|
||||
# Residuals 11 0.8400 0.07636
|
||||
|
||||
# F: 18.053 p-value: 0.0003356
|
||||
|
||||
# Odrzucamy h0, przyjmujemy h1, nawóz ma istotny wpływ
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1, zatem nawożenie istotnie wpływa na plony rzepaku jarego.
|
||||
|
||||
|
||||
# Zadanie 2
|
||||
|
||||
# Jedna próba
|
||||
|
||||
## Test normalności rozkładu
|
||||
|
||||
# wariant skrócony
|
||||
|
||||
shapiro.test(Ankieta.M$Waga)
|
||||
# W = 0.94653, p-value = 0.009113
|
||||
|
||||
# Odrzucamy h0
|
||||
|
||||
# Test nieparametryczny Wilcoxona
|
||||
# h0: mediana = 70
|
||||
# h1: mediana > 70
|
||||
wilcox.test(Ankieta.M$Waga, mu = 70, alternative = 'g')
|
||||
# V = 1129.5, p-value = 0.008091
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1. Zatem mediana wagi populacji mężczyzn studiujących na I roku WI ZUT w Szczecinie jest istotnie większa od 70kg.
|
||||
|
||||
|
||||
# Zadanie 3
|
||||
|
||||
# Dwie niezależne próby
|
||||
|
||||
utargi = c(7.6, 12.0, 7.3, 11.3, 7.0, 10.8, 6.5, 8.1, 3.2, 8.7, 8.8, 11.7, 12.7, 18.5, 3.3, 6.7, 8.6, 6.9, 3.8, 3.7) # zmienna mierzalna
|
||||
miasta = c(rep('A', 13), rep('B', 7)) # zmienna grupująca
|
||||
|
||||
## Normalność rozkładu
|
||||
# wariant skrócony
|
||||
by(utargi, miasta, shapiro.test)
|
||||
# Miasto A: W = 0.94565, p-value = 0.5341
|
||||
# Brak podstaw do odrzucenia h0
|
||||
|
||||
# Miasto B: W = 0.76886, p-value = 0.01989
|
||||
# Odrzucamy h0
|
||||
|
||||
# Wniosek: odrzucamy hipotezę, że rozkład miesięcznego utargu w mieście B jest zgodny z rozkładem normalnym.
|
||||
|
||||
## Test nieparametryczny wilcoxona
|
||||
# h0: mediana.A = mediana.B
|
||||
# h1: mediana.A > mediana.B
|
||||
|
||||
wilcox.test(utargi ~ miasta, alternative = 'g')
|
||||
# W = 65, p-value = 0.0674
|
||||
# brak podstaw do odrzucenia h0
|
||||
|
||||
# Wniosek: Na poziomie istotności 0.05 nie ma podstaw by odrzucić hipotezę h0. Mediany utargów w mieście A i B nie różnią się istotnie.
|
||||
|
||||
# Zadanie 4
|
||||
|
||||
# Dwie zależne próby
|
||||
x1 = c(85, 122, 162, 206, 121, 250, 200, 156)
|
||||
x2 = c(87, 82, 158, 96, 131, 121, 194, 130)
|
||||
|
||||
## Normalność rozkładu różnicy zmiennych
|
||||
# wariant skrócony
|
||||
shapiro.test(x1 - x2)
|
||||
# W = 0.81838, p-value = 0.04487
|
||||
|
||||
# Wniosek: odrzucamy h0
|
||||
|
||||
## Test nieparametryczny Wilcoxona: próby zależne
|
||||
# h0: mediana1 - mediana2 = 0
|
||||
# h1: mediana1 - mediana2 > 0
|
||||
|
||||
wilcox.test(x1, x2, paired = T, alternative = 'g')
|
||||
# V = 31, p-value = 0.03906
|
||||
|
||||
# Odrzucamy h0 i przyjmujemy h1
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1, zatem trening istotnie wpływa na skrócenie czasu potrzebnego myszom na wyjście z labiryntu.
|
||||
|
||||
|
||||
# Zadanie 5
|
||||
frewkencja = c(32.5, 40.8, 41.7, 41.2, 37.9, 38.3, 42, 39.8, 43.1, 42.6, 38.9, 43.1, 40.4, 41.8, 42, 39, 43.7, 40, 39.7, 43, 43.1, 43.9, 44.2, 45.2, 44.6, 42.5, 43.4, 44.8, 42.8, 43.1, 44.8, 45)
|
||||
miasta = c(rep('Wroclaw', 10), rep('Warszawa', 11), rep('Krakow', 11))
|
||||
# alhpa = 0.05
|
||||
# 3 próby
|
||||
|
||||
## Jednorodność wariancji
|
||||
# h0: sigma^2 = (sigma.2)^2 = (sigma.3)^2
|
||||
# h1: ~h0
|
||||
bartlett.test(frewkencja ~ miasta)
|
||||
# Bartlett's K-squared = 11.774, df = 2, p-value = 0.002775
|
||||
# aplha > p-value
|
||||
# odrzucamy h0, przyjmujemy h1
|
||||
|
||||
# h0: mediana.1 = mediana.2 = mediana.3
|
||||
# h1: ~h0
|
||||
kruskal.test(frewkencja ~ miasta)
|
||||
|
||||
# Kruskal-Wallis chi-squared = 16.791, df = 2, p-value = 0.0002259
|
||||
# alpha > p-value
|
||||
# odrzucamy h0 i przyjmujemy h1
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1, zatem frekwencja w wyborach prezydenckich dla wszystkich tych miast nie jest taka sama.
|
||||
|
||||
|
||||
# Zadanie 8
|
||||
# 3 próby
|
||||
|
||||
# alpha = 0.01
|
||||
|
||||
## Test normalności
|
||||
# wariant skrócony
|
||||
|
||||
by(Ankieta$L.godzin, Ankieta$M.zamieszkania, shapiro.test)
|
||||
# akademik: W = 0.96227, p-value = 0.5107
|
||||
# mieszkanie z rodziną: W = 0.98145, p-value = 0.8405
|
||||
# stancja lub inne: W = 0.95429, p-value = 0.5278
|
||||
|
||||
# W każdej próbce brak podstaw do odrzucenia h0
|
||||
|
||||
## Test jednorodności wariancji
|
||||
# h0: sigma.0^2 = (sigma.1)^2 = (sigma.2)^2
|
||||
# h1: ~h0
|
||||
|
||||
bartlett.test(Ankieta$L.godzin ~ Ankieta$M.zamieszkania)
|
||||
# Bartlett's K-squared = 0.47545, df = 2, p-value = 0.7884
|
||||
|
||||
# alpha < p-value
|
||||
# brak podstaw do odrzucenia h0, zatem wariancje są jednorodne
|
||||
|
||||
|
||||
# h0: m0 = m1 = m2 (brak wpływu)
|
||||
# h1: ~h0 (istotny wpływ)
|
||||
|
||||
anova(aov(Ankieta$L.godzin ~ Ankieta$M.zamieszkania))
|
||||
# F - 0.5896 p-value 0.5573
|
||||
# alpha < 0.5573
|
||||
# brak podstaw do odrzucenia h0
|
||||
|
||||
# Wniosek: Na poziomie istotności 0.01 nie ma podstaw do odrzucenia h0, zatem liczba godzin spędzonych przed komputerem w ciągu doby w popuplacji studentów pierwszego roku WI ZUT w Szczecinie w tym roku akademickim nie zależy od miejsca zamieszkania.
|
||||
66
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_7.R
Normal file
66
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_7.R
Normal file
@@ -0,0 +1,66 @@
|
||||
# a)
|
||||
|
||||
summary(Ankieta$Płeć)
|
||||
# Length Class Mode
|
||||
# 72 character character
|
||||
|
||||
Ankieta$Płeć = factor(Ankieta$Płeć) # ustawiamy płeć na typ kategorialny
|
||||
# robimy to samo dla pozostałych niemierzalnych cech
|
||||
Ankieta$Sysytem = factor(Ankieta$System)
|
||||
Ankieta$M.zamieszkania = factor(Ankieta$M.zamieszkania)
|
||||
Ankieta$Sz.średnia = factor(Ankieta$Sz.średnia)
|
||||
Ankieta$Rodzeństwo = factor(Ankieta$Rodzeństwo)
|
||||
|
||||
summary(Ankieta$Płeć)
|
||||
|
||||
# b)
|
||||
Ankieta$Średnia = round(((Ankieta$Algebra * 5 + Ankieta$Fizyka * 5 + Ankieta$Programowanie1 * 5 + Ankieta$MSzS1 * 5 + Ankieta$Algorytmy1 * 6 + Ankieta$WdI * 4) / 30), 2);
|
||||
|
||||
# c)
|
||||
Ankieta.kursy = subset(Ankieta, select = c(Algebra, Fizyka, Programowanie1, WdI, MSzS1, Algorytmy1))
|
||||
|
||||
# d)
|
||||
Ankieta$Waga.dag = Ankieta$Waga * 100
|
||||
|
||||
# e)
|
||||
Ankieta$Waga.dag = NULL;
|
||||
|
||||
# f)
|
||||
ggplot(Ankieta, aes(x=Płeć, y=Wzrost))+geom_boxplot(fill='red', col='blue')
|
||||
ggplot(Ankieta, aes(x=Płeć, y=Waga))+geom_boxplot(fill='red', col='blue')
|
||||
|
||||
# g)
|
||||
zakres3sigm = function(x) {
|
||||
data.frame(lewy.kres=mean(x) - 3 * sd(x), prawy.kres=mean(x) + 3 * sd(x))
|
||||
}
|
||||
|
||||
zakres3sigm(Ankieta$Wzrost)
|
||||
|
||||
# h)
|
||||
Ankieta.M = subset(Ankieta, Płeć == 'M')
|
||||
Ankieta.K = subset(Ankieta, Płeć == 'K')
|
||||
|
||||
# i)
|
||||
|
||||
# === K ===
|
||||
zakres3sigm(Ankieta.K$Wzrost)
|
||||
summary(Ankieta.K$Wzrost)
|
||||
|
||||
zakres3sigm(Ankieta.K$Waga)
|
||||
summary(Ankieta.K$Waga)
|
||||
|
||||
# === M ===
|
||||
zakres3sigm(Ankieta.M$Wzrost)
|
||||
summary(Ankieta.M$Wzrost)
|
||||
|
||||
zakres3sigm(Ankieta.M$Waga)
|
||||
summary(Ankieta.M$Waga)
|
||||
|
||||
which(Ankieta.M$Waga > 126)
|
||||
Ankieta.M$Waga[28] = round(mean(Ankieta.M$Waga[-28]), 1)
|
||||
|
||||
i = which(Ankieta$Waga > 126)
|
||||
Ankieta$Waga[i] = round(mean(Ankieta.M$Waga[-28]), 1)
|
||||
|
||||
# j)
|
||||
|
||||
84
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_8.R
Normal file
84
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_8.R
Normal file
@@ -0,0 +1,84 @@
|
||||
# zadanie 1
|
||||
|
||||
p.opisowe = function(wektor) {
|
||||
library(moments)
|
||||
srednia = round(mean(wektor), 2)
|
||||
mediana = round(median(wektor), 2)
|
||||
kwartyl_dolny = round(quantile(wektor, 1/4), 2)
|
||||
kwartyl_gorny = round(quantile(wektor, 3/4), 2)
|
||||
minimum = round(min(wektor), 2)
|
||||
maximum = round(max(wektor), 2)
|
||||
odchylenie = round(sd(wektor), 2)
|
||||
rozstep_empiryczny = round(max(wektor) - min(wektor), 2)
|
||||
rozstep_kwartylowy = round(IQR(wektor), 2)
|
||||
wspolczynnik_zmiennosci = round(sd(wektor)/mean(wektor) * 100, 2)
|
||||
skosnosc = round(skewness(wektor), 2)
|
||||
kurtoza = round(kurtosis(wektor), 2)
|
||||
|
||||
rbind(srednia, mediana, kwartyl_dolny, kwartyl_gorny, minimum, maximum, odchylenie, rozstep_empiryczny, rozstep_kwartylowy, wspolczynnik_zmiennosci, skosnosc, kurtoza)
|
||||
}
|
||||
|
||||
|
||||
|
||||
# zadanie 2
|
||||
# współczynnik zmienności
|
||||
# |V| <= 10% – słaba zmienność
|
||||
# 10% < |V| <= 50% – umiarkowana zmienność
|
||||
# |V| > 50% – duża zmienność
|
||||
|
||||
# skośność (współczynnik asymetrii)
|
||||
# |G| <= 0.5 – słaba
|
||||
# 0.5 < |G| < 1 – umiarkowana
|
||||
# |G| > 1 – duża silna asymetria
|
||||
|
||||
# G < 0 – lewostronna
|
||||
# G > 0 – prawostronna
|
||||
# G = 0 – symetria (prawie się nie zdarza)
|
||||
|
||||
# kurtoza (współczynnik skupienia/spłaczszczenia)
|
||||
# K = 3 – rozkład normalny
|
||||
# K < 3 – niższe skupienie niż w rozkładzie normalnym
|
||||
# K > 3 – wyższe skupienie niż w rozkładzie normalnym
|
||||
|
||||
|
||||
# a)
|
||||
p.opisowe(Ankieta$Wzrost)
|
||||
# kwartyl_dolny 174.00 – wzrost 25% mężczyzn nie przekroczył 174
|
||||
# odchylenie 7.16 – wzrost mężczyzn odchylał się od średniej wzrostu przeciętnie o około 7.16
|
||||
# wspolczynnik_zmiennosci 3.98 – udział odchylenia standardowego wzrostu w wartości średniej wynosi 3.98 co świadczy o tym, że mężczyźni są słabo zróżnicowani pod względem wzrostu
|
||||
# skosnosc 0.20 – rozkład wzrostu mężczyzn charakteryzuje się słabą asymetrią prawostronną
|
||||
|
||||
# b)
|
||||
p.opisowe(Ankieta$Średnia)
|
||||
# mediana 3.80 – średnia 50% studentów w badanej grupie nie przekroczyla 3.80
|
||||
# kwartyl_gorny 4.24 – średnia 75% studentów w badanej grupie nie przekroczyla 4.24
|
||||
|
||||
# c)
|
||||
p.opisowe(Ankieta$L.godzin)
|
||||
# srednia 7.07 czas spędzany przy komputerze w badanej grupie skupiał się wokół wartości 7.07
|
||||
# kurtoza 2.55 rozklad czasu spędzanego przy komputerze w badanej grupie charakteryzuje się niższym skupieniem wokół średniej wagi niż w rozkładzie normalnym.
|
||||
|
||||
# zadanie 3
|
||||
|
||||
przedzial.odchylenie = function(x, uf) {
|
||||
# 1 - a = uf
|
||||
# a = 1 - uf
|
||||
a = 1 - uf
|
||||
n = length(x)
|
||||
ss_z_daszkiem = var(x)
|
||||
# s^2 = (n - 1)/n * ss_z_daszkiem
|
||||
ss = (n - 1)/n * ss_z_daszkiem
|
||||
|
||||
dolna = sqrt((n * ss) / qchisq(1 - (a / 2), n - 1))
|
||||
gorna = sqrt((n * ss) / qchisq(a / 2, n - 1))
|
||||
round(cbind(dolna, gorna), 4)
|
||||
}
|
||||
|
||||
przedzial.odchylenie(Ankieta.M$Wzrost, 0.95)
|
||||
|
||||
# zadanie 4
|
||||
# a)
|
||||
ggplot(data.frame(x=c(-4, 4)), aes(x))+ylab('Gęstość rozkładu studenta')+ stat_function(fun=dt, args=1, col='red', size=1) + stat_function(fun=dt, args=2, col='pink', size=1) + stat_function(fun=dt, args=10, col='green', size=1) + stat_function(fun=dt, args=50, col='blue', size=1)
|
||||
|
||||
# b)
|
||||
ggplot(data.frame(x=c(-1, 100)), aes(x))+ylab('Gęstość rozkładu chi kwadrat') + stat_function(fun=dchisq, args=5, col='red', size=1) + stat_function(fun=dchisq, args=10, col='blue', size=1) + stat_function(fun=dchisq, args=20, col='green', size=1) + stat_function(fun=dchisq, args=50, col='pink', size=1)
|
||||
122
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_9.R
Normal file
122
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/lab_9.R
Normal file
@@ -0,0 +1,122 @@
|
||||
# zadanie 1
|
||||
|
||||
# a)
|
||||
|
||||
# założenie: normalność rozkładu – test shapiro-wilka
|
||||
|
||||
# hipoteza podstawowa h0 – rozkład wzrostu w populacji mężczyzn jest normalny
|
||||
# hipoteza h1 – nieprawda, że h0
|
||||
|
||||
shapiro.test(Ankieta.M$Wzrost)
|
||||
# Statystyka testowa W = 0.9598, p-value = 0.04048
|
||||
# alpha = 0.01 # poziom istotności
|
||||
# wniosek alpha < p-value, więc na poziomie istotności 0.01 nie ma podstaw do odrzucenia h0, że rozkład wzrostu w populacji mężczyzn jest zgodny z rozkładem normalnym.
|
||||
|
||||
# b)
|
||||
# przedzial ufności dla wartości średniej w populacji (mężczyzn)
|
||||
t.test(Ankieta.M$Wzrost, conf.level = 0.95)
|
||||
# 178.0049 181.6403
|
||||
|
||||
# interpretacja: przedział liczbowy od 178.0049 do 181.6403 z prawdopodobieństwem 0.95 obejmuje nieznaną wartość średnią wzrostu w populacji mężczyzn studiujących na pierwszym roku WI ZUT w Szczecinie w tym roku akademickim (2025/2026)
|
||||
|
||||
t.test(Ankieta.M$Wzrost, conf.level = 0.98)
|
||||
# 177.6509 181.9942
|
||||
|
||||
# ze wzrostem współczynnika ufności poszerza się przedział ufności
|
||||
|
||||
# c)
|
||||
# przedział ufności dla odchylenia standardowego w populacji m.
|
||||
|
||||
przedzial.odchylenie = function(x, uf) {
|
||||
# 1 - a = uf
|
||||
# a = 1 - uf
|
||||
a = 1 - uf
|
||||
n = length(x)
|
||||
ss_z_daszkiem = var(x)
|
||||
# s^2 = (n - 1)/n * ss_z_daszkiem
|
||||
ss = (n - 1)/n * ss_z_daszkiem
|
||||
|
||||
dolna = sqrt((n * ss) / qchisq(1 - (a / 2), n - 1))
|
||||
gorna = sqrt((n * ss) / qchisq(a / 2, n - 1))
|
||||
round(cbind(dolna, gorna), 4)
|
||||
}
|
||||
|
||||
przedzial.odchylenie(Ankieta.M$Wzrost, 0.97)
|
||||
# 5.9801 8.8895
|
||||
|
||||
# interpretacja: przedzial o końcach 5.9801 i 8.8895 [cm] z ufnością 0.97 obejmuje rzeczywistą wartość odchylenia standardowego wzrostu w populacji mężczyzn studiujących na pierwszym roku WI ZUT w Szczecinie w tym roku akademickim.
|
||||
|
||||
# d)
|
||||
# test dla wartości średniej w populacji
|
||||
# hipoteza h0: m = 180
|
||||
# hipoteza h1: m > 180
|
||||
t.test(Ankieta.M$Wzrost, mu = 180, alternative = 'g')
|
||||
# statystyka testowa t = -0.19518, df = 61, p-value = 0.577
|
||||
# alpha = 0.01
|
||||
# alpha < p-value, więc
|
||||
# na poziomie istotności 0.01 nie ma podstaw do odrzucenia hipotezy h0. Nie można zatem potwierdzić hipotezy, że średni wzrost mężczyzn w badanej populacji jest większy niż 180 cm.
|
||||
|
||||
|
||||
# zadanie 2
|
||||
|
||||
table(Ankieta$Sz.średnia)
|
||||
# LO(RM) = 22
|
||||
|
||||
# a)
|
||||
# przedział ufności dla odsetka (wskaźnika struktury, frakcji, procentu, proporcji)
|
||||
prop.test(22, 72, conf.level = 0.98)
|
||||
# 0.1909 0.4489
|
||||
# te końce nie mają jednostek!
|
||||
|
||||
# interpretacja: przedział o końcach 0.1909 i 0.4489 z ufnością 0.98 obejmuje rzeczywistą wartość odsetka osób, które ukończyły LO(RM) w badanej populacji.
|
||||
|
||||
# b)
|
||||
# test dla wskaźnika struktury
|
||||
# hipoteza h0: p = 45%
|
||||
# hipoteza h1: p < 45%
|
||||
prop.test(22, 72, p = 0.45, alternative = 'l')
|
||||
# statystyka testowa – X-squared = 5.5, df = 1, p-value = 0.009508
|
||||
# alpha = 0.05
|
||||
# alpha > p-value, więc
|
||||
# odrzucamy h0
|
||||
|
||||
# Alpha jest większa niż p-value, więc na poziomie istotności 0.05 odrzucamy hipotezę h0 i przyjmujemy h1, zatem odsetek osób, które ukończyły LO(RM) w badanej populacji studentów jest istotnie mniejszy, niż 45%.
|
||||
|
||||
# zadanie 3
|
||||
|
||||
# a)
|
||||
# hipoteza h0: rozkład wagi w populacji kobiet jest normalny
|
||||
# hipotezea h1: rozkład wagi w populacji kobiet nie jest normalny
|
||||
|
||||
shapiro.test(Ankieta.K$Waga)
|
||||
# W = 0.94975, p-value = 0.6656
|
||||
# alpha = 0.05
|
||||
# alpha < p-value, więc
|
||||
# na poziomie istotności 0.05 nie ma podstaw do odrzucenia h0, że rozkład wagi w populacji kobiet jest normalny
|
||||
|
||||
# b)
|
||||
t.test(Ankieta.K$Waga, conf.level = 0.98)
|
||||
# 49.34915 63.85085
|
||||
|
||||
# interpretacja: przedział o końcach 49.34915 i 63.85085 [kg] z ufnością 0.98 zawiera rzeczywistą wartość średniej wagi w populacji wszystkich kobiet studiujących na I roku WI
|
||||
|
||||
# zadanie 4
|
||||
# a)
|
||||
|
||||
table(Ankieta$M.zamieszkania)
|
||||
# akademik = 23
|
||||
prop.test(23, 72, conf.level = 0.995)
|
||||
# 0.1842 0.4918
|
||||
|
||||
# interpretacja: przedział o końcach 0.1842 i 0.4918 z ufnością 0.995 obejmuje rzeczywistą wartość odestka osób, które mieszkają w akademiku podczas studiowania na pierwszym roku kierunku informatyka na WI ZUT w Szczecinie w tym roku akademickim
|
||||
|
||||
# b)
|
||||
# hipoteza h0: p = 0.35
|
||||
# hipoteza h1: p != 0.35
|
||||
prop.test(23, 72, p = 0.35, alternative = 'two.sided')
|
||||
# X-squared = 0.17643, df = 1, p-value = 0.6745
|
||||
# alpha = 0.05
|
||||
# alpha < p-value, więc
|
||||
# odrzucamy h0
|
||||
|
||||
# wniosek: Alpha jest mniejsze, niż p-value, więc nie ma podstaw do odrzucenia h0, że odsetek osób, które mieszkają w akademiku w populacji wszystkich studentów I roku na WI różnie się istotnie od 35%
|
||||
13
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/laby.Rproj
Normal file
13
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/laby.Rproj
Normal file
@@ -0,0 +1,13 @@
|
||||
Version: 1.0
|
||||
|
||||
RestoreWorkspace: Default
|
||||
SaveWorkspace: Default
|
||||
AlwaysSaveHistory: Default
|
||||
|
||||
EnableCodeIndexing: Yes
|
||||
UseSpacesForTab: Yes
|
||||
NumSpacesForTab: 2
|
||||
Encoding: UTF-8
|
||||
|
||||
RnwWeave: Sweave
|
||||
LaTeX: pdfLaTeX
|
||||
701
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/powtorzenie.R
Normal file
701
uczelnia/2_semestr/matematyka_stosowana/laby/cz2/powtorzenie.R
Normal file
@@ -0,0 +1,701 @@
|
||||
#### === LAB 7 Zarządzanie danymi i elementami statystyki opisowej==== ####
|
||||
# Ogólne manipulowanie zestawem danych
|
||||
|
||||
## Wyświetlenie podsumowania danych
|
||||
### przed faktoryzacją
|
||||
summary(Ankieta)
|
||||
Ankieta$Płeć = factor(Ankieta$Płeć) # <- ustawiamy płeć jako zmienną kategorialną
|
||||
### po faktoryzacji
|
||||
summary(Ankieta)
|
||||
|
||||
Ankieta$Sysytem = factor(Ankieta$System)
|
||||
Ankieta$M.zamieszkania = factor(Ankieta$M.zamieszkania)
|
||||
Ankieta$Sz.średnia = factor(Ankieta$Sz.średnia)
|
||||
Ankieta$Rodzeństwo = factor(Ankieta$Rodzeństwo)
|
||||
|
||||
|
||||
## Dodanie kolumny
|
||||
Ankieta$Średnia = round(((Ankieta$Algebra * 5 + Ankieta$Fizyka * 5 + Ankieta$Programowanie1 * 5 + Ankieta$MSzS1 * 5 + Ankieta$Algorytmy1 * 6 + Ankieta$WdI * 4) / 30), 2); # Po prostu wpisujemy co chcemy
|
||||
|
||||
## Skopiowanie kolumny z ocenami (subset)
|
||||
Ankieta$Średnia = round(((Ankieta$Algebra * 5 + Ankieta$Fizyka * 5 + Ankieta$Programowanie1 * 5 + Ankieta$MSzS1 * 5 + Ankieta$Algorytmy1 * 6 + Ankieta$WdI * 4) / 30), 2); # select pozwala wybrac konkretne kolumny poprzez wektor
|
||||
|
||||
## Dodanie i likwidacja kolumny
|
||||
Ankieta$Waga.dag = Ankieta$Waga * 100 # <- dodaje
|
||||
Ankieta$Waga.dag = NULL # <- likwiduje
|
||||
|
||||
# Wykres ramka-wąsy
|
||||
ggplot(Ankieta, aes(x=Ankieta$Płeć, y=Ankieta$Waga)) + geom_boxplot(fill='red', col='purple') # x – zmienna kategorialna, y – zmienna mierzalna
|
||||
|
||||
## funkcja
|
||||
zakres3sigm = function(x) {
|
||||
data.frame(lewy.kres=mean(x) - 3 * sd(x), prawy.kres=mean(x) + 3 * sd(x))
|
||||
}
|
||||
|
||||
## Podzbiory
|
||||
Ankieta.M = subset(Ankieta, Ankieta$Płeć == 'M')
|
||||
|
||||
Ankieta$L.g.kody = cut(Ankieta$L.godzin, breaks = c(0, 4, 8, 24), labels = c("krótko", "średnio", "długo"), include.lowest = TRUE)
|
||||
table(Ankieta$L.g.kody)
|
||||
|
||||
#### === LAB 8 Parametry opisowe === ####
|
||||
# zadanie 1
|
||||
|
||||
p.opisowe = function(wektor) {
|
||||
library(moments)
|
||||
srednia = round(mean(wektor), 2)
|
||||
mediana = round(median(wektor), 2)
|
||||
kwartyl_dolny = round(quantile(wektor, 1/4), 2)
|
||||
kwartyl_gorny = round(quantile(wektor, 3/4), 2)
|
||||
minimum = round(min(wektor), 2)
|
||||
maximum = round(max(wektor), 2)
|
||||
odchylenie = round(sd(wektor), 2)
|
||||
rozstep_empiryczny = round(max(wektor) - min(wektor), 2)
|
||||
rozstep_kwartylowy = round(IQR(wektor), 2)
|
||||
wspolczynnik_zmiennosci = round(sd(wektor)/mean(wektor) * 100, 2)
|
||||
skosnosc = round(skewness(wektor), 2)
|
||||
kurtoza = round(kurtosis(wektor), 2)
|
||||
|
||||
rbind(srednia, mediana, kwartyl_dolny, kwartyl_gorny, minimum, maximum, odchylenie, rozstep_empiryczny, rozstep_kwartylowy, wspolczynnik_zmiennosci, skosnosc, kurtoza)
|
||||
}
|
||||
|
||||
|
||||
|
||||
# zadanie 2
|
||||
# współczynnik zmienności
|
||||
# |V| <= 10% – słaba zmienność
|
||||
# 10% < |V| <= 50% – umiarkowana zmienność
|
||||
# |V| > 50% – duża zmienność
|
||||
|
||||
# skośność (współczynnik asymetrii)
|
||||
# |G| <= 0.5 – słaba
|
||||
# 0.5 < |G| < 1 – umiarkowana
|
||||
# |G| > 1 – duża silna asymetria
|
||||
|
||||
# G < 0 – lewostronna
|
||||
# G > 0 – prawostronna
|
||||
# G = 0 – symetria (prawie się nie zdarza)
|
||||
|
||||
# kurtoza (współczynnik skupienia/spłaczszczenia)
|
||||
# K = 3 – rozkład normalny
|
||||
# K < 3 – niższe skupienie niż w rozkładzie normalnym
|
||||
# K > 3 – wyższe skupienie niż w rozkładzie normalnym
|
||||
|
||||
|
||||
# a)
|
||||
p.opisowe(Ankieta$Wzrost)
|
||||
# kwartyl_dolny 174.00 – wzrost 25% mężczyzn nie przekroczył 174
|
||||
# odchylenie 7.16 – wzrost mężczyzn odchylał się od średniej wzrostu przeciętnie o około 7.16
|
||||
# wspolczynnik_zmiennosci 3.98 – udział odchylenia standardowego wzrostu w wartości średniej wynosi 3.98 co świadczy o tym, że mężczyźni są słabo zróżnicowani pod względem wzrostu
|
||||
# skosnosc 0.20 – rozkład wzrostu mężczyzn charakteryzuje się słabą asymetrią prawostronną
|
||||
|
||||
# b)
|
||||
p.opisowe(Ankieta$Średnia)
|
||||
# mediana 3.80 – średnia 50% studentów w badanej grupie nie przekroczyla 3.80
|
||||
# kwartyl_gorny 4.24 – średnia 75% studentów w badanej grupie nie przekroczyla 4.24
|
||||
|
||||
# c)
|
||||
p.opisowe(Ankieta$L.godzin)
|
||||
# srednia 7.07 czas spędzany przy komputerze w badanej grupie skupiał się wokół wartości 7.07
|
||||
# kurtoza 2.55 rozklad czasu spędzanego przy komputerze w badanej grupie charakteryzuje się niższym skupieniem wokół średniej wagi niż w rozkładzie normalnym.
|
||||
|
||||
# zadanie 3
|
||||
|
||||
przedzial.odchylenie = function(x, uf) {
|
||||
# 1 - a = uf
|
||||
# a = 1 - uf
|
||||
a = 1 - uf
|
||||
n = length(x)
|
||||
ss_z_daszkiem = var(x)
|
||||
# s^2 = (n - 1)/n * ss_z_daszkiem
|
||||
ss = (n - 1)/n * ss_z_daszkiem
|
||||
|
||||
dolna = sqrt((n * ss) / qchisq(1 - (a / 2), n - 1))
|
||||
gorna = sqrt((n * ss) / qchisq(a / 2, n - 1))
|
||||
round(cbind(dolna, gorna), 4)
|
||||
}
|
||||
|
||||
przedzial.odchylenie(Ankieta.M$Wzrost, 0.95)
|
||||
|
||||
# zadanie 4
|
||||
# a)
|
||||
ggplot(data.frame(x=c(-4, 4)), aes(x))+ylab('Gęstość rozkładu studenta')+ stat_function(fun=dt, args=1, col='red', size=1) + stat_function(fun=dt, args=2, col='pink', size=1) + stat_function(fun=dt, args=10, col='green', size=1) + stat_function(fun=dt, args=50, col='blue', size=1)
|
||||
|
||||
# b)
|
||||
ggplot(data.frame(x=c(-1, 100)), aes(x))+ylab('Gęstość rozkładu chi kwadrat') + stat_function(fun=dchisq, args=5, col='red', size=1) + stat_function(fun=dchisq, args=10, col='blue', size=1) + stat_function(fun=dchisq, args=20, col='green', size=1) + stat_function(fun=dchisq, args=50, col='pink', size=1)
|
||||
|
||||
|
||||
#### === LAB 9 Estymacja i testowanie hipotez dla jednej populacji === ####
|
||||
# zadanie 1
|
||||
|
||||
# a)
|
||||
|
||||
# założenie: normalność rozkładu – test shapiro-wilka
|
||||
|
||||
# hipoteza podstawowa h0 – rozkład wzrostu w populacji mężczyzn jest normalny
|
||||
# hipoteza h1 – nieprawda, że h0
|
||||
|
||||
shapiro.test(Ankieta.M$Wzrost)
|
||||
# Statystyka testowa W = 0.9598, p-value = 0.04048
|
||||
# alpha = 0.01 # poziom istotności
|
||||
# wniosek alpha < p-value, więc na poziomie istotności 0.01 nie ma podstaw do odrzucenia h0, że rozkład wzrostu w populacji mężczyzn jest zgodny z rozkładem normalnym.
|
||||
|
||||
# b)
|
||||
# przedzial ufności dla wartości średniej w populacji (mężczyzn)
|
||||
t.test(Ankieta.M$Wzrost, conf.level = 0.95)
|
||||
# 178.0049 181.6403
|
||||
|
||||
# interpretacja: przedział liczbowy od 178.0049 do 181.6403 z prawdopodobieństwem 0.95 obejmuje nieznaną wartość średnią wzrostu w populacji mężczyzn studiujących na pierwszym roku WI ZUT w Szczecinie w tym roku akademickim (2025/2026)
|
||||
|
||||
t.test(Ankieta.M$Wzrost, conf.level = 0.98)
|
||||
# 177.6509 181.9942
|
||||
|
||||
przedzial.odchylenie(Ankieta.M$Wzrost, 0.97)
|
||||
# 5.9801 8.8895
|
||||
|
||||
# interpretacja: przedzial o końcach 5.9801 i 8.8895 [cm] z ufnością 0.97 obejmuje rzeczywistą wartość odchylenia standardowego wzrostu w populacji mężczyzn studiujących na pierwszym roku WI ZUT w Szczecinie w tym roku akademickim.
|
||||
|
||||
# d)
|
||||
# test dla wartości średniej w populacji
|
||||
# hipoteza h0: m = 180
|
||||
# hipoteza h1: m > 180
|
||||
t.test(Ankieta.M$Wzrost, mu = 180, alternative = 'g')
|
||||
# statystyka testowa t = -0.19518, df = 61, p-value = 0.577
|
||||
# alpha = 0.01
|
||||
# alpha < p-value, więc
|
||||
# na poziomie istotności 0.01 nie ma podstaw do odrzucenia hipotezy h0. Nie można zatem potwierdzić hipotezy, że średni wzrost mężczyzn w badanej populacji jest większy niż 180 cm.
|
||||
|
||||
|
||||
table(Ankieta$Sz.średnia)
|
||||
# LO(RM) = 22
|
||||
|
||||
# a)
|
||||
# przedział ufności dla odsetka (wskaźnika struktury, frakcji, procentu, proporcji)
|
||||
prop.test(22, 72, conf.level = 0.98)
|
||||
# 0.1909 0.4489
|
||||
# te końce nie mają jednostek!
|
||||
|
||||
# interpretacja: przedział o końcach 0.1909 i 0.4489 z ufnością 0.98 obejmuje rzeczywistą wartość odsetka osób, które ukończyły LO(RM) w badanej populacji.
|
||||
|
||||
# b)
|
||||
# test dla wskaźnika struktury
|
||||
# hipoteza h0: p = 45%
|
||||
# hipoteza h1: p < 45%
|
||||
prop.test(22, 72, p = 0.45, alternative = 'l')
|
||||
# statystyka testowa – X-squared = 5.5, df = 1, p-value = 0.009508
|
||||
# alpha = 0.05
|
||||
# alpha > p-value, więc
|
||||
# odrzucamy h0
|
||||
|
||||
# Alpha jest większa niż p-value, więc na poziomie istotności 0.05 odrzucamy hipotezę h0 i przyjmujemy h1, zatem odsetek osób, które ukończyły LO(RM) w badanej populacji studentów jest istotnie mniejszy, niż 45%.
|
||||
|
||||
|
||||
# zadanie 3
|
||||
|
||||
# a)
|
||||
# hipoteza h0: rozkład wagi w populacji kobiet jest normalny
|
||||
# hipotezea h1: rozkład wagi w populacji kobiet nie jest normalny
|
||||
|
||||
shapiro.test(Ankieta.K$Waga)
|
||||
# W = 0.94975, p-value = 0.6656
|
||||
# alpha = 0.05
|
||||
# alpha < p-value, więc
|
||||
# na poziomie istotności 0.05 nie ma podstaw do odrzucenia h0, że rozkład wagi w populacji kobiet jest normalny
|
||||
|
||||
# b)
|
||||
t.test(Ankieta.K$Waga, conf.level = 0.98)
|
||||
# 49.34915 63.85085
|
||||
|
||||
# interpretacja: przedział o końcach 49.34915 i 63.85085 [kg] z ufnością 0.98 zawiera rzeczywistą wartość średniej wagi w populacji wszystkich kobiet studiujących na I roku WI
|
||||
|
||||
# zadanie 4
|
||||
# a)
|
||||
|
||||
table(Ankieta$M.zamieszkania)
|
||||
# akademik = 23
|
||||
prop.test(23, 72, conf.level = 0.995)
|
||||
# 0.1842 0.4918
|
||||
|
||||
# interpretacja: przedział o końcach 0.1842 i 0.4918 z ufnością 0.995 obejmuje rzeczywistą wartość odestka osób, które mieszkają w akademiku podczas studiowania na pierwszym roku kierunku informatyka na WI ZUT w Szczecinie w tym roku akademickim
|
||||
|
||||
# b)
|
||||
# hipoteza h0: p = 0.35
|
||||
# hipoteza h1: p != 0.35
|
||||
prop.test(23, 72, p = 0.35, alternative = 'two.sided')
|
||||
# X-squared = 0.17643, df = 1, p-value = 0.6745
|
||||
# alpha = 0.05
|
||||
# alpha < p-value, więc
|
||||
# odrzucamy h0
|
||||
|
||||
# wniosek: Alpha jest mniejsze, niż p-value, więc nie ma podstaw do odrzucenia h0, że odsetek osób, które mieszkają w akademiku w populacji wszystkich studentów I roku na WI różnie się istotnie od 35%
|
||||
#### === LAB 10 === Testowanie hipotez dla dwóch populacji oraz test dla prób zależnych ####
|
||||
# zadanie 1
|
||||
|
||||
# Próby niezależne
|
||||
|
||||
# a)
|
||||
|
||||
# założenie 1: normalność rozkładów
|
||||
|
||||
# h0 – rozkład średnich ocen w populacji studentek jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
# h0' – rozkład średnich ocen w populacji studentów jest normalny
|
||||
# h1' – ~h0'
|
||||
|
||||
by(Ankieta$Średnia, Ankieta$Płeć, shapiro.test)
|
||||
|
||||
# dla kobiet: W = 0.97625, p-value = 0.942
|
||||
# dla mężczyzn: W = 0.97148, p-value = 0.1578
|
||||
# aplha = 0.01
|
||||
|
||||
# w obu przypadka alpha < p-value
|
||||
# brak podstaw do odrzucenia h0 i h0'
|
||||
|
||||
# b)
|
||||
|
||||
# h0 – jednorodność wariancji sigma.k^2 = sigma.m^2
|
||||
# h1 – ~h0
|
||||
|
||||
var.test(Ankieta$Średnia ~ Ankieta$Płeć)
|
||||
# F = 0.40623, num df = 9, denom df = 61, p-value = 0.1459
|
||||
# alpha = 0.01
|
||||
|
||||
# Wniosek: brak podstaw do odrzucenia h0
|
||||
# będziemy stosować test bez poprawki welcha
|
||||
# wariancje jednorodne = bez poprawki welcha
|
||||
|
||||
# c)
|
||||
|
||||
# h0 – m.kobiet = m.mężczyzn
|
||||
# h1 – m.kobiet > m.mężczyzn
|
||||
|
||||
|
||||
t.test(Ankieta$Średnia ~ Ankieta$Płeć, alternative = 'g', var.equal = TRUE)
|
||||
# t = -0.49177, df = 70, p-value = 0.6878
|
||||
# alpha = 0.01
|
||||
|
||||
# Wniosek: Na poziomie istotności 0.01 nie ma podstaw do odrzucenia hipotezy h0, zatem wyniki próby nie potwierdzają przypuszczenia, że średnie oceny studentek są wyższe niż studentów studiujących na I roku WI na ZUT w Szczecinie w tym roku akademickim.
|
||||
|
||||
# Zadanie 2
|
||||
# alpha = 0.05
|
||||
|
||||
# Test dla dwóch wskaźników struktury
|
||||
|
||||
# grupy:
|
||||
# 1 – grupa mieszkających z rodziną
|
||||
# 2 – grupa mieszkających poza domem rodzinnym
|
||||
|
||||
# wyróżniona cecha: absolewnci TI
|
||||
|
||||
# Hipotezy:
|
||||
# h0 – p1 = p2
|
||||
# h1 – p1 < p2
|
||||
|
||||
table(Ankieta$M.zamieszkania, Ankieta$Sz.średnia)
|
||||
prop.test(c(15, 20), c(32, 40), alternative = 'l')
|
||||
# X-squared = 0.00069498, df = 1, p-value = 0.4895
|
||||
# aplha = 0.05
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 nie można odrzucić hipotezy h0. Zatem odsetki osób, które ukończyły TI nie różnią się istotnie dla mieszkających podczas studiowania z rodziną oraz dla mieszkających poza domem rodzinnym.
|
||||
|
||||
# Zadanie 3
|
||||
|
||||
# próby zależne
|
||||
|
||||
# alpha = 0.01
|
||||
|
||||
# założenie: normalność różnicy zmiennych
|
||||
# h0 – rozkład różnicy zmiennych jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
x1 = c(225, 236, 312, 238, 241, 196, 205, 259, 218)
|
||||
x2 = c(216, 195, 245, 235, 221, 170, 180, 265, 179)
|
||||
|
||||
shapiro.test(x1 - x2)
|
||||
# W = 0.96898, p-value = 0.8858
|
||||
|
||||
# Wniosek: brak podstaw do odrzucenia h0
|
||||
|
||||
|
||||
# test studenta dla dwóch średnich – próby zależne
|
||||
# h0 – m1 - m2 = 0
|
||||
# h1 – m1 - m2 > 0
|
||||
t.test(x1, x2, paired = T, alternative = 'g')
|
||||
# t = 3.3633, df = 8, p-value = 0.004942
|
||||
|
||||
# Wniosek: na poziomie isotności 0.01 odrzucamy h0 i przyjmujemy h1, zatem leczenie statynami istotnie wpływa na obniżenie poziomu cholesterolu.
|
||||
|
||||
# Zadanie 4
|
||||
# normalność rozkładów -> jednorodność wariancji -> właściwy test
|
||||
|
||||
# aplha = 0.01
|
||||
|
||||
# założenie 1: normalność rozkładów
|
||||
# h0 – średni wzrost w populacji studentek jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
# h0' – średni wzrost w populacji studentów jest normalny
|
||||
# h1 – ~h0'
|
||||
by(Ankieta$Wzrost, Ankieta$Płeć, shapiro.test)
|
||||
# dla kobiet: W = 0.95432, p-value = 0.7197
|
||||
# dla mężczyzn: W = 0.9598, p-value = 0.04048
|
||||
|
||||
# brak podstaw do odrzucenia h0 i h0'
|
||||
|
||||
# założenie 2: jednorodność wariancji
|
||||
# h0 – jednorodność wariancji k.sigma^2 = m.sigma^2
|
||||
# h1 – ~h0
|
||||
var.test(Ankieta$Wzrost ~ Ankieta$Płeć)
|
||||
# F = 1.2842, num df = 9, denom df = 61, p-value = 0.528
|
||||
# brak podstaw do odrzucenia h0
|
||||
# będziemy stosować test bez poprawki welcha
|
||||
|
||||
# h0 – m.kobiet = m.mężczyzn
|
||||
# h1 – m.kobiet ≠ m.mężczyzn
|
||||
t.test(Ankieta$Wzrost ~ Ankieta$Płeć, alternative = 'two.sided', var.equal = T)
|
||||
# t = -5.2844, df = 70, p-value = 1.36e-06
|
||||
|
||||
# Na poziomie istotności 0.01 odrzucamy h0 i przyjmujemy h1.
|
||||
|
||||
# zadanie 8
|
||||
# alpha = 0.02
|
||||
|
||||
# założenie 1: normalność rozkładu
|
||||
# h0 – rozkład średnich ocen w grupie posiadającej rodzeństwo jest normalny
|
||||
# h1 – ~h0
|
||||
|
||||
# h0' – rozkład średnich ocen w grupie nieposiadającej rodzeństwa jest normalny
|
||||
# h1' – ~h0'
|
||||
|
||||
by(Ankieta$Średnia, Ankieta$Rodzeństwo, shapiro.test)
|
||||
# nieposiadający rodzeństwa: W = 0.93477, p-value = 0.3929
|
||||
# posiadający rodzeństwo: W = 0.97486, p-value = 0.26
|
||||
|
||||
# brak podstaw do odrzucenia h0 i h0'
|
||||
|
||||
# założenie 2: jednorodność wariancji
|
||||
# h0 – jednorodność wariancji n.sigma^2 = t.sigma^2
|
||||
# h1 – ~h0
|
||||
var.test(Ankieta$Średnia ~ Ankieta$Rodzeństwo)
|
||||
# F = 0.80082, num df = 12, denom df = 58, p-value = 0.704
|
||||
|
||||
# brak podstaw do odrzucenia h0
|
||||
# test bez poprawki welcha
|
||||
|
||||
# h0 – m.z_rodzeństwem = m.bez_rodzeństwa
|
||||
# h1 – m.z_rodzeństwem ≠ m.bez_rodzeństwa
|
||||
t.test(Ankieta$Średnia ~ Ankieta$Rodzeństwo, alternative = 'two.sided', var.equal = T)
|
||||
# t = -0.61915, df = 70, p-value = 0.5378
|
||||
|
||||
# wniosek: na poziomie istotności 0.02 brak podstaw do odrzucenia h0, że średnia ocen osób posiadających rodzeństwo nie różni istotnie od średniej osób nieposiadających rodzieństwa w badanej grupie.
|
||||
|
||||
|
||||
#### === LAB 11 === Testy dla populacji > 3####
|
||||
# zadanie 1
|
||||
|
||||
# zmienna mierzalna
|
||||
plony = c(2.6, 2.4, 2, 1.8, 2.2, 1.5, 1.5, 1.4, 1.2, 1.5, 1.2, 1.5, 0.8, 1)
|
||||
# zmienna grupująca
|
||||
kombinacje = c(rep('1', 5), rep('2', 4), rep('3', 5))
|
||||
|
||||
## Normalność rozkładów
|
||||
|
||||
### (wariant skrócony)
|
||||
by(plony, kombinacje, shapiro.test)
|
||||
# kombinacja 1: W = 0.98676, p-value = 0.9672
|
||||
# kombinacja 2: W = 0.82743, p-value = 0.1612
|
||||
# kombinacja 3: W = 0.90345, p-value = 0.4292
|
||||
|
||||
# Brak podstaw do odrzucenia hipotez zerowych
|
||||
|
||||
## Jednorodność wariancji
|
||||
# h0: sigma^2 = (sigma.2)^2 = (sigma.3)^2
|
||||
# h1: ~h0
|
||||
bartlett.test(plony ~ kombinacje)
|
||||
# Bartlett's K-squared = 1.8396, df = 2, p-value= 0.3986
|
||||
|
||||
# alpha < p-value – Brak podstaw do odrzucenia h0
|
||||
|
||||
## Test anova
|
||||
# h0: m.1 = m.2 = m.3 (brak wpływu)
|
||||
# h1: ~h0 (istotny wpływ)
|
||||
|
||||
anova(aov(plony ~ kombinacje))
|
||||
|
||||
# Response: plony
|
||||
# Df Sum Sq Mean Sq F value Pr(>F)
|
||||
# kombinacje 2 2.7571 1.37857 18.053 0.0003356 ***
|
||||
# Residuals 11 0.8400 0.07636
|
||||
|
||||
# F: 18.053 p-value: 0.0003356
|
||||
|
||||
# Odrzucamy h0, przyjmujemy h1, nawóz ma istotny wpływ
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1, zatem nawożenie istotnie wpływa na plony rzepaku jarego.
|
||||
|
||||
|
||||
# Zadanie 2
|
||||
|
||||
# Jedna próba
|
||||
|
||||
## Test normalności rozkładu
|
||||
|
||||
# wariant skrócony
|
||||
|
||||
shapiro.test(Ankieta.M$Waga)
|
||||
# W = 0.94653, p-value = 0.009113
|
||||
|
||||
# Odrzucamy h0
|
||||
|
||||
# Test nieparametryczny Wilcoxona
|
||||
# h0: mediana = 70
|
||||
# h1: mediana > 70
|
||||
wilcox.test(Ankieta.M$Waga, mu = 70, alternative = 'g')
|
||||
# V = 1129.5, p-value = 0.008091
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1. Zatem mediana wagi populacji mężczyzn studiujących na I roku WI ZUT w Szczecinie jest istotnie większa od 70kg.
|
||||
|
||||
|
||||
# Zadanie 3
|
||||
|
||||
# Dwie niezależne próby
|
||||
|
||||
utargi = c(7.6, 12.0, 7.3, 11.3, 7.0, 10.8, 6.5, 8.1, 3.2, 8.7, 8.8, 11.7, 12.7, 18.5, 3.3, 6.7, 8.6, 6.9, 3.8, 3.7) # zmienna mierzalna
|
||||
miasta = c(rep('A', 13), rep('B', 7)) # zmienna grupująca
|
||||
|
||||
## Normalność rozkładu
|
||||
# wariant skrócony
|
||||
by(utargi, miasta, shapiro.test)
|
||||
# Miasto A: W = 0.94565, p-value = 0.5341
|
||||
# Brak podstaw do odrzucenia h0
|
||||
|
||||
# Miasto B: W = 0.76886, p-value = 0.01989
|
||||
# Odrzucamy h0
|
||||
|
||||
# Wniosek: odrzucamy hipotezę, że rozkład miesięcznego utargu w mieście B jest zgodny z rozkładem normalnym.
|
||||
|
||||
## Test nieparametryczny wilcoxona
|
||||
# h0: mediana.A = mediana.B
|
||||
# h1: mediana.A > mediana.B
|
||||
|
||||
wilcox.test(utargi ~ miasta, alternative = 'g')
|
||||
# W = 65, p-value = 0.0674
|
||||
# brak podstaw do odrzucenia h0
|
||||
|
||||
# Wniosek: Na poziomie istotności 0.05 nie ma podstaw by odrzucić hipotezę h0. Mediany utargów w mieście A i B nie różnią się istotnie.
|
||||
|
||||
# Zadanie 4
|
||||
|
||||
# Dwie zależne próby
|
||||
x1 = c(85, 122, 162, 206, 121, 250, 200, 156)
|
||||
x2 = c(87, 82, 158, 96, 131, 121, 194, 130)
|
||||
|
||||
## Normalność rozkładu różnicy zmiennych
|
||||
# wariant skrócony
|
||||
shapiro.test(x1 - x2)
|
||||
# W = 0.81838, p-value = 0.04487
|
||||
|
||||
# Wniosek: odrzucamy h0
|
||||
|
||||
## Test nieparametryczny Wilcoxona: próby zależne
|
||||
# h0: mediana1 - mediana2 = 0
|
||||
# h1: mediana1 - mediana2 > 0
|
||||
|
||||
wilcox.test(x1, x2, paired = T, alternative = 'g')
|
||||
# V = 31, p-value = 0.03906
|
||||
|
||||
# Odrzucamy h0 i przyjmujemy h1
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1, zatem trening istotnie wpływa na skrócenie czasu potrzebnego myszom na wyjście z labiryntu.
|
||||
|
||||
|
||||
# Zadanie 5
|
||||
frewkencja = c(32.5, 40.8, 41.7, 41.2, 37.9, 38.3, 42, 39.8, 43.1, 42.6, 38.9, 43.1, 40.4, 41.8, 42, 39, 43.7, 40, 39.7, 43, 43.1, 43.9, 44.2, 45.2, 44.6, 42.5, 43.4, 44.8, 42.8, 43.1, 44.8, 45)
|
||||
miasta = c(rep('Wroclaw', 10), rep('Warszawa', 11), rep('Krakow', 11))
|
||||
# alhpa = 0.05
|
||||
# 3 próby
|
||||
|
||||
## Jednorodność wariancji
|
||||
# h0: sigma^2 = (sigma.2)^2 = (sigma.3)^2
|
||||
# h1: ~h0
|
||||
bartlett.test(frewkencja ~ miasta)
|
||||
# Bartlett's K-squared = 11.774, df = 2, p-value = 0.002775
|
||||
# aplha > p-value
|
||||
# odrzucamy h0, przyjmujemy h1
|
||||
|
||||
# h0: mediana.1 = mediana.2 = mediana.3
|
||||
# h1: ~h0
|
||||
kruskal.test(frewkencja ~ miasta)
|
||||
|
||||
# Kruskal-Wallis chi-squared = 16.791, df = 2, p-value = 0.0002259
|
||||
# alpha > p-value
|
||||
# odrzucamy h0 i przyjmujemy h1
|
||||
|
||||
# Wniosek: na poziomie istotności 0.05 odrzucamy h0 i przyjmujemy h1, zatem frekwencja w wyborach prezydenckich dla wszystkich tych miast nie jest taka sama.
|
||||
|
||||
|
||||
# Zadanie 8
|
||||
# 3 próby
|
||||
|
||||
# alpha = 0.01
|
||||
|
||||
## Test normalności
|
||||
# wariant skrócony
|
||||
|
||||
by(Ankieta$L.godzin, Ankieta$M.zamieszkania, shapiro.test)
|
||||
# akademik: W = 0.96227, p-value = 0.5107
|
||||
# mieszkanie z rodziną: W = 0.98145, p-value = 0.8405
|
||||
# stancja lub inne: W = 0.95429, p-value = 0.5278
|
||||
|
||||
# W każdej próbce brak podstaw do odrzucenia h0
|
||||
|
||||
## Test jednorodności wariancji
|
||||
# h0: sigma.0^2 = (sigma.1)^2 = (sigma.2)^2
|
||||
# h1: ~h0
|
||||
|
||||
bartlett.test(Ankieta$L.godzin ~ Ankieta$M.zamieszkania)
|
||||
# Bartlett's K-squared = 0.47545, df = 2, p-value = 0.7884
|
||||
|
||||
# alpha < p-value
|
||||
# brak podstaw do odrzucenia h0, zatem wariancje są jednorodne
|
||||
|
||||
|
||||
# h0: m0 = m1 = m2 (brak wpływu)
|
||||
# h1: ~h0 (istotny wpływ)
|
||||
|
||||
anova(aov(Ankieta$L.godzin ~ Ankieta$M.zamieszkania))
|
||||
# F - 0.5896 p-value 0.5573
|
||||
# alpha < 0.5573
|
||||
# brak podstaw do odrzucenia h0
|
||||
|
||||
# Wniosek: Na poziomie istotności 0.01 nie ma podstaw do odrzucenia h0, zatem liczba godzin spędzonych przed komputerem w ciągu doby w popuplacji studentów pierwszego roku WI ZUT w Szczecinie w tym roku akademickim nie zależy od miejsca zamieszkania.
|
||||
|
||||
#### === LAB 12 === Korelacja i regresja, test niezależności chi kwadrat ####
|
||||
# zadanie 1
|
||||
# a)
|
||||
|
||||
# dwie zmienne mierzalne
|
||||
x = c(150, 300, 450, 600, 750, 900, 1200, 1500, 1800) # wysokość nad poziomem morza w metrach, zmienna niezależna
|
||||
y = c(27.2, 26.0, 24.2, 22.5, 21.7, 20.5, 19.0, 17.4, 16) # temperatura powietrza w stopniach celcjusza, zmienna zależna
|
||||
|
||||
plot(x, y) # wykres punktów empirycznych
|
||||
|
||||
lm(y ~ x) # oszacowanie liniowej funkcji regresji
|
||||
# 27.322424 -0.006719
|
||||
# oszacowana funkcja regresji ma: y = -0.006719x + 27.322424
|
||||
|
||||
# interpretacja współczynnika regresji: współczynnik regresji równy -0.007 oznacza, że ze wzrostem wysokości nad poziomem morza o jeden metr spada temperatura powietrza średnio o około 0.007 stopnia celcjusza.
|
||||
|
||||
abline(lm(y ~ x)) # wykres oszacowanej funkcji regresji
|
||||
|
||||
# b)
|
||||
# istotność współczynnika regresji
|
||||
# hipotezy:
|
||||
# h0: ϐ1 = 0
|
||||
# h1: ~h0
|
||||
|
||||
summary(lm(y ~ x))
|
||||
# Estimate Std. Error t value Pr(>|t|)
|
||||
# wyraz wolny: (Intercept) 27.3224242 0.4507429 60.62 8.73e-11 ***
|
||||
# dla x: x -0.0067192 0.0004513 -14.89 1.48e-06 ***
|
||||
|
||||
# t = -14.89
|
||||
# p-value = 1.48e-06
|
||||
# alpha = 0.03
|
||||
# odrzucamy h0
|
||||
# Wniosek: Współczynnik regresji między wysokością nad poziomem morza, a temperaturą jest istotnie różny od zera.
|
||||
|
||||
# (na kolokwium tylko współczynnik regresji, interpretacja, test)
|
||||
|
||||
# zadanie 2
|
||||
# dwie cechy mierzalne
|
||||
|
||||
#a) oszacować współczynnik koleracji i jego interpretacje
|
||||
|
||||
cor(Ankieta.K$Waga, Ankieta.K$Wzrost)
|
||||
# 0.6351466
|
||||
# Intepretacja współczynnika korelacji: Pomiędzy wagą i wzrostem studentek w badanej grupie istnieje umiarkowana korelacja dodatnia czyli im wyższa osoba tym średnio biorąc większa waga.
|
||||
|
||||
# umiarkowana, w tym samym kierunku
|
||||
|
||||
# r=0 brak korelacji
|
||||
# 0<|r|<0.2 bardzo słaba
|
||||
# 0.2<=|r|<0.4 słaba
|
||||
# 0.4<=|r|<0.7 umiarkowana
|
||||
# 0.7<=|r|<0.9 silna
|
||||
# 0.9<=|r|<1 bardzo silna
|
||||
# |r|=1 doskonała liniowa
|
||||
# r > 0 cechy zmieniają się w tym samym kierunku
|
||||
# r < 0 cechy zmieniają się w przeciwnych kierunkach
|
||||
|
||||
# b) przedział ufności dla współczynnika korelacji dla populacji ϱ
|
||||
|
||||
cor.test(Ankieta.K$Waga, Ankieta.K$Wzrost, conf.level = 0.95)
|
||||
# 0.009199008 0.903470512
|
||||
|
||||
# Przedział liczbowy od (0.009; 0.903) z prawdopodobieństwem 0.95 obejmuje nieznany współczynnik korelacji między wagą i wzrostem populacji studentek I roku WI ZUT w Szczecinie.
|
||||
|
||||
|
||||
# c) test istotności współczynnika korelacji
|
||||
# hioptezy:
|
||||
# h0: ϱ = 0
|
||||
# h1: ϱ > 0
|
||||
|
||||
|
||||
cor.test(Ankieta.K$Waga, Ankieta.K$Wzrost, alternative = 'g')
|
||||
# t = 2.3258, df = 8, p-value = 0.02424
|
||||
# alpha = 0.05
|
||||
|
||||
# Odrzucamy h0
|
||||
|
||||
# Wniosek: Przy poziomie istotności 0.05 odrzucamy h0, zatem współczynnik korelacji jest istotnie większy od 0.
|
||||
|
||||
|
||||
# Zadanie 3
|
||||
# dwie cechy niemierzalne
|
||||
# alpha = 0.01
|
||||
|
||||
# hipotezy:
|
||||
# h0: X, Y są niezależne | zawsze niezależność
|
||||
# h1: X, Y są zależne
|
||||
|
||||
|
||||
chisq.test(cbind(c(152, 52), c(8, 188)))
|
||||
# X-squared = 203.67, df = 1, p-value < 2.2e-16
|
||||
# odrzucamy h0 i przyjmujemy h1
|
||||
|
||||
# Wniosek: na poziomie istotności 0.01, zatem można potwierdzić przypuszczenie, że wielkość cebulki wpływa na pojawienie się pędu kwiatostanowego.
|
||||
|
||||
# zad 5 c i d | dwie zmienne mierzalne
|
||||
# wielkość produkcji niezależna
|
||||
# liczba braków zależna
|
||||
x = c(0.8, 1.2, 1.6, 1.8, 2.2, 1.6, 2.4, 2.0) # wielkość produkcji w tys. sztuk
|
||||
y = c(6, 10, 12, 15, 18, 15, 20, 16) # liczba braków
|
||||
|
||||
# c)
|
||||
plot(x, y)
|
||||
regresja = lm(y ~ x)
|
||||
# -0.3438 8.4375
|
||||
# y = 8.4375x - 0.3438
|
||||
abline(regresja)
|
||||
|
||||
# Interpretacja: współczynnik regresji równy 8.4375 oznacza, że wzrostem liczby wielkości produkcji o 1 tys. zwiększa się liczba braków o około 8 sztuk.
|
||||
|
||||
|
||||
# d)
|
||||
# istotność współczynnika regresji
|
||||
# hipotezy:
|
||||
# h0: beta1 = 0
|
||||
# h1: ~h0
|
||||
summary(regresja)
|
||||
# t = 12.425
|
||||
# p-value = 1.66e-05
|
||||
# alpha = 0.01
|
||||
|
||||
# alpha > p-value, odrzucamy h0
|
||||
|
||||
# Wniosek: Współczynnik korelacji między wielkością produkcji, a liczbą braków jest istotnie różny od 0.
|
||||
|
||||
|
||||
|
||||
128
uczelnia/2_semestr/matematyka_stosowana/laby/lab_12.R
Normal file
128
uczelnia/2_semestr/matematyka_stosowana/laby/lab_12.R
Normal file
@@ -0,0 +1,128 @@
|
||||
# zadanie 1
|
||||
# a)
|
||||
|
||||
# dwie zmienne mierzalne
|
||||
x = c(150, 300, 450, 600, 750, 900, 1200, 1500, 1800) # wysokość nad poziomem morza w metrach, zmienna niezależna
|
||||
y = c(27.2, 26.0, 24.2, 22.5, 21.7, 20.5, 19.0, 17.4, 16) # temperatura powietrza w stopniach celcjusza, zmienna zależna
|
||||
|
||||
plot(x, y) # wykres punktów empirycznych
|
||||
|
||||
lm(y ~ x) # oszacowanie liniowej funkcji regresji
|
||||
# 27.322424 -0.006719
|
||||
# oszacowana funkcja regresji ma: y = -0.006719x + 27.322424
|
||||
|
||||
# interpretacja współczynnika regresji: współczynnik regresji równy -0.007 oznacza, że ze wzrostem wysokości nad poziomem morza o jeden metr spada temperatura powietrza średnio o około 0.007 stopnia celcjusza.
|
||||
|
||||
abline(lm(y ~ x)) # wykres oszacowanej funkcji regresji
|
||||
|
||||
# b)
|
||||
# istotność współczynnika regresji
|
||||
# hipotezy:
|
||||
# h0: ϐ1 = 0
|
||||
# h1: ~h0
|
||||
|
||||
summary(lm(y ~ x))
|
||||
# Estimate Std. Error t value Pr(>|t|)
|
||||
# wyraz wolny: (Intercept) 27.3224242 0.4507429 60.62 8.73e-11 ***
|
||||
# dla x: x -0.0067192 0.0004513 -14.89 1.48e-06 ***
|
||||
|
||||
# t = -14.89
|
||||
# p-value = 1.48e-06
|
||||
# alpha = 0.03
|
||||
# odrzucamy h0
|
||||
# Wniosek: Współczynnik regresji między wysokością nad poziomem morza, a temperaturą jest istotnie różny od zera.
|
||||
|
||||
# (na kolokwium tylko współczynnik regresji, interpretacja, test)
|
||||
|
||||
# zadanie 2
|
||||
# dwie cechy mierzalne
|
||||
|
||||
#a) oszacować współczynnik koleracji i jego interpretacje
|
||||
|
||||
cor(Ankieta.K$Waga, Ankieta.K$Wzrost)
|
||||
# 0.6351466
|
||||
# Intepretacja współczynnika korelacji: Pomiędzy wagą i wzrostem studentek w badanej grupie istnieje umiarkowana korelacja dodatnia czyli im wyższa osoba tym średnio biorąc większa waga.
|
||||
|
||||
# umiarkowana, w tym samym kierunku
|
||||
|
||||
# r=0 brak korelacji
|
||||
# 0<|r|<0.2 bardzo słaba
|
||||
# 0.2<=|r|<0.4 słaba
|
||||
# 0.4<=|r|<0.7 umiarkowana
|
||||
# 0.7<=|r|<0.9 silna
|
||||
# 0.9<=|r|<1 bardzo silna
|
||||
# |r|=1 doskonała liniowa
|
||||
# r > 0 cechy zmieniają się w tym samym kierunku
|
||||
# r < 0 cechy zmieniają się w przeciwnych kierunkach
|
||||
|
||||
# b) przedział ufności dla współczynnika korelacji dla populacji ϱ
|
||||
|
||||
cor.test(Ankieta.K$Waga, Ankieta.K$Wzrost, conf.level = 0.95)
|
||||
# 0.009199008 0.903470512
|
||||
|
||||
# Przedział liczbowy od (0.009; 0.903) z prawdopodobieństwem 0.95 obejmuje nieznany współczynnik korelacji między wagą i wzrostem populacji studentek I roku WI ZUT w Szczecinie.
|
||||
|
||||
|
||||
# c) test istotności współczynnika korelacji
|
||||
# hioptezy:
|
||||
# h0: ϱ = 0
|
||||
# h1: ϱ > 0
|
||||
|
||||
|
||||
cor.test(Ankieta.K$Waga, Ankieta.K$Wzrost, alternative = 'g')
|
||||
# t = 2.3258, df = 8, p-value = 0.02424
|
||||
# alpha = 0.05
|
||||
|
||||
# Odrzucamy h0
|
||||
|
||||
# Wniosek: Przy poziomie istotności 0.05 odrzucamy h0, zatem współczynnik korelacji jest istotnie większy od 0.
|
||||
|
||||
|
||||
# Zadanie 3
|
||||
# dwie cechy niemierzalne
|
||||
# alpha = 0.01
|
||||
|
||||
# hipotezy:
|
||||
# h0: X, Y są niezależne | zawsze niezależność
|
||||
# h1: X, Y są zależne
|
||||
|
||||
|
||||
chisq.test(cbind(c(152, 52), c(8, 188)))
|
||||
# X-squared = 203.67, df = 1, p-value < 2.2e-16
|
||||
# odrzucamy h0 i przyjmujemy h1
|
||||
|
||||
# Wniosek: na poziomie istotności 0.01, zatem można potwierdzić przypuszczenie, że wielkość cebulki wpływa na pojawienie się pędu kwiatostanowego.
|
||||
|
||||
# zad 5 c i d | dwie zmienne mierzalne
|
||||
# wielkość produkcji niezależna
|
||||
# liczba braków zależna
|
||||
x = c(0.8, 1.2, 1.6, 1.8, 2.2, 1.6, 2.4, 2.0) # wielkość produkcji w tys. sztuk
|
||||
y = c(6, 10, 12, 15, 18, 15, 20, 16) # liczba braków
|
||||
|
||||
# c)
|
||||
plot(x, y)
|
||||
regresja = lm(y ~ x)
|
||||
# -0.3438 8.4375
|
||||
# y = 8.4375x - 0.3438
|
||||
abline(regresja)
|
||||
|
||||
# Interpretacja: współczynnik regresji równy 8.4375 oznacza, że wzrostem liczby wielkości produkcji o 1 tys. zwiększa się liczba braków o około 8 sztuk.
|
||||
|
||||
|
||||
# d)
|
||||
# istotność współczynnika regresji
|
||||
# hipotezy:
|
||||
# h0: beta1 = 0
|
||||
# h1: ~h0
|
||||
summary(regresja)
|
||||
# t = 12.425
|
||||
# p-value = 1.66e-05
|
||||
# alpha = 0.01
|
||||
|
||||
# alpha > p-value, odrzucamy h0
|
||||
|
||||
# Wniosek: Współczynnik korelacji między wielkością produkcji, a liczbą braków jest istotnie różny od 0.
|
||||
|
||||
|
||||
|
||||
|
||||
259
uczelnia/2_semestr/metody_numeryczne/egzamin.md
Normal file
259
uczelnia/2_semestr/metody_numeryczne/egzamin.md
Normal file
@@ -0,0 +1,259 @@
|
||||
# Węzły
|
||||
Węzły interpolacyjne to inaczej nazwane punkty przez które przechodzi interpolowana funkcja. Żeby możliwe było znalezienie rozwiązania takiego zadania w każdym węźle koordynat X musi być różny.
|
||||
|
||||
# [Efekt Rungego](https://pl.wikipedia.org/wiki/Efekt_Rungego)
|
||||
Efekt rungego polega na pogorszeniu się jakości interpolacji pomimo zwiększenia liczby węzłów (punktów). Początkowo im więcej węzłów tym lepsze przybliżenie, ale od pewnego momentu zaczyna się pogarszać, co widać szczególnie na krańcach przedziałów. To zachowanie dotyczy [interpolacji wielomianowej]. Aby to zjawisko wystąpiło muszą być spełnione dwie przesłanki:
|
||||
- wysoki stopień wielomianu
|
||||
- równa odległość pomiędzy węzłami interpolacyjnymi
|
||||
|
||||
# [Macierz Vandermonda](https://pl.wikipedia.org/wiki/Macierz_Vandermonde%E2%80%99a)
|
||||
Taka macierz:
|
||||
$$
|
||||
A = \left(\begin{matrix}
|
||||
1 & 1 & 1 & 1 \\
|
||||
1 & 2 & 4 & 8 \\
|
||||
1 & 3 & 9 & 27 \\
|
||||
1 & 4 & 16 & 64
|
||||
\end{matrix}\right)
|
||||
$$
|
||||
|
||||
Albo bardziej ogólnie:
|
||||
$$
|
||||
A = \left(\begin{matrix}
|
||||
1 & x_1 & x^2_1 & \cdots & x^{n-1}_1 \\
|
||||
1 & x_2 & x^2_2 & \cdots & x^{n-1}_2 \\
|
||||
\vdots & \vdots & \vdots & \ddots & \vdots \\
|
||||
1 & x_n & x^2_n & \cdots & x^{n-1}_n
|
||||
\end{matrix}\right)
|
||||
$$
|
||||
Wyznacznik tej macierzy to specjalny **wyznacznik Vandermonde'a** i jest zapisywany w postaci:
|
||||
$$
|
||||
\det A = \prod_{1 \leqslant i<j \leqslant n} (x_j-x_i).
|
||||
$$
|
||||
# [Punkt stacjonarny](https://pl.wikipedia.org/wiki/Punkt_stacjonarny)
|
||||
Zwany również punktem krytycznym, punkt w dziedzinie funkcji rzeczywistej, w którym pierwsza pochodna przyjmuje wartość zero. W tym punkcie oryginalna funkcja oczywiście zmienia kierunek.
|
||||
Jeśli w tym punkcie istnieje druga pochodna, to punkt ten jest ekstremum lokalnym lub punktem przegięcia (przegioles pale).
|
||||
Dla funkcji wielu zmiennych w punkcie krytycznym zerują sie pochodne cząstkowe.
|
||||
|
||||
# [Gradient](https://pl.wikipedia.org/wiki/Gradient_(matematyka))
|
||||
Wektor, który wskazuje gdzie funkcja rośnie. Długość wektora mówi nam o ile wzrasta funkcja na jednostkę długości.
|
||||
uno dos tres quanto sinco sinco ses
|
||||
|
||||
[Wyznaczanie gradientu](https://youtu.be/Pt-AJvGEPuA?si=Q2Gh7xz62cELr_8j&t=9)
|
||||
|
||||
Ogólnie rzecz ujmując sprowadza się do tego, żeby obliczyć pochodne po następnych zmiennych ($x, y, z$), a potem umieścić je w wektorze. Potem obliczyć wartość gradientu dla konkretnego punktu.
|
||||
|
||||
# Metoda częściowego wyboru elementu podstawowego
|
||||
Rozwinięcie metody eliminacji Gausaa, które polega na znalezieniem najlepszego kandydata do eliminowania kolumn przed rozpoczęciem całej procedury.
|
||||
- Będąc w k-tym kroku eliminacji wybieramy k-tą kolumnę i szukamy maksimum po module poniżej głównej przekątnej włącznie.
|
||||
- Ten wiersz gdzie znaleźliśmy nową liczbę zamieniamy z k-tym wierszem.
|
||||
Dzięki temu nie dzielimy przez zero jak debil i pomniejszamy błędy wynikające z zaokrągleń wyników dzielenia małych liczb.
|
||||
|
||||
# [Metoda Newtona](https://pl.wikipedia.org/wiki/Metoda_Newtona)
|
||||
Zwana również metodą stycznych polega na tym, że się styka ten teges. Proste i logiczne.
|
||||
|
||||
Algorytm prowadzi do znalezienia przybliżonej wartości miejsca zerowego funkcji jednej lub wielu zmiennych.
|
||||
|
||||
Jeżeli w przedziale znajduje się 1 pierwiastek funkcji, krańce mają różne znaki, pierwsza i druga mają stały znak w przedziale to wybieramy dowolny kraniec przedziału, wyznaczamy styczną do wykresu funkcji w tym punkcie, wyznaczamy odciętą punktu przecięcia stycznej z osią OX – odcięta jest drugim przybliżeniem szukanego rozwiązania. Nową wartość przyjmujemy jako startową i tak powstaje perpetum debile.
|
||||
|
||||
Metodę te można uogólnić do przypadku wielowymiarowej. Wtedy ponownie wybieramy punkt startowy, a następnie rekurencyjnie przekształcamy wektor jedynek lub zerowy, aż do momentu satysfakcjonującego nas przybliżenia. Wektor ma tyle kolumn/wierszy co liczba zmiennych w wielomianie.Przkształcamy wektor zgodnie z równaniem macierzowym:
|
||||
$$
|
||||
x_{k+1} = x_K - (F'(x_k))^{-1} F(x_k)
|
||||
$$
|
||||
Gdzie $F'(x_K)$ to macierz Jacobiego. Zawiera wszystkie możliwe pochodne cząstkowe pierwszego rzędu. $F(x_K)$ to wektor wartości rozwiązań wszystkich równań dla aktualnego punktu.
|
||||
|
||||
Kończymy liczyć, gdy osiągniemy wystaczające przybliżenie, czyli wartość jest mniejsza niz epsilon.
|
||||
|
||||
# Wielomian interpolacyjny w postaci Newtona
|
||||
Jak to gówno zbudować?
|
||||
1. Bierzemy punkty np.
|
||||
$$
|
||||
\begin{align}
|
||||
(x_o, y_0) \\
|
||||
(x_1, y_1) \\
|
||||
(x_2, y_2)
|
||||
\end{align}
|
||||
$$
|
||||
2. Wykonujemy działania
|
||||
$$
|
||||
\begin{align}
|
||||
I_1 &= \frac{y_0 - y_1}{x_0 - x_1} \\
|
||||
I_2 &= \frac{y_2 - y_1}{x_2 - x_1} \\
|
||||
I_3 &= \frac{I_2 - I_1}{x_2 - x_0} \\
|
||||
\end{align}
|
||||
$$
|
||||
3. Podstawiamy:
|
||||
$$
|
||||
W(x) = y_0 + I_1(x - x_0) + I_3(x - x_0)(x - x_1) +…
|
||||
$$
|
||||
Tablica ilorazów różnicowych
|
||||
|
||||
| $x_i$ | $f(x_i)$ | $I_1$ | $I_2$ | $I_3$ | |
|
||||
| --------- | -------- | ------------- | ------------------ | ----------------------- | --- |
|
||||
| $x_0$<br> | $f(x_0)$ | $f[x_0, x_1]$ | $f[x_0, x_1, x_2]$ | $f[x_0, x_1, x_2, x_3]$ | |
|
||||
| $x_1$ | $f(x_1)$ | $f[x_1, x_2]$ | $f[x_1, x_2, x_3]$ | | |
|
||||
| ... | | | | | |
|
||||
Czyli dla przykładu:
|
||||
x: $-3\ 1\ 3$
|
||||
f(x) $8\ 16\ 24$
|
||||
|
||||
| -3 | 8 | $\frac{8}{4} = 2$ | $\frac{1}{3}$ |
|
||||
| ------------- | --- | ----------------- | ------------- |
|
||||
| 1 | 16 | $\frac{8}{2} = 4$ | |
|
||||
| 3 | 24 | | |
|
||||
| | | | |
|
||||
| Współczynniki | 8 | 2 | $\frac{1}{3}$ |
|
||||
$W(x) = 8 + 2(x + 3) + \frac{1}{3}(x + 3)(x - 1)$
|
||||
|
||||
# [Hesjan](https://pl.wikipedia.org/wiki/Macierz_Hessego)
|
||||
Elitarna macierz drugich pochodnych cząstkowych fla funkcji wielu zmiennych o wartościach rzeczywistych dwukrotnie różniczkowalnych w punkcie, w którym liczone są te pochodne.
|
||||
Cała ta macierz opisuje własności krzywizny wykresu funkcji w otoczeniu punktu. Jest wyznaczana np. w punktach krytycznych przy wyszukiwaniu ekstremów i punktów przegięcia (przegioles).
|
||||
Macierz ta jest kwadratowa.
|
||||
|
||||
Buduje się ją w sposób następujący:
|
||||
Musimy policzyć wszytkie możliwe pochodne drugiego stopnia. Po x, po xy, po xz, po z, po zx, itp, itd. Potem układamy to tak:
|
||||
- po przekątnej pochodne po jednej zmiennej
|
||||
- w kolumnach ustawiamy pochodne po kolejnych zmiennych
|
||||
- w rzędach zmieniamy naszą pojedyńczą zmienną pochodną
|
||||
|
||||
# [Wersor](https://pl.wikipedia.org/wiki/Wektor_jednostkowy)
|
||||
Wektor jednostkowy o długości jeden. Wskazuje kierunek i zwrot pewnego wektora początkowego, któremu ten wersor się przypisuje. Każdy wektor można zamienić na wersor (znormalizować) dzieląc go przez jego długość.
|
||||

|
||||
|
||||
|
||||
# [Aproksymacja sześcienna]
|
||||
POlega na przykładaniu funkcje szcześciennej do wykresu. Jako punktów uzywa wartości funkcji i jej pochodnych. żeby to było możliwe to oczywiście musi być na krańcach przedzialu pochodna wymnożona na minusie tego typu
|
||||
# Wyznaczniki macierzy trójkątnych i diagonalnych
|
||||
Oblicza się je mnożąć przez siebie wszytkie liczby leżące na głównej przekątnej.
|
||||
Macierz diagonalna – ma liczby tylko na przekątnej.
|
||||
Macierz trójkątna górna –» ma zera pod główną przekątną.
|
||||
# [Metoda falsi](https://pl.wikipedia.org/wiki/Regula_falsi)
|
||||
Falsi z nazwy metody oznacza oczywiście, że jest do dupy.
|
||||
|
||||
Bierzemy jeden punkt powyżej zera, drugi jest poniżej. Rysujemy prostą (falsi[znaną również pod nazwą prosta sraka]). Tam gdzie sraka przechodzi przez oś OX liczymy wartość funkcji. Zamieniamy to na ten poprzedni punkt. Powtarzamy, aż osiągniemy dokładność.
|
||||
# [Metoda Powella](http://www.optymalizacja.w8.pl/Powella.html)
|
||||
Metoda bezgradientowa, która wykorzystuje wersor.
|
||||
|
||||
Mamy dwa wektory (kierunki) $d_i$ i $d_j$. Nazywamy je sprzężonymi względem kwadratowej dodatnio określonej macierzy H jeśli:
|
||||
$$
|
||||
d_i^T \cdot H d_i = 0 \ \text {dla } i \neq j
|
||||
$$
|
||||
# [Metoda najszybszego spadku](https://pl.wikipedia.org/wiki/Metoda_najszybszego_spadku)
|
||||
Metoda gradientowa.
|
||||
$$
|
||||
\begin{align}
|
||||
P_{k + 1} &= P_K - \alpha_k \nabla_k \\
|
||||
\text{gdzie:}
|
||||
\alpha_k &= \frac{\nabla_k^T \nabla_k}{\nabla_K^T H_k \nabla_K}
|
||||
\end{align}
|
||||
$$
|
||||
Co to dokładnie oznacza? Każdy kolejny krok to aktualny krok minus gradient razy krok. A krok $\alpha$ to transponowany gradient razy gradient podzielone przez transponowany gradient razy gradient razy hesjan.
|
||||
|
||||
Problemem tej metody jest to, że potrafi zwolni i zyzgakować, jeśli funkcja ma kształt wąskiej, ukośnej doliny. Żeby temu zapobiec:
|
||||
- wprowadza się nowe kierunki za pomocą $\Delta = P_{k + 1} - P_K$
|
||||
- obraca układ współrzędnych, by jedna z osi pokrywała się z dnem.
|
||||
|
||||
# Warunek przy szukaniu pierwiastków równań nieliniowych
|
||||
$f(a) \cdot f(b) < 0$
|
||||
W komputerach może występować zjawisko niedomiaru, które wynika z zaokrągleń do zera przy bardzo niskich wartościach. Aby temu zapobiec robi się taki myk:
|
||||
```matlab
|
||||
sign(f(a)) != sign(f(b))
|
||||
```
|
||||
|
||||
|
||||
# [Metoda połowienia](https://pl.wikipedia.org/wiki/Metoda_r%C3%B3wnego_podzia%C5%82u)
|
||||
Algorytm poszukiwania pierwiastka funkcji.
|
||||
|
||||
Metoda polega na dzieleniu przedziału na pół, a następnie odrzucaniu podprzedziału, w którym dwa jego krańce nie zmieniają znaku.
|
||||
# [Metoda złotego podziału](https://pl.wikipedia.org/wiki/Metoda_z%C5%82otego_podzia%C5%82u)
|
||||
Metoda optymalizacji jednowymiarowej funkcji celu.
|
||||
|
||||
Polega na wybraniu dwóch punktów, które wyznaczane tak, by dzieliły aktualny przedział w proporcji złotego podziału ( $61.8\%$) Wybieramy punkt, który jest niżej, aż osiągniemy zadaną dokładność $\epsilon$. Wtedy bierzemy środek tego przedziału i *beng* mamy minimum!
|
||||
|
||||
# [Simplex](https://pl.wikipedia.org/wiki/Algorytm_sympleksowy)
|
||||
## Jak to liczyć?
|
||||
1. Mamy układ równań, przekształcamy go w taki sposób, by po prawej stronie wszystkie wartości były dodatnie
|
||||
$$
|
||||
\begin{align*}
|
||||
&f(x,y) = 7x + 2y - 3z \to \max \\
|
||||
&\text{ograniczenia:}
|
||||
\end{align*}
|
||||
$$
|
||||
$$
|
||||
\begin{align*}
|
||||
\begin{cases}
|
||||
2x + y - 3z &= 12 \\
|
||||
5x - 3y + z &\geqslant 15 \\
|
||||
-x + 2y &\geqslant -1 \implies x - 2y \leqslant 1
|
||||
\end{cases}
|
||||
\end{align*}
|
||||
$$
|
||||
2. Zamieniamy układ w taki sposób, by wyeliminować wszystkie symbole mniejsze/większe niż. Żeby to zrobić musimy albo odjąć albo dodać jakąś liczbę. Jeżeli mam więcej niż to musimy odjąć i analogicznie.
|
||||
$$
|
||||
\begin{align}
|
||||
\begin{cases}
|
||||
2x + y - 3z &= 12 \\
|
||||
5x - 3y + z - S_1 &= 15 \\
|
||||
-x + 2y + S_2 &= 1
|
||||
\end{cases}
|
||||
\end{align}
|
||||
$$
|
||||
3. Zapisujemy funkcję celu
|
||||
$$
|
||||
f(x, y, z, S_1, S_2) = 7x + 2y -3z + 0S_1 + 0S_2
|
||||
$$
|
||||
4. Sprawdzamy czy mamy macierz jednostkową, czyli czy mamy kwadrat 3x3 w którym w każdej kolumnie jest jedna jedynka i jest ona w różnych wierszach. W tym przypadku pasuje nam tylko $S_2$, więc dodajemy zmienne sztuczne.
|
||||
$$
|
||||
\begin{align}
|
||||
\begin{cases}
|
||||
2x + y -3z + a_1 &= 12 \\
|
||||
5x - 3y + z - S_1 + a_2 &= 15 \\
|
||||
x - 2y + S_2 &= 1
|
||||
\end{cases}
|
||||
\end{align}
|
||||
$$
|
||||
|
||||
Macierz jednostkowa
|
||||

|
||||
|
||||
5. Dodajemy albo bardzo dużo zmiennych sztucznych albo bardzo mało. Jeśli szukamy max to muszą być ujemne i analogicznie.
|
||||
$$
|
||||
f(x, y, z, S_1, S_2) = 7x + 2y -3z + 0S_1 + 0S_2 - 1000a_1 - 1000a_2
|
||||
$$
|
||||
6. Przechodzimy do uzupełniania tabelki
|
||||
- 1. W $Cj\rightarrow$ wpisujemy ilość następnych zmiennych.
|
||||
- 2.Wiersz pod tym wpisujemy co to są za zmienne.
|
||||
- 3. Pod $B\downarrow$ (bazowa) wpisujemy wyrazy wolne po przekształceniach.
|
||||
- 4. Pod $WB\downarrow$(wektory bazowe) wpisujemy nasze nowe sztuczne zmienne, które tworzą naszą macierz jednostkową.
|
||||
- 5. Pod $CB\downarrow$ wpisujemy ile mamy tych zmiennych.
|
||||
- 6. Uzupełniamy środek tabelki wartościami z układu równań dla poszczególnych zmiennych
|
||||
- 7. $WW\rightarrow$(wiersz wskaźnikowy) uzupełniamy poprzez wymnożenie wartości z kolumny CB razy poszczególne kolumny zmiennych. Np. $-1000 \cdot 12 + (-1000) \cdot 15 + 0 \cdot 1 = -27000$ . Potem od wyniku odejmujemy wartość funkcji celu. Czyli np dla kolumny $x$ wykonujemy działanie $-7000 - 7 = -7007$
|
||||
|
||||
| | | Cj$\rightarrow$ | 7 | 2 | -3 | 0 | 0 | -1000 | -1000 | |
|
||||
| -------------- | --------------- | --------------- | ----- | ---- | ---- | ----- | ----- | ----- | ----- | ------------------ |
|
||||
| CB$\downarrow$ | WB $\downarrow$ | B $\downarrow$ | x | y | z | $S_1$ | $S_2$ | $a_1$ | $a_2$ | $\frac{B}{x}$ |
|
||||
| -1000 | $a_1$ | 12 | 2 | 1 | -3 | 0 | 0 | 1 | 0 | $\frac{12}{2} = 6$ |
|
||||
| -1000 | $a_2$ | 15 | 5 | -3 | 1 | -1 | 0 | 0 | 1 | $\frac{15}{5} = 3$ |
|
||||
| 0 | $S_2$ | 1 | 1 | -2 | 0 | 0 | 1 | 0 | 0 | 1 |
|
||||
| | $WW\rightarrow$ | -27000 | -7007 | 1998 | 2003 | 1000 | 0 | 0 | 0 | |
|
||||
|
||||
- 8. Gdy już mamy taką tabelkę szukamy wartość zmiennej wiersza wskaźnikowego, która jest najmniejsza. W tym przypadku będzie to zmienna $x$. Ta kolumna będzie kluczowa.
|
||||
- 9. Szukamy najmniejszej wartości w $\frac{B}{x}$. To będzie wiersz kluczowy.
|
||||
- 10. Kolumna kluczowa wskazuje na wartość, która wchodzi do bazy, a wiersz kluczowy na wartość, która wylatuje.
|
||||
- 11. Wartość na przecięciu się kolumny i wiersza kluczowego to pivot. Pivot musi być 1, a jeśli nie jest to mnożymy wiersz razy tyle, żeby był.
|
||||
- 12. Używamy pivota, żeby zlikwidować liczbę nad nim. Ma być zerem! (Podobnie jak w metodzie eliminacji gaussa)
|
||||
|
||||
- 13.(7) Ponownie liczymy wiersz wskaźnikowy.
|
||||
|
||||
| | | Cj$\rightarrow$ | 7 | -2 | -3 | 0 | 0 | -1000 | -1000 | |
|
||||
| -------------- | --------------- | --------------- | --- | ------ | ---- | ----- | ----- | ----- | ----- | ------------------ |
|
||||
| CB$\downarrow$ | WB $\downarrow$ | B $\downarrow$ | x | y | z | $S_1$ | $S_2$ | $a_1$ | $a_2$ | $\frac{B}{y}$ |
|
||||
| -1000 | $a_1$ | 10 | 0 | 5 | -3 | 0 | -2 | 1 | 0 | $\frac{10}{5} = 2$ |
|
||||
| -1000 | $a_2$ | 10 | 0 | 7 | 1 | -1 | -5 | 0 | 1 | $\frac{10}{7}$ |
|
||||
| 7 | $x$ | 1 | 1 | 2 | 0 | 0 | 1 | 0 | 0 | $\frac{1}{-2}$ |
|
||||
| | $WW\rightarrow$ | -19993 | 0 | -12016 | 2003 | 1000 | 7007 | 0 | 0 | |
|
||||
- 14.(8) szukamy najmniejszej wartości w WW. To jest kolumna kluczowa. Tutaj to będzie y
|
||||
- 15. (9) wyliczamy $\frac{B}{x}$ i szukamy najmniejszej nieujemnej wartości. Wiersz kluczowy!
|
||||
- 16. Powtarzamy te kroki, aż w WW nie będzie ujemnych wartości. Wtedy w kolumnie WB w WW będzie wartość optymalna funkcji celu. W kolumnie B znajdziemy wtedy wartości zmiennych funkcji, które wpływają na ten wynik. Gdybyśmy liczyli minimum to nie mogłoby być żadnych liczb dodatnich!
|
||||
|
||||
**Na egzaminie nie trzeba rysować drugiej tabelki!**
|
||||
@@ -0,0 +1 @@
|
||||
Programowanie liniowe
|
||||
@@ -6,3 +6,46 @@ Będzie praca jakaś o prawie intelektualnym coś tam.
|
||||
|
||||
Zaczynamy o 12:30
|
||||
|
||||
Prawa:
|
||||
- autorskie
|
||||
- pokrewne
|
||||
- do baz danych
|
||||
- do odmian roślin i ras zwierząt
|
||||
- do farmaceutyków
|
||||
- do własności przemysłowej
|
||||
- zwalczanie nieuczciwej konkurencji
|
||||
|
||||
Jak się chronić:
|
||||
- z mocy prawa w momencie powstania przedmiotu ochrony – prawa autorskie, pokrewne i bazy danych
|
||||
- prezerwatywy
|
||||
- ochrona urzędowa, rejestracyjna
|
||||
|
||||
Geneza własności intelektualnej:
|
||||
- pojawienie się koncepcji – starożny Rzym Mercjalis (twórca plagiatu), Horacy(tworca praw majątkowych)
|
||||
- Średniowiecze – Masowe kradzieże autorastwa, oprócz da Vinciego. Znaczenie zyskały znaki towarowe, przynależność cechowa.
|
||||
- Renesans – opracowanie maszyny drukarskiej i upowszechnienie druku, skutkuje powstaniem przywilejów drukarskich.
|
||||
- Oświecenie – pierwsze przepisy o wlasności intelektualnej
|
||||
- IXX wiek – nie wiem, za szybko zamknął
|
||||
- XX wiek – rozwój regulacji międzynarowdowych w tym konwencja o ustanowieniu czegoś tam, za szybko zamknął
|
||||
|
||||
Dlaczego on mówi o ideologii średniowiecznej? Co to są za komentarze? Jakaś absurdalna teza, że bez średniowiecza rozwijalibyśmy się szybciej. Otóż po pierwsze: jakby wyciąć z historii średniowiecze to nie rozwijalibyśmy się 200 lat szybciej tylko oświecenie zostaloby średniowieczem. Po drugie: to nie jest miejsce na takie dziwne komentarze.
|
||||
Jestem oburzony.
|
||||
|
||||
Jakbyśmy się rozebrali do bielizny to, nie licząc majtek i skarpetek, nic nie byłoby z unii europejskiej. (Jaka jest bielizna oprócz majtek i skarpetek? Biustonosz? Tego akurat nie noszę)
|
||||
|
||||
Producenci tworzą słabe towary, za drogo i jest niedobrze, więc ludzie sięgają po podróbki.
|
||||
|
||||
Utwór to – każdy przejaw działalności twórczej o indywidualnym charakterze, ustalony w jakiejkolwiek postaci , niezależnie od wartości, przeznaczenia i sposobu wyrażenia.
|
||||
|
||||
Ochronę nie są objęte odkrycia, idee i koncepcje matematyczne, bo jebać matematyków, chuj im w dupe!
|
||||
|
||||
Rodzaje utworów:
|
||||
- wspólne
|
||||
- zależne
|
||||
- zbiorowe
|
||||
|
||||
Tantiemy – pieniądze za każde wykonanie utworu
|
||||
|
||||
Teraz streszcza jakiś film amerykański.
|
||||
|
||||
Hejtuje ring of pala, bardzo dobrze.
|
||||
Binary file not shown.
233
uczelnia/2_semestr/programowanie/laby/kolokwium3.cpp
Normal file
233
uczelnia/2_semestr/programowanie/laby/kolokwium3.cpp
Normal file
@@ -0,0 +1,233 @@
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <ostream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Wydawnictwo {
|
||||
std::string nazwa, miasto;
|
||||
|
||||
public:
|
||||
Wydawnictwo(std::string nazwa, std::string miasto)
|
||||
: nazwa(nazwa), miasto(miasto) {}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Wydawnictwo &p) {
|
||||
os << "Wydawnictwo o nazwie: " << p.nazwa << ", pochodzi z miasta "
|
||||
<< p.miasto;
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Pozycja {
|
||||
protected:
|
||||
std::string tytul;
|
||||
double cena;
|
||||
int liczba_egzamplarzy;
|
||||
Wydawnictwo wydawnictwo;
|
||||
|
||||
public:
|
||||
Pozycja(std::string tytul, double cena, int liczba_egzamplarzy,
|
||||
Wydawnictwo wydawnictwo)
|
||||
: tytul(tytul), cena(cena), liczba_egzamplarzy(liczba_egzamplarzy),
|
||||
wydawnictwo(wydawnictwo) {}
|
||||
virtual ~Pozycja() = default;
|
||||
|
||||
double wartosc() { return liczba_egzamplarzy * cena; }
|
||||
void zmienCene(double nowaCena) { cena = nowaCena; }
|
||||
std::string getTytul() const { return tytul; }
|
||||
virtual std::string kategoria() = 0;
|
||||
virtual void wypisz() {
|
||||
std::cout << "Pozycja pt. " << tytul << " kosztuje" << cena
|
||||
<< "\nAktualnie jest " << liczba_egzamplarzy << " takich pozycji."
|
||||
<< "\nWydawnictwo to: " << wydawnictwo;
|
||||
}
|
||||
virtual double cenaKoncowa() const = 0;
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Pozycja &p) {
|
||||
os << "Tytuł: " << p.tytul << " kosztuje " << p.cenaKoncowa()
|
||||
<< " i jest kategorii " << p.kategoria() << '\n'
|
||||
<< "Aktualnie jest " << p.liczba_egzamplarzy << " tej pozycji";
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Ksiazka : public Pozycja {
|
||||
int liczbaStron;
|
||||
|
||||
public:
|
||||
Ksiazka(std::string tytul, double cena, int liczba_egzamplarzy,
|
||||
Wydawnictwo wydawnictwo, int liczbaStron)
|
||||
: Pozycja(tytul, cena, liczba_egzamplarzy, wydawnictwo),
|
||||
liczbaStron(liczbaStron) {}
|
||||
~Ksiazka() {}
|
||||
|
||||
std::string kategoria() override { return "ksiazka"; }
|
||||
|
||||
double cenaKoncowa() const override {
|
||||
if (liczbaStron < 100) {
|
||||
return cena - cena * 0.1;
|
||||
}
|
||||
return cena;
|
||||
}
|
||||
|
||||
void wypisz() override {
|
||||
wypisz();
|
||||
std::cout << "\nLiczba stron wynosi" << liczbaStron << '\n';
|
||||
}
|
||||
|
||||
Ksiazka operator+(Ksiazka &p1) {
|
||||
Ksiazka nowa_pozycja =
|
||||
Ksiazka(tytul, cena, liczba_egzamplarzy + p1.liczba_egzamplarzy,
|
||||
wydawnictwo, liczbaStron);
|
||||
return nowa_pozycja;
|
||||
};
|
||||
};
|
||||
|
||||
class Czasopismo : public Pozycja {
|
||||
int numerWydania;
|
||||
|
||||
public:
|
||||
Czasopismo(std::string tytul, double cena, int liczba_egzamplarzy,
|
||||
Wydawnictwo wydawnictwo, int numerWydania)
|
||||
: Pozycja(tytul, cena, liczba_egzamplarzy, wydawnictwo),
|
||||
numerWydania(numerWydania) {}
|
||||
|
||||
~Czasopismo() {}
|
||||
|
||||
std::string kategoria() override { return "czasopismo"; }
|
||||
|
||||
double cenaKoncowa() const override {
|
||||
if (numerWydania < 12) {
|
||||
return cena - cena * 0.2;
|
||||
}
|
||||
return cena;
|
||||
}
|
||||
|
||||
void wypisz() override {
|
||||
wypisz();
|
||||
std::cout << "\nNumer wydania to: " << numerWydania << '\n';
|
||||
}
|
||||
|
||||
Czasopismo operator+(Czasopismo &p1) {
|
||||
Czasopismo nowa_pozycja =
|
||||
Czasopismo(tytul, cena, liczba_egzamplarzy + p1.liczba_egzamplarzy,
|
||||
wydawnictwo, numerWydania);
|
||||
return nowa_pozycja;
|
||||
};
|
||||
};
|
||||
|
||||
class Biblioteka {
|
||||
std::vector<std::unique_ptr<Pozycja>> pozycje;
|
||||
int size;
|
||||
static int biblioteka_ammount;
|
||||
|
||||
public:
|
||||
Biblioteka(int size) : size(size) {
|
||||
pozycje.reserve(size);
|
||||
biblioteka_ammount++;
|
||||
}
|
||||
~Biblioteka() {} // nie musimy ręcznie zwalniać pamięci ponieważ unique_ptr sam
|
||||
// się zwalnia, gdy jego właściciel umiera
|
||||
void dodajPozycje(std::unique_ptr<Pozycja> p) {
|
||||
pozycje.push_back(std::move(p));
|
||||
}
|
||||
|
||||
Pozycja *znajdzPozycje(const std::string &tytul) const {
|
||||
for (auto &p : pozycje) {
|
||||
if (p->getTytul() == tytul) {
|
||||
return p.get();
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Pozycja &operator[](int index) {
|
||||
if (index < 0 || index >> size) {
|
||||
throw std::out_of_range(
|
||||
"Index nie może być mniejszy niż zero lub większy niż rozmiar");
|
||||
}
|
||||
Pozycja *p = pozycje[index].get();
|
||||
return *p;
|
||||
}
|
||||
|
||||
void sortujWgCeny() { std::sort(pozycje.begin(), pozycje.end()); }
|
||||
|
||||
void wypiszWszystkie() const {
|
||||
for (auto &p : pozycje) {
|
||||
p->wypisz();
|
||||
}
|
||||
}
|
||||
|
||||
double obliczWartoscBiblioteki() const {
|
||||
double sum = 0;
|
||||
for (auto &p : pozycje) {
|
||||
sum += p->wartosc();
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
int ilePozycjiKategorii(const std::string &kat) {
|
||||
int sum = 0;
|
||||
for (auto &p : pozycje) {
|
||||
if (p->kategoria() == kat) {
|
||||
sum++;
|
||||
}
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
static int ileBibliotek() { return biblioteka_ammount; }
|
||||
};
|
||||
|
||||
int Biblioteka::biblioteka_ammount = 0;
|
||||
|
||||
int main() {
|
||||
Biblioteka biblioteka = Biblioteka(10);
|
||||
|
||||
Wydawnictwo w1 = Wydawnictwo("Nowa Era", "Szczecin");
|
||||
Wydawnictwo w2 = Wydawnictwo("Stara Era", "Warszawa");
|
||||
|
||||
biblioteka.dodajPozycje(
|
||||
std::make_unique<Ksiazka>("Ogniem i Mieczem", 12, 10, w1, 360));
|
||||
|
||||
biblioteka.dodajPozycje(
|
||||
std::make_unique<Czasopismo>("Telenowele", 2, 1, w2, 3));
|
||||
|
||||
Pozycja *znalezionaPozycja = biblioteka.znajdzPozycje("Ogniem i Mieczem");
|
||||
if (!znalezionaPozycja) {
|
||||
std::cout << "Nie znaleziono pozycji!!!\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::cout << "Przed zmianą ceny: " << *znalezionaPozycja << std::endl;
|
||||
znalezionaPozycja->zmienCene(123);
|
||||
std::cout << "Po zmianie ceny: " << *znalezionaPozycja << std::endl;
|
||||
|
||||
Pozycja *znalezionaPozycja2 = biblioteka.znajdzPozycje("Telenowele");
|
||||
if (!znalezionaPozycja) {
|
||||
std::cout << "Nie znaleziono pozycji 2!!!\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
Ksiazka k1 = Ksiazka("Trala", 23, 12, w1, 1);
|
||||
Ksiazka k2 = Ksiazka("Tra", 1, 1, w1, 1);
|
||||
std::cout << "\n=== Dodawanie ===\n";
|
||||
Ksiazka k3 = k1 + k2;
|
||||
std::cout << k1 << std::endl;
|
||||
std::cout << k2 << std::endl;
|
||||
std::cout << k3 << std::endl;
|
||||
std::cout << "\n=== Wyświetlanie ===\n";
|
||||
std::cout << "Zerowy element biblioteki: " << biblioteka[0] << std::endl;
|
||||
std::cout << "Biblioteka jest warta " << biblioteka.obliczWartoscBiblioteki()
|
||||
<< std::endl;
|
||||
std::cout << "Aktualnie jest " << biblioteka.ilePozycjiKategorii("ksiazka")
|
||||
<< " książek" << std::endl;
|
||||
std::cout << "Aktualnie jest " << biblioteka.ileBibliotek() << " bibliotek"
|
||||
<< std::endl;
|
||||
std::cout << "\n=== Sortowanie ===\n";
|
||||
// biblioteka.wypiszWszystkie();
|
||||
biblioteka.sortujWgCeny();
|
||||
// biblioteka.wypiszWszystkie();
|
||||
}
|
||||
188
uczelnia/2_semestr/programowanie/laby/kolokwium3_probne.cpp
Normal file
188
uczelnia/2_semestr/programowanie/laby/kolokwium3_probne.cpp
Normal file
@@ -0,0 +1,188 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Producent {
|
||||
std::string nazwa, kraj;
|
||||
|
||||
public:
|
||||
Producent(std::string nazwa, std::string kraj) : nazwa(nazwa), kraj(kraj) {}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, const Producent &p) {
|
||||
os << "Producent o nazwie " << p.nazwa << " z kraju " << p.kraj;
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Towar {
|
||||
protected:
|
||||
std::string nazwa;
|
||||
|
||||
double cena;
|
||||
int sztuki;
|
||||
Producent producent;
|
||||
|
||||
public:
|
||||
Towar(std::string nazwa, double cena, int sztuki, const Producent &producent)
|
||||
: nazwa(nazwa), cena(cena), sztuki(sztuki), producent(producent) {}
|
||||
|
||||
virtual ~Towar() = default;
|
||||
double wartosc() const { return cena * sztuki; }
|
||||
void zmienCene(double nowaCena) { cena = nowaCena; }
|
||||
void dodajSztuki(int ile) { sztuki += ile; }
|
||||
|
||||
std::string getNazwa() const { return nazwa; }
|
||||
|
||||
virtual std::string kategoria() const = 0;
|
||||
|
||||
virtual void wypisz() const {
|
||||
std::cout << "Nazwa: " << nazwa << ", Cena jedn.: " << cena
|
||||
<< ", Sztuk: " << sztuki << ", " << producent;
|
||||
}
|
||||
|
||||
virtual double cenaKoncowa() const = 0;
|
||||
|
||||
int operator+(const Towar &t) const { return sztuki + t.sztuki; }
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, const Towar &t) {
|
||||
os << t.nazwa << " należy do kategorii " << t.kategoria()
|
||||
<< " i kosztuje w sumie " << t.cenaKoncowa();
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class TowarSpozywczy : public Towar {
|
||||
std::string terminWaznosci;
|
||||
|
||||
public:
|
||||
TowarSpozywczy(std::string nazwa, double cena, int sztuki,
|
||||
const Producent &producent, std::string terminWaznosci)
|
||||
: Towar(nazwa, cena, sztuki, producent), terminWaznosci(terminWaznosci) {}
|
||||
~TowarSpozywczy() {}
|
||||
|
||||
std::string kategoria() const override { return "spożywczy"; }
|
||||
double cenaKoncowa() const override {
|
||||
int rabat = 10;
|
||||
return wartosc() - rabat;
|
||||
}
|
||||
void wypisz() const override {
|
||||
Towar::wypisz();
|
||||
|
||||
std::cout << ", termin ważności do " << terminWaznosci;
|
||||
}
|
||||
};
|
||||
|
||||
class TowarElektroniczny : public Towar {
|
||||
int gwarancja;
|
||||
|
||||
public:
|
||||
TowarElektroniczny(std::string nazwa, double cena, int sztuki,
|
||||
const Producent &producent, int gwarancja)
|
||||
: Towar(nazwa, cena, sztuki, producent), gwarancja(gwarancja) {}
|
||||
~TowarElektroniczny() {}
|
||||
|
||||
std::string kategoria() const override { return "elektronika"; }
|
||||
double cenaKoncowa() const override {
|
||||
int koszt_gwarancji = 67;
|
||||
return wartosc() + koszt_gwarancji;
|
||||
}
|
||||
|
||||
void wypisz() const override {
|
||||
Towar::wypisz();
|
||||
std::cout << ", gwarancja na " << gwarancja << " miesięcy";
|
||||
}
|
||||
};
|
||||
|
||||
class Sklep {
|
||||
std::vector<std::unique_ptr<Towar>> towary;
|
||||
int max_towar, current_towar;
|
||||
static int SKLEP_AMMOUNT;
|
||||
|
||||
public:
|
||||
Sklep(int max) : max_towar(max), current_towar(0) {
|
||||
towary.reserve(max);
|
||||
SKLEP_AMMOUNT++;
|
||||
}
|
||||
~Sklep() { towary.clear(); }
|
||||
|
||||
bool dodajTowar(std::unique_ptr<Towar> t) {
|
||||
towary.push_back(std::move(t));
|
||||
return true;
|
||||
}
|
||||
|
||||
Towar *znajdzTowar(const std::string &nazwa) {
|
||||
for (auto &towar : towary) {
|
||||
if (towar->getNazwa() == nazwa) {
|
||||
return towar.get();
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void wypiszWszystkie() const {
|
||||
for (auto &towar : towary) {
|
||||
towar->wypisz();
|
||||
std::cout << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
double obliczWartoscSklepu() const {
|
||||
double sum = 0;
|
||||
for (const auto &towar : towary) {
|
||||
sum += towar->cenaKoncowa();
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
int ileTowarowKategorii(const std::string &kat) const {
|
||||
int sum = 0;
|
||||
for (const auto &towar : towary) {
|
||||
if (towar->kategoria() == kat) {
|
||||
sum++;
|
||||
}
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
static int ileSklepow() { return SKLEP_AMMOUNT; }
|
||||
};
|
||||
|
||||
int Sklep::SKLEP_AMMOUNT = 0;
|
||||
|
||||
int main() {
|
||||
Sklep sklep = Sklep(10);
|
||||
Producent producent1 = Producent("Rafał Brzoska", "Polska");
|
||||
Producent producent2 = Producent("Jeff Bezos", "Afryka");
|
||||
|
||||
sklep.dodajTowar(
|
||||
std::make_unique<TowarSpozywczy>("burak", 20, 5, producent1, "67 lat"));
|
||||
|
||||
sklep.dodajTowar(
|
||||
std::make_unique<TowarElektroniczny>("komputer", 20, 5, producent2, 24));
|
||||
|
||||
Towar *znalezionyTowar = sklep.znajdzTowar("burak");
|
||||
|
||||
Towar *znalezionyTowar2 = sklep.znajdzTowar("komputer");
|
||||
|
||||
if (znalezionyTowar)
|
||||
znalezionyTowar->zmienCene(1);
|
||||
|
||||
if (znalezionyTowar && znalezionyTowar2) {
|
||||
int wynik = *znalezionyTowar + *znalezionyTowar2;
|
||||
std::cout << wynik << std::endl;
|
||||
}
|
||||
|
||||
if (znalezionyTowar)
|
||||
std::cout << *znalezionyTowar << std::endl;
|
||||
|
||||
if (znalezionyTowar2)
|
||||
std::cout << *znalezionyTowar2 << std::endl;
|
||||
|
||||
std::cout << sklep.obliczWartoscSklepu() << std::endl;
|
||||
std::cout << sklep.ileTowarowKategorii("spożywczy") << std::endl;
|
||||
std::cout << sklep.ileSklepow() << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
110
uczelnia/2_semestr/programowanie/laby/kolokwium3_probne_2.cpp
Normal file
110
uczelnia/2_semestr/programowanie/laby/kolokwium3_probne_2.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Producent {
|
||||
std::string nazwa;
|
||||
std::string kraj;
|
||||
|
||||
public:
|
||||
Producent(std::string nazwa, std::string kraj) : nazwa(nazwa), kraj(kraj) {}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, const Producent p) {
|
||||
os << "Nazwa: " << p.nazwa << " pochodzi z kraju: " << p.kraj;
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Towar {
|
||||
protected:
|
||||
std::string nazwa;
|
||||
double cena;
|
||||
int sztuki;
|
||||
Producent producent;
|
||||
|
||||
public:
|
||||
Towar(std::string nazwa, double cena, int sztuki, Producent producent)
|
||||
: nazwa(nazwa), cena(cena), sztuki(sztuki), producent(producent) {}
|
||||
virtual ~Towar() = default;
|
||||
|
||||
double wartosc() const { return cena * sztuki; }
|
||||
|
||||
void zmienCene(double nowaCena) { cena = nowaCena; }
|
||||
|
||||
virtual std::string kategoria() = 0;
|
||||
|
||||
virtual void wypisz() const {
|
||||
std::cout << "Nazwa: " << nazwa << " kosztuje " << cena
|
||||
<< ". Aktualnie jest " << sztuki << " sztuk. Producent to "
|
||||
<< producent << std::endl;
|
||||
}
|
||||
|
||||
virtual double cenaKoncowa() const = 0;
|
||||
|
||||
int operator+(Towar &t) { return sztuki + t.sztuki; }
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Towar &t) {
|
||||
os << "Nazwa: " << t.nazwa << " kosztuje " << t.cenaKoncowa()
|
||||
<< ". Aktualnie jest " << t.sztuki << " sztuk. Producent to "
|
||||
<< t.producent;
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class TowarSpozywczy : public Towar {
|
||||
std::string terminWaznosci;
|
||||
|
||||
public:
|
||||
TowarSpozywczy(std::string nazwa, double cena, int sztuki,
|
||||
Producent producent, std::string terminWaznosci)
|
||||
: Towar(nazwa, cena, sztuki, producent), terminWaznosci(terminWaznosci) {}
|
||||
|
||||
std::string kategoria() override { return "spozywczy"; }
|
||||
double cenaKoncowa() const override {
|
||||
int rabat = 5;
|
||||
return wartosc() - rabat;
|
||||
}
|
||||
|
||||
void wypisz() const override {
|
||||
wypisz();
|
||||
std::cout << "Termin ważności jest do " << terminWaznosci << std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
class TowarElektroniczny : public Towar {
|
||||
int gwarancjaMiesiace;
|
||||
|
||||
public:
|
||||
TowarElektroniczny(std::string nazwa, double cena, int sztuki,
|
||||
Producent producent, int gwarancjaMiesiace)
|
||||
: Towar(nazwa, cena, sztuki, producent),
|
||||
gwarancjaMiesiace(gwarancjaMiesiace) {}
|
||||
|
||||
std::string kategoria() override { return "spozywczy"; }
|
||||
double cenaKoncowa() const override {
|
||||
int koszt_gwarancji = 10;
|
||||
return wartosc() + koszt_gwarancji;
|
||||
}
|
||||
|
||||
void wypisz() const override {
|
||||
wypisz();
|
||||
std::cout << "Gwarancja trwa" << gwarancjaMiesiace << " miesięcy."
|
||||
<< std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
class Sklep {
|
||||
std::vector<std::unique_ptr<Towar>> towary;
|
||||
int max;
|
||||
int current;
|
||||
|
||||
static int liczba_sklepow;
|
||||
|
||||
public:
|
||||
Sklep(int max) : max(max), current(0) { towary.reserve(max); }
|
||||
};
|
||||
|
||||
int Sklep::liczba_sklepow = 0;
|
||||
121
uczelnia/2_semestr/programowanie/laby/kolosy/kolokwium2.cpp
Normal file
121
uczelnia/2_semestr/programowanie/laby/kolosy/kolokwium2.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
#include <cstddef>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
class Towar {
|
||||
double cena;
|
||||
int sztuki;
|
||||
|
||||
public:
|
||||
std::string nazwa;
|
||||
Towar(std::string nazwa, double cena, int sztuki)
|
||||
: nazwa(nazwa), cena(cena), sztuki(sztuki) {}
|
||||
Towar() {}
|
||||
|
||||
void wypisz() const {
|
||||
std::cout << "Nazwa: " << nazwa << '\n'
|
||||
<< "Cena: " << cena << '\n'
|
||||
<< "Liczba sztuk: " << sztuki << std::endl;
|
||||
}
|
||||
double wartosc() const { return cena * sztuki; }
|
||||
void zmienCene(double nowaCena) { cena = nowaCena; }
|
||||
void dodajSztuki(int ile) { sztuki += ile; }
|
||||
// int operator+(Towar &t) { return cena + t.cena; }
|
||||
Towar operator+(Towar &t) {
|
||||
return Towar(nazwa + t.nazwa, cena + t.cena, sztuki + t.sztuki);
|
||||
}
|
||||
};
|
||||
|
||||
class Sklep {
|
||||
Towar *sklep;
|
||||
int max_ammount;
|
||||
int current_ammount;
|
||||
static int sklep_ammount;
|
||||
|
||||
public:
|
||||
Sklep(size_t max_towary)
|
||||
: max_ammount(max_towary), sklep(new Towar[max_towary]),
|
||||
current_ammount(0) {
|
||||
Sklep::sklep_ammount++;
|
||||
}
|
||||
|
||||
~Sklep() {
|
||||
delete[] sklep;
|
||||
sklep = nullptr;
|
||||
Sklep::sklep_ammount--;
|
||||
}
|
||||
|
||||
bool dodajTowar(const Towar &t) {
|
||||
if (current_ammount >= max_ammount) {
|
||||
return false;
|
||||
}
|
||||
sklep[current_ammount++] = t;
|
||||
return true;
|
||||
}
|
||||
|
||||
Towar *znajdzTowar(const std::string &nazwa) {
|
||||
for (int i = 0; i < current_ammount; i++) {
|
||||
if (sklep[i].nazwa == nazwa) {
|
||||
return &sklep[i];
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void wypiszWszystkie() const {
|
||||
for (int i = 0; i < current_ammount; i++) {
|
||||
sklep[i].wypisz();
|
||||
}
|
||||
}
|
||||
|
||||
double obliczWartoscSklepu() const {
|
||||
double sum = 0;
|
||||
for (int i = 0; i < current_ammount; i++) {
|
||||
sum += sklep[i].wartosc();
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
static int ileSklepow() { return Sklep::sklep_ammount; }
|
||||
};
|
||||
|
||||
int Sklep::sklep_ammount = 0;
|
||||
|
||||
int main() {
|
||||
Sklep sklep = Sklep(5);
|
||||
std::cout << "=== 1. Oryginalny stan sklepu ===" << std::endl;
|
||||
sklep.dodajTowar(Towar("Marchewka", 2, 3));
|
||||
sklep.dodajTowar(Towar("Banan", 4, 2));
|
||||
sklep.dodajTowar(Towar("Jabłko", 5, 3));
|
||||
sklep.dodajTowar(Towar("Ziemniak", 10, 15));
|
||||
sklep.wypiszWszystkie();
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << "=== 2. Modyfikowany stan sklepu ===" << std::endl;
|
||||
|
||||
Towar *znalezionyTowar = sklep.znajdzTowar("Marchewka");
|
||||
znalezionyTowar->zmienCene(4);
|
||||
sklep.wypiszWszystkie();
|
||||
Towar *znalezionyTowar2 = sklep.znajdzTowar("Banan");
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << "=== 3. Dodajemy marchewkę z bananem ===" << std::endl;
|
||||
|
||||
Towar suma_towarow = *znalezionyTowar + *znalezionyTowar2;
|
||||
suma_towarow.wypisz();
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << "=== 4. Wypisujemy wszystkie towary ===" << std::endl;
|
||||
|
||||
sklep.wypiszWszystkie();
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << "=== 5. Wypisujemy łączną wartość sklepu ===" << std::endl;
|
||||
|
||||
std::cout << "Wartość: " << sklep.obliczWartoscSklepu() << std::endl;
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << "=== 6. Wypisujemy łączną ilość sklepów ===" << std::endl;
|
||||
|
||||
std::cout << "Ilość: " << sklep.ileSklepow() << std::endl;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
class Produkt {
|
||||
double cena;
|
||||
int ilosc;
|
||||
|
||||
public:
|
||||
std::string nazwa;
|
||||
Produkt(std::string nazwa, double cena, int ilosc)
|
||||
: nazwa(nazwa), cena(cena), ilosc(ilosc) {}
|
||||
Produkt() {}
|
||||
|
||||
void wypisz() const {
|
||||
std::cout << "Nazwa: " << nazwa << '\n'
|
||||
<< "Cena: " << cena << '\n'
|
||||
<< "Ilość: " << ilosc << std::endl;
|
||||
}
|
||||
|
||||
double wartosc() const { return cena * ilosc; }
|
||||
void zmienCene(double nowaCena) { cena = nowaCena; }
|
||||
void dodajSztuke(int ile) { ilosc += ile; }
|
||||
};
|
||||
|
||||
class Magazyn {
|
||||
int max_pojemnosc;
|
||||
int aktualna_pojemnosc;
|
||||
static int ilosc_magazynow;
|
||||
|
||||
public:
|
||||
Produkt *magazyn;
|
||||
|
||||
Magazyn(int pojemnosc)
|
||||
: max_pojemnosc(pojemnosc), magazyn(new Produkt[pojemnosc]),
|
||||
aktualna_pojemnosc(0) {}
|
||||
~Magazyn() { delete[] magazyn; }
|
||||
bool dodajProdukt(const Produkt &p) {
|
||||
if (aktualna_pojemnosc >= max_pojemnosc) {
|
||||
return false;
|
||||
}
|
||||
magazyn[aktualna_pojemnosc++] = p;
|
||||
return true;
|
||||
}
|
||||
|
||||
Produkt *znajdzProdukt(const std::string &nazwa) {
|
||||
for (int i = 0; i < aktualna_pojemnosc; i++) {
|
||||
if (magazyn[i].nazwa == nazwa) {
|
||||
return &magazyn[i];
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void wypiszWszystkie() const {
|
||||
for (int i = 0; i < aktualna_pojemnosc; i++) {
|
||||
magazyn[i].wypisz();
|
||||
}
|
||||
}
|
||||
|
||||
double obliczWartoscMagazynu() const {
|
||||
double wartosc = 0;
|
||||
for (int i = 0; i < aktualna_pojemnosc; i++) {
|
||||
wartosc += magazyn[i].wartosc();
|
||||
}
|
||||
return wartosc;
|
||||
}
|
||||
|
||||
static int ileMagazynow() { return Magazyn::ilosc_magazynow; }
|
||||
};
|
||||
|
||||
int Magazyn::ilosc_magazynow = 0;
|
||||
|
||||
int main() {
|
||||
Magazyn m = Magazyn(10);
|
||||
m.dodajProdukt(Produkt("marchewka", 2, 2));
|
||||
m.dodajProdukt(Produkt("banan", 5, 3));
|
||||
m.dodajProdukt(Produkt("gruszka", 4, 10));
|
||||
Produkt *p = m.znajdzProdukt("gruszka");
|
||||
p->zmienCene(234);
|
||||
m.wypiszWszystkie();
|
||||
m.obliczWartoscMagazynu();
|
||||
m.ileMagazynow();
|
||||
}
|
||||
BIN
uczelnia/2_semestr/programowanie/laby/lab10/out/zad10
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab10/out/zad10
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab10/out/zad9
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab10/out/zad9
Executable file
Binary file not shown.
40
uczelnia/2_semestr/programowanie/laby/lab10/zad1.cpp
Normal file
40
uczelnia/2_semestr/programowanie/laby/lab10/zad1.cpp
Normal file
@@ -0,0 +1,40 @@
|
||||
#include <iostream>
|
||||
|
||||
class Zwierze {
|
||||
public:
|
||||
virtual void odglos() { std::cout << "..." << std::endl; }
|
||||
virtual ~Zwierze() = default;
|
||||
};
|
||||
|
||||
class Pies : public Zwierze {
|
||||
public:
|
||||
void odglos() override { std::cout << "Hau hau" << std::endl; }
|
||||
};
|
||||
|
||||
class Kot : public Zwierze {
|
||||
public:
|
||||
void odglos() override { std::cout << "Miau miau" << std::endl; }
|
||||
};
|
||||
|
||||
class Krowa : public Zwierze {
|
||||
public:
|
||||
void odglos() override { std::cout << "Muu muu" << std::endl; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
const int SIZE = 3;
|
||||
Zwierze *zwierzeta[SIZE];
|
||||
zwierzeta[0] = new Pies();
|
||||
zwierzeta[1] = new Kot();
|
||||
zwierzeta[2] = new Krowa();
|
||||
|
||||
for (int i = 0; i < SIZE; i++) {
|
||||
zwierzeta[i]->odglos();
|
||||
}
|
||||
|
||||
for (int i = 0; i < SIZE; i++) {
|
||||
delete zwierzeta[i];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
121
uczelnia/2_semestr/programowanie/laby/lab10/zad10.cpp
Normal file
121
uczelnia/2_semestr/programowanie/laby/lab10/zad10.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
#include <cstddef>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Adres {
|
||||
std::string ulica;
|
||||
int nr_mieszkania;
|
||||
|
||||
public:
|
||||
Adres(std::string ulica, int nr_mieszkania)
|
||||
: ulica(ulica), nr_mieszkania(nr_mieszkania) {}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, const Adres &adres) {
|
||||
os << adres.ulica << " mieszkania " << adres.nr_mieszkania;
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Pracownik {
|
||||
protected:
|
||||
std::string imie;
|
||||
float pensja;
|
||||
std::unique_ptr<Adres> adres;
|
||||
|
||||
public:
|
||||
virtual float obliczWyplate() const = 0;
|
||||
|
||||
Pracownik(std::string imie, float pensja, std::unique_ptr<Adres> adres)
|
||||
: imie(imie), pensja(pensja), adres(std::move(adres)) {}
|
||||
|
||||
virtual ~Pracownik() = default;
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, const Pracownik &p) {
|
||||
os << p.imie << " zarabia " << p.obliczWyplate() << " i mieszka na "
|
||||
<< *(p.adres);
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class PracownikEtatowy : public Pracownik {
|
||||
public:
|
||||
PracownikEtatowy(std::string imie, float pensja, std::unique_ptr<Adres> adres)
|
||||
: Pracownik(imie, pensja, std::move(adres)) {}
|
||||
|
||||
float obliczWyplate() const override { return pensja; }
|
||||
};
|
||||
|
||||
class Zleceniobiorca : public Pracownik {
|
||||
float godziny;
|
||||
|
||||
public:
|
||||
Zleceniobiorca(std::string imie, float pensja, std::unique_ptr<Adres> adres,
|
||||
float godziny)
|
||||
: Pracownik(imie, pensja, std::move(adres)), godziny(godziny) {}
|
||||
|
||||
float obliczWyplate() const override { return pensja * godziny; }
|
||||
};
|
||||
|
||||
class Dzial {
|
||||
std::vector<std::shared_ptr<Pracownik>> pracownicy;
|
||||
|
||||
public:
|
||||
Dzial() = default;
|
||||
|
||||
void dodajPracownika(std::shared_ptr<Pracownik> pracownik) {
|
||||
pracownicy.push_back(pracownik);
|
||||
}
|
||||
|
||||
float sumaWyplat() const {
|
||||
float sum = 0;
|
||||
for (const auto &pracownik : pracownicy) {
|
||||
sum += pracownik->obliczWyplate();
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
void wypiszPracownikow() const {
|
||||
std::cout << "=== Wszyscy pracownicy ===\n";
|
||||
for (const auto &pracownik : pracownicy) {
|
||||
std::cout << *pracownik << std::endl;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class Kierownik : public PracownikEtatowy {
|
||||
std::vector<std::shared_ptr<Pracownik>> podwladni;
|
||||
|
||||
public:
|
||||
Kierownik(std::string imie, float pensja, std::unique_ptr<Adres> adres)
|
||||
: PracownikEtatowy(imie, pensja, std::move(adres)) {}
|
||||
|
||||
float obliczWyplate() const override { return pensja; }
|
||||
|
||||
float sumaWyplatZespolu() const {
|
||||
float sum = 0;
|
||||
for (const auto &pracownik : podwladni) {
|
||||
sum += pracownik->obliczWyplate();
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
void dodajPracownika(std::shared_ptr<Pracownik> p) { podwladni.push_back(p); }
|
||||
};
|
||||
|
||||
int main() {
|
||||
Kierownik kierownik("Stasiek", 238943,
|
||||
std::make_unique<Adres>("Wojska polskiego", 23));
|
||||
|
||||
kierownik.dodajPracownika(std::make_shared<PracownikEtatowy>(
|
||||
"Bożena", 2500, std::make_unique<Adres>("Żołnierska", 18)));
|
||||
|
||||
kierownik.dodajPracownika(std::make_shared<Zleceniobiorca>(
|
||||
"Adam", 6700, std::make_unique<Adres>("Wiejska", 1), 30));
|
||||
|
||||
std::cout << "Pracownicy sumarycznie zarabiają: "
|
||||
<< kierownik.sumaWyplatZespolu() << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
20
uczelnia/2_semestr/programowanie/laby/lab10/zad2.cpp
Normal file
20
uczelnia/2_semestr/programowanie/laby/lab10/zad2.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <iostream>
|
||||
|
||||
class Baza {
|
||||
public:
|
||||
void metoda() const { std::cout << "Baza" << std::endl; }
|
||||
};
|
||||
|
||||
class Pochodna : public Baza {
|
||||
public:
|
||||
void metoda() const { std::cout << "Pochodna" << std::endl; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
Pochodna p;
|
||||
Baza &ref = p;
|
||||
Baza *ptr = &p;
|
||||
p.metoda(); // pochodna
|
||||
ref.metoda(); // baza
|
||||
ptr->metoda(); // baza
|
||||
}
|
||||
17
uczelnia/2_semestr/programowanie/laby/lab10/zad3.cpp
Normal file
17
uczelnia/2_semestr/programowanie/laby/lab10/zad3.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <iostream>
|
||||
|
||||
class Baza {
|
||||
public:
|
||||
virtual void metoda() const { std::cout << "Baza" << std::endl; }
|
||||
};
|
||||
|
||||
class Pochodna : public Baza {
|
||||
public:
|
||||
void metoda() const { std::cout << "Pochodna" << std::endl; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
Pochodna p;
|
||||
Baza b = p;
|
||||
b.metoda(); // część pochodna została zgubiona
|
||||
}
|
||||
54
uczelnia/2_semestr/programowanie/laby/lab10/zad4.cpp
Normal file
54
uczelnia/2_semestr/programowanie/laby/lab10/zad4.cpp
Normal file
@@ -0,0 +1,54 @@
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class Figura {
|
||||
public:
|
||||
virtual float pole() const = 0;
|
||||
virtual float obwod() const = 0;
|
||||
virtual ~Figura() = default;
|
||||
};
|
||||
|
||||
class Kolo : public Figura {
|
||||
float r;
|
||||
|
||||
public:
|
||||
Kolo(float r) : r(r) {}
|
||||
|
||||
float pole() const override { return M_PI * r * r; }
|
||||
float obwod() const override { return M_PI * 2 * r; }
|
||||
};
|
||||
|
||||
class Prostokat : public Figura {
|
||||
float a, b;
|
||||
|
||||
public:
|
||||
Prostokat(float a, float b) : a(a), b(b) {}
|
||||
|
||||
float pole() const override { return a * b; }
|
||||
float obwod() const override { return 2 * a + 2 * b; }
|
||||
};
|
||||
|
||||
class Trojkat : public Figura {
|
||||
float a, b, c, h;
|
||||
|
||||
public:
|
||||
Trojkat(float a, float b, float c, float h) : a(a), b(b), c(c), h(h) {}
|
||||
|
||||
float pole() const override { return (a * h) * 0.5; }
|
||||
float obwod() const override { return a + b + c; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
std::vector<std::unique_ptr<const Figura>> figury;
|
||||
figury.push_back(std::make_unique<Kolo>(2.0));
|
||||
figury.push_back(std::make_unique<Prostokat>(2, 3));
|
||||
figury.push_back(std::make_unique<Trojkat>(1, 2, 3, 4));
|
||||
|
||||
for (std::unique_ptr<const Figura> &element : figury) {
|
||||
std::cout << "Obwod figury to: " << element->obwod() << std::endl;
|
||||
std::cout << "Pole figury to: " << element->pole() << std::endl;
|
||||
;
|
||||
}
|
||||
}
|
||||
20
uczelnia/2_semestr/programowanie/laby/lab10/zad5.cpp
Normal file
20
uczelnia/2_semestr/programowanie/laby/lab10/zad5.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <iostream>
|
||||
|
||||
class Abstrakcyjna {
|
||||
public:
|
||||
virtual void f() = 0;
|
||||
virtual ~Abstrakcyjna() = default;
|
||||
};
|
||||
|
||||
class Konkretna : public Abstrakcyjna {
|
||||
public:
|
||||
void f() override { std::cout << "OK"; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
// Abstrakcyjna a; // nie kompiluje się, ponieważ a jest k
|
||||
// lasą abstrakcyjną.
|
||||
Konkretna k; // kompiluje
|
||||
Abstrakcyjna *ptr = new Konkretna(); // kompiluje
|
||||
Abstrakcyjna &ref = k; // kompiluje
|
||||
}
|
||||
32
uczelnia/2_semestr/programowanie/laby/lab10/zad6.cpp
Normal file
32
uczelnia/2_semestr/programowanie/laby/lab10/zad6.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
#include <cstddef>
|
||||
#include <iostream>
|
||||
|
||||
class Zasob {
|
||||
int *arr;
|
||||
|
||||
public:
|
||||
Zasob(size_t size) : arr(new int[size]) { std::cout << "Alokujemy arr\n"; }
|
||||
|
||||
virtual ~Zasob() { // bez tego – wyciek pamięci
|
||||
std::cout << "Destruktor virtualny\n";
|
||||
delete[] arr;
|
||||
}
|
||||
};
|
||||
|
||||
class DuzyZasob : public Zasob {
|
||||
int *arr2;
|
||||
|
||||
public:
|
||||
DuzyZasob(size_t size1, size_t size2) : Zasob(size1), arr2(new int[size2]) {
|
||||
std::cout << "Alokujemy arr2\n";
|
||||
}
|
||||
~DuzyZasob() override {
|
||||
std::cout << "Domyślny Destruktor DużegoZasobu\n";
|
||||
delete[] arr2;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
Zasob *z = new DuzyZasob(2, 4);
|
||||
delete z;
|
||||
}
|
||||
22
uczelnia/2_semestr/programowanie/laby/lab10/zad7.cpp
Normal file
22
uczelnia/2_semestr/programowanie/laby/lab10/zad7.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
#include <iostream>
|
||||
|
||||
class Ksztalt {
|
||||
public:
|
||||
virtual double pole() const = 0;
|
||||
virtual ~Ksztalt() = default;
|
||||
};
|
||||
|
||||
class Kolo : public Ksztalt {
|
||||
double r;
|
||||
|
||||
public:
|
||||
Kolo(double promien) : r(promien) {}
|
||||
double pole() const { return 3.14 * r * r; }
|
||||
};
|
||||
|
||||
void wypisz(Ksztalt &k) { std::cout << k.pole(); }
|
||||
|
||||
int main() {
|
||||
Kolo k = Kolo(2);
|
||||
wypisz(k);
|
||||
}
|
||||
31
uczelnia/2_semestr/programowanie/laby/lab10/zad8.cpp
Normal file
31
uczelnia/2_semestr/programowanie/laby/lab10/zad8.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#include <iostream>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
|
||||
class Pojazd {
|
||||
public:
|
||||
virtual std::string opis() = 0;
|
||||
virtual ~Pojazd() = default;
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Pojazd &p) {
|
||||
os << p.opis();
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Samochod : public Pojazd {
|
||||
public:
|
||||
std::string opis() override { return "To jest samochód"; }
|
||||
};
|
||||
|
||||
class Rower : public Pojazd {
|
||||
public:
|
||||
std::string opis() override { return "To jest rower"; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
Samochod s;
|
||||
Rower r;
|
||||
std::cout << s << std::endl;
|
||||
std::cout << r << std::endl;
|
||||
}
|
||||
96
uczelnia/2_semestr/programowanie/laby/lab10/zad9.cpp
Normal file
96
uczelnia/2_semestr/programowanie/laby/lab10/zad9.cpp
Normal file
@@ -0,0 +1,96 @@
|
||||
#include <cstddef>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Adres {
|
||||
std::string ulica;
|
||||
int nr_mieszkania;
|
||||
|
||||
public:
|
||||
Adres(std::string ulica, int nr_mieszkania)
|
||||
: ulica(ulica), nr_mieszkania(nr_mieszkania) {}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Adres &adres) {
|
||||
os << adres.ulica << " mieszkania " << adres.nr_mieszkania;
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Pracownik {
|
||||
protected:
|
||||
std::string imie;
|
||||
float pensja;
|
||||
std::unique_ptr<Adres> adres;
|
||||
|
||||
public:
|
||||
virtual float obliczWyplate() = 0;
|
||||
Pracownik(std::string imie, float pensja, std::unique_ptr<Adres> adres)
|
||||
: imie(imie), pensja(pensja), adres(std::move(adres)) {}
|
||||
virtual ~Pracownik() = default;
|
||||
friend std::ostream &operator<<(std::ostream &os, Pracownik &p) {
|
||||
os << p.imie << " zarabia " << p.obliczWyplate() << " i mieszka na "
|
||||
<< *(p.adres);
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class PracownikEtatowy : public Pracownik {
|
||||
|
||||
public:
|
||||
PracownikEtatowy(std::string imie, float pensja, std::unique_ptr<Adres> adres)
|
||||
: Pracownik(imie, pensja, std::move(adres)) {}
|
||||
|
||||
float obliczWyplate() override { return pensja; }
|
||||
};
|
||||
|
||||
class Zleceniobiorca : public Pracownik {
|
||||
float godziny;
|
||||
|
||||
public:
|
||||
Zleceniobiorca(std::string imie, float pensja, std::unique_ptr<Adres> adres,
|
||||
float godziny)
|
||||
: Pracownik(imie, pensja, std::move(adres)), godziny(godziny) {}
|
||||
float obliczWyplate() override { return pensja * godziny; }
|
||||
};
|
||||
|
||||
class Dzial {
|
||||
std::vector<std::shared_ptr<Pracownik>> pracownicy;
|
||||
|
||||
public:
|
||||
Dzial() {};
|
||||
|
||||
void dodajPracownika(std::shared_ptr<Pracownik> pracownik) {
|
||||
pracownicy.push_back(pracownik);
|
||||
}
|
||||
|
||||
float sumaWyplat() const {
|
||||
float sum = 0;
|
||||
for (auto &pracownik : pracownicy) {
|
||||
sum += pracownik->obliczWyplate();
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
void wypiszPracownikow() const {
|
||||
std::cout << "=== Wszyscy pracownicy ===\n";
|
||||
for (const auto &pracownik : pracownicy) {
|
||||
std::cout << *pracownik << std::endl;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
Dzial dzial = Dzial();
|
||||
dzial.dodajPracownika(std::make_shared<PracownikEtatowy>(
|
||||
"Bożena", 2500, std::make_unique<Adres>("Żołnierska", 18)));
|
||||
|
||||
dzial.dodajPracownika(std::make_shared<Zleceniobiorca>(
|
||||
"Adam", 6700, std::make_unique<Adres>("Wiejska", 1), 30));
|
||||
|
||||
dzial.wypiszPracownikow();
|
||||
std::cout << "Pracownicy sumarycznie zarabiają: " << dzial.sumaWyplat();
|
||||
return 0;
|
||||
}
|
||||
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad1
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad1
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad10
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad10
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad11
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad11
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad12
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad12
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad3
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad3
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad4
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad4
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad5
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad5
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad6
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad6
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad7
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad7
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad8
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad8
Executable file
Binary file not shown.
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad9
Executable file
BIN
uczelnia/2_semestr/programowanie/laby/lab11/out/zad9
Executable file
Binary file not shown.
64
uczelnia/2_semestr/programowanie/laby/lab11/zad1.cpp
Normal file
64
uczelnia/2_semestr/programowanie/laby/lab11/zad1.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Ksztalt {
|
||||
public:
|
||||
virtual ~Ksztalt() = default;
|
||||
virtual double pole() = 0;
|
||||
virtual std::string opis() = 0;
|
||||
};
|
||||
|
||||
class Kolo : public Ksztalt {
|
||||
int r;
|
||||
|
||||
public:
|
||||
Kolo(int r) : r(r) {}
|
||||
|
||||
double pole() override { return r * r * M_PI; }
|
||||
std::string opis() override { return "To jest koło";}
|
||||
|
||||
~Kolo() override {}
|
||||
};
|
||||
|
||||
class Trojkat : public Ksztalt {
|
||||
int a, h;
|
||||
|
||||
public:
|
||||
Trojkat(int a, int h) : a(a), h(h) {}
|
||||
|
||||
double pole() override { return a * h * 0.5; }
|
||||
std::string opis() override { return "To jest trójkąt";}
|
||||
|
||||
~Trojkat() override {}
|
||||
};
|
||||
|
||||
class Kwadrat : public Ksztalt {
|
||||
int a;
|
||||
|
||||
public:
|
||||
Kwadrat(int a) : a(a) {}
|
||||
|
||||
double pole() override { return a * a; }
|
||||
std::string opis() override { return " To jest kwadrat"; }
|
||||
|
||||
~Kwadrat() override {}
|
||||
};
|
||||
|
||||
double sum_pole(std::vector<std::unique_ptr<Ksztalt>> &vec) {
|
||||
double sum = 0;
|
||||
for (auto &ksztalt : vec) {
|
||||
sum += ksztalt->pole();
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
int main() {
|
||||
std::vector<std::unique_ptr<Ksztalt>> vec;
|
||||
vec.push_back(std::make_unique<Trojkat>(2, 4));
|
||||
vec.push_back(std::make_unique<Kolo>(2));
|
||||
vec.push_back(std::make_unique<Kwadrat>(4));
|
||||
std::cout << "Suma pól wszystkich figur to: " << sum_pole(vec) << std::endl;
|
||||
}
|
||||
51
uczelnia/2_semestr/programowanie/laby/lab11/zad10.cpp
Normal file
51
uczelnia/2_semestr/programowanie/laby/lab11/zad10.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
class StrategiaPodatkowa {
|
||||
public:
|
||||
virtual double oblicz(double kwota) const = 0;
|
||||
virtual ~StrategiaPodatkowa() = default;
|
||||
};
|
||||
|
||||
class PodatekLiniowy : public StrategiaPodatkowa {
|
||||
const double procent = 0.19;
|
||||
|
||||
public:
|
||||
double oblicz(double kwota) const override { return kwota * procent; }
|
||||
};
|
||||
|
||||
class PodatekProgresywny : public StrategiaPodatkowa {
|
||||
const double prog_1 = 0.19;
|
||||
const double prog_2 = 0.8;
|
||||
|
||||
public:
|
||||
double oblicz(double kwota) const override {
|
||||
return (kwota < 4000) ? (kwota * prog_1) : (kwota * prog_2);
|
||||
}
|
||||
};
|
||||
|
||||
class BrakPodatku : public StrategiaPodatkowa {
|
||||
public:
|
||||
double oblicz(double) const override { return 0.0; }
|
||||
};
|
||||
|
||||
class Faktura {
|
||||
std::unique_ptr<StrategiaPodatkowa> strategia;
|
||||
double kwota;
|
||||
|
||||
public:
|
||||
Faktura(std::unique_ptr<StrategiaPodatkowa> s, double kwota)
|
||||
: strategia(std::move(s)), kwota(kwota) {}
|
||||
|
||||
double kwotaDoZaplaty() const { return strategia->oblicz(kwota) + kwota; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
Faktura faktura_socjalistyczna(std::make_unique<PodatekProgresywny>(), 5000);
|
||||
Faktura faktura_wolnorynkowa(std::make_unique<PodatekLiniowy>(), 5000);
|
||||
Faktura faktura_libertalinistyczna(std::make_unique<BrakPodatku>(), 5000);
|
||||
|
||||
std::cout << faktura_socjalistyczna.kwotaDoZaplaty() << std::endl;
|
||||
std::cout << faktura_wolnorynkowa.kwotaDoZaplaty() << std::endl;
|
||||
std::cout << faktura_libertalinistyczna.kwotaDoZaplaty() << std::endl;
|
||||
}
|
||||
111
uczelnia/2_semestr/programowanie/laby/lab11/zad11.cpp
Normal file
111
uczelnia/2_semestr/programowanie/laby/lab11/zad11.cpp
Normal file
@@ -0,0 +1,111 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Zwierze {
|
||||
public:
|
||||
virtual std::string odglos() = 0;
|
||||
virtual std::string jedzenie() = 0;
|
||||
virtual double ileKalorii() = 0;
|
||||
virtual ~Zwierze() = default;
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Zwierze &z) {
|
||||
os << "To zwierze wydaje dźwięk: " << z.odglos() << ".\nJe " << z.jedzenie()
|
||||
<< " i potrzebuje " << z.ileKalorii() << " kalorii dziennie\n";
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Lew : public Zwierze {
|
||||
public:
|
||||
std::string odglos() override { return "Odgłos lwa"; }
|
||||
std::string jedzenie() override { return "Mięso";}
|
||||
double ileKalorii() override { return 2348; }
|
||||
};
|
||||
|
||||
class Slon : public Zwierze {
|
||||
public:
|
||||
std::string odglos() override { return "Odgłos słonia"; }
|
||||
std::string jedzenie() override { return "Liście";}
|
||||
double ileKalorii() override { return 23; }
|
||||
};
|
||||
|
||||
class Papuga : public Zwierze {
|
||||
public:
|
||||
std::string odglos() override { return "Odgłos papugii"; }
|
||||
std::string jedzenie() override { return "Ziarna"; }
|
||||
double ileKalorii() override { return 2; }
|
||||
};
|
||||
|
||||
class Waz : public Zwierze {
|
||||
public:
|
||||
std::string odglos() override { return "Odgłos węża"; }
|
||||
std::string jedzenie() override { return "Mięso"; }
|
||||
double ileKalorii() override { return 387; }
|
||||
};
|
||||
|
||||
class Opiekun {
|
||||
public:
|
||||
void nakarm() { std::cout << "Nakarmione" << std::endl; }
|
||||
};
|
||||
|
||||
class Wybieg {
|
||||
Opiekun opiekun_wybiegu;
|
||||
|
||||
public:
|
||||
std::vector<std::unique_ptr<Zwierze>> zwierzeta;
|
||||
|
||||
public:
|
||||
Wybieg(std::vector<std::unique_ptr<Zwierze>> zwierzeta,
|
||||
Opiekun opiekun_wybiegu)
|
||||
: zwierzeta(std::move(zwierzeta)), opiekun_wybiegu(opiekun_wybiegu) {}
|
||||
};
|
||||
|
||||
class Zoo {
|
||||
std::vector<std::unique_ptr<Wybieg>> wybiegi;
|
||||
|
||||
public:
|
||||
Zoo(std::vector<std::unique_ptr<Wybieg>> wybiegi)
|
||||
: wybiegi(std::move(wybiegi)) {}
|
||||
|
||||
double dziennaPorcjaKalorii() {
|
||||
double sum = 0;
|
||||
for (auto &wybieg : wybiegi) {
|
||||
for (const auto &zwierze : wybieg->zwierzeta) {
|
||||
sum += zwierze->ileKalorii();
|
||||
}
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Zoo &z) {
|
||||
os << '[';
|
||||
for (auto &wybieg : z.wybiegi) {
|
||||
for (const auto &zwierze : wybieg->zwierzeta) {
|
||||
os << *zwierze << ',';
|
||||
}
|
||||
}
|
||||
os << ']';
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
std::vector<std::unique_ptr<Zwierze>> zwierzeta;
|
||||
zwierzeta.push_back(std::make_unique<Waz>());
|
||||
zwierzeta.push_back(std::make_unique<Slon>());
|
||||
zwierzeta.push_back(std::make_unique<Lew>());
|
||||
|
||||
Opiekun opiekun;
|
||||
std::vector<std::unique_ptr<Wybieg>> wybiegi;
|
||||
|
||||
wybiegi.push_back(std::make_unique<Wybieg>(std::move(zwierzeta), opiekun));
|
||||
|
||||
Zoo zoo = Zoo(std::move(wybiegi));
|
||||
std::cout << "Dzienna porcja kalorii: " << zoo.dziennaPorcjaKalorii()
|
||||
<< std::endl;
|
||||
|
||||
std::cout << zoo;
|
||||
}
|
||||
179
uczelnia/2_semestr/programowanie/laby/lab11/zad12.cpp
Normal file
179
uczelnia/2_semestr/programowanie/laby/lab11/zad12.cpp
Normal file
@@ -0,0 +1,179 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class StrategiaZywienia {
|
||||
public:
|
||||
virtual std::string pobierzOpisStrategii() const = 0;
|
||||
virtual ~StrategiaZywienia() = default;
|
||||
};
|
||||
|
||||
class Drapieznik : public StrategiaZywienia {
|
||||
public:
|
||||
std::string pobierzOpisStrategii() const override {
|
||||
return "Drapieznik (wymaga miesa)";
|
||||
}
|
||||
};
|
||||
|
||||
class Roslinozerca : public StrategiaZywienia {
|
||||
public:
|
||||
std::string pobierzOpisStrategii() const override {
|
||||
return "Roslinozerca (wymaga roslin)";
|
||||
}
|
||||
};
|
||||
|
||||
class Wszystkozerca : public StrategiaZywienia {
|
||||
public:
|
||||
std::string pobierzOpisStrategii() const override {
|
||||
return "Wszystkozerca (je wszystko)";
|
||||
}
|
||||
};
|
||||
|
||||
class Zwierze {
|
||||
protected:
|
||||
std::unique_ptr<StrategiaZywienia> strategia;
|
||||
|
||||
public:
|
||||
Zwierze(std::unique_ptr<StrategiaZywienia> strat)
|
||||
: strategia(std::move(strat)) {}
|
||||
|
||||
virtual std::string odglos() = 0;
|
||||
virtual std::string jedzenie() = 0;
|
||||
virtual double ileKalorii() = 0;
|
||||
virtual ~Zwierze() = default;
|
||||
|
||||
void ustawStrategie(std::unique_ptr<StrategiaZywienia> nowaStrategia) {
|
||||
strategia = std::move(nowaStrategia);
|
||||
}
|
||||
|
||||
std::string pokazJakJe() const {
|
||||
return strategia ? strategia->pobierzOpisStrategii() : "Brak strategii";
|
||||
}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Zwierze &z) {
|
||||
os << "To zwierze wydaje dzwiek: " << z.odglos() << ".\nJe " << z.jedzenie()
|
||||
<< ", potrzebuje " << z.ileKalorii()
|
||||
<< " kcal. Styl zycia: " << z.pokazJakJe() << "\n";
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
class Lew : public Zwierze {
|
||||
public:
|
||||
Lew() : Zwierze(std::make_unique<Drapieznik>()) {}
|
||||
std::string odglos() override { return "Odgłos lwa"; }
|
||||
std::string jedzenie() override { return "Mięso";}
|
||||
double ileKalorii() override { return 2348; }
|
||||
};
|
||||
|
||||
class Slon : public Zwierze {
|
||||
public:
|
||||
Slon() : Zwierze(std::make_unique<Roslinozerca>()) {}
|
||||
std::string odglos() override { return "Odgłos słonia"; }
|
||||
std::string jedzenie() override { return "Liście";}
|
||||
double ileKalorii() override { return 20000; }
|
||||
};
|
||||
|
||||
class Papuga : public Zwierze {
|
||||
public:
|
||||
Papuga() : Zwierze(std::make_unique<Roslinozerca>()) {}
|
||||
std::string odglos() override { return "Odgłos papugii"; }
|
||||
std::string jedzenie() override { return "Ziarna"; }
|
||||
double ileKalorii() override { return 2; }
|
||||
};
|
||||
|
||||
class Waz : public Zwierze {
|
||||
public:
|
||||
Waz() : Zwierze(std::make_unique<Drapieznik>()) {}
|
||||
std::string odglos() override { return "Odgłos węża"; }
|
||||
std::string jedzenie() override { return "Mięso"; }
|
||||
double ileKalorii() override { return 387; }
|
||||
};
|
||||
|
||||
std::unique_ptr<Zwierze> stworzZwierze(const std::string &gatunek) {
|
||||
if (gatunek == "Lew" || gatunek == "lew") {
|
||||
return std::make_unique<Lew>();
|
||||
} else if (gatunek == "Slon" || gatunek == "slon") {
|
||||
return std::make_unique<Slon>();
|
||||
} else if (gatunek == "Papuga" || gatunek == "papuga") {
|
||||
return std::make_unique<Papuga>();
|
||||
} else if (gatunek == "Waz" || gatunek == "waz") {
|
||||
return std::make_unique<Waz>();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
class Opiekun {
|
||||
public:
|
||||
void nakarm() { std::cout << "Nakarmione" << std::endl; }
|
||||
};
|
||||
|
||||
class Wybieg {
|
||||
Opiekun opiekun_wybiegu;
|
||||
|
||||
public:
|
||||
std::vector<std::unique_ptr<Zwierze>> zwierzeta;
|
||||
Wybieg(std::vector<std::unique_ptr<Zwierze>> zwierzeta,
|
||||
Opiekun opiekun_wybiegu)
|
||||
: zwierzeta(std::move(zwierzeta)), opiekun_wybiegu(opiekun_wybiegu) {}
|
||||
};
|
||||
|
||||
class Zoo {
|
||||
std::vector<std::unique_ptr<Wybieg>> wybiegi;
|
||||
|
||||
public:
|
||||
Zoo(std::vector<std::unique_ptr<Wybieg>> wybiegi)
|
||||
: wybiegi(std::move(wybiegi)) {}
|
||||
|
||||
double dziennaPorcjaKalorii() {
|
||||
double sum = 0;
|
||||
for (auto &wybieg : wybiegi) {
|
||||
for (const auto &zwierze : wybieg->zwierzeta) {
|
||||
sum += zwierze->ileKalorii();
|
||||
}
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, Zoo &z) {
|
||||
os << "[\n";
|
||||
for (auto &wybieg : z.wybiegi) {
|
||||
for (const auto &zwierze : wybieg->zwierzeta) {
|
||||
os << " " << *zwierze;
|
||||
}
|
||||
}
|
||||
os << ']';
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
std::vector<std::unique_ptr<Zwierze>> zwierzeta;
|
||||
|
||||
zwierzeta.push_back(stworzZwierze("Waz"));
|
||||
zwierzeta.push_back(stworzZwierze("Slon"));
|
||||
zwierzeta.push_back(stworzZwierze("Lew"));
|
||||
|
||||
std::cout << "Przed zmianą strategii" << std::endl;
|
||||
std::cout << *zwierzeta[2];
|
||||
|
||||
std::cout << "\n Dynamiczna podmiana strategii dla Lwa..." << std::endl;
|
||||
zwierzeta[2]->ustawStrategie(std::make_unique<Wszystkozerca>());
|
||||
|
||||
std::cout << *zwierzeta[2];
|
||||
std::cout << "-------------------------------------------\n" << std::endl;
|
||||
|
||||
Opiekun opiekun;
|
||||
std::vector<std::unique_ptr<Wybieg>> wybiegi;
|
||||
wybiegi.push_back(std::make_unique<Wybieg>(std::move(zwierzeta), opiekun));
|
||||
|
||||
Zoo zoo = Zoo(std::move(wybiegi));
|
||||
std::cout << "Dzienna porcja kalorii w calym zoo: "
|
||||
<< zoo.dziennaPorcjaKalorii() << " kcal\n"
|
||||
<< std::endl;
|
||||
std::cout << zoo << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
21
uczelnia/2_semestr/programowanie/laby/lab11/zad2.cpp
Normal file
21
uczelnia/2_semestr/programowanie/laby/lab11/zad2.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
class A {
|
||||
public:
|
||||
virtual void f() = 0;
|
||||
virtual void g() = 0;
|
||||
virtual void h() = 0;
|
||||
virtual ~A() = default;
|
||||
};
|
||||
|
||||
class B : public A {
|
||||
public:
|
||||
void f() override { return; }
|
||||
void g() override final { return; }
|
||||
void h() override { return; }
|
||||
~B() { return; }
|
||||
};
|
||||
|
||||
class C final : public B {
|
||||
void f() override final { return; }
|
||||
void g() override final { return; } // błąd
|
||||
void h() override final { return; }
|
||||
};
|
||||
34
uczelnia/2_semestr/programowanie/laby/lab11/zad3.cpp
Normal file
34
uczelnia/2_semestr/programowanie/laby/lab11/zad3.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class Czlowiek {
|
||||
public:
|
||||
virtual void mowa() const { std::cout << "..." << std::endl; }
|
||||
virtual ~Czlowiek() = default;
|
||||
};
|
||||
|
||||
class Polak : public Czlowiek {
|
||||
public:
|
||||
void mowa() const override { std::cout << "Czesc!" << std::endl; }
|
||||
};
|
||||
|
||||
class Anglik : public Czlowiek {
|
||||
public:
|
||||
void mowa() const override { std::cout << "Hello!" << std::endl; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
std::vector<std::unique_ptr<Czlowiek>> ludzie;
|
||||
ludzie.push_back(std::make_unique<Polak>());
|
||||
ludzie.push_back(std::make_unique<Anglik>());
|
||||
ludzie.push_back(std::make_unique<Czlowiek>());
|
||||
for (const auto &c : ludzie)
|
||||
c->mowa();
|
||||
// Cześć!
|
||||
// Hello!
|
||||
// ...
|
||||
|
||||
// Przy metodzie niewirtualnej pojawi się błąd kompilacji – nadpisujemy meto
|
||||
// dę, która nie jest wirtualna
|
||||
}
|
||||
45
uczelnia/2_semestr/programowanie/laby/lab11/zad4.cpp
Normal file
45
uczelnia/2_semestr/programowanie/laby/lab11/zad4.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include <iostream>
|
||||
|
||||
class Pojazd {
|
||||
public:
|
||||
virtual ~Pojazd() = default;
|
||||
virtual void wydajDzwiekWirtualnie() {} // metoda wirtualna
|
||||
};
|
||||
|
||||
class Samochod : public Pojazd {
|
||||
public:
|
||||
void sygnal() { std::cout << "Sygnał!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Sygnał!"; }
|
||||
};
|
||||
|
||||
class Rower : public Pojazd {
|
||||
public:
|
||||
void Dzwonek() { std::cout << "Dzyń dzyń!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Dzyń dzyń!"; }
|
||||
};
|
||||
|
||||
class Motocykl : public Pojazd {
|
||||
public:
|
||||
void Warkot() { std::cout << "Wrum wrum!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Wrum wrum!"; }
|
||||
};
|
||||
|
||||
void wydajDzwiek(Pojazd *p) {
|
||||
if (Samochod *s = dynamic_cast<Samochod *>(p)) {
|
||||
s->sygnal();
|
||||
} else if (Rower *r = dynamic_cast<Rower *>(p)) {
|
||||
r->Dzwonek();
|
||||
} else if (Motocykl *m = dynamic_cast<Motocykl *>(p)) {
|
||||
m->Warkot();
|
||||
}
|
||||
}
|
||||
|
||||
void wydajDzwiek2(Pojazd &p) { p.wydajDzwiekWirtualnie(); }
|
||||
|
||||
int main() {
|
||||
Rower r2;
|
||||
Pojazd *r = &r2;
|
||||
|
||||
wydajDzwiek(r);
|
||||
wydajDzwiek2(r2);
|
||||
}
|
||||
48
uczelnia/2_semestr/programowanie/laby/lab11/zad5.cpp
Normal file
48
uczelnia/2_semestr/programowanie/laby/lab11/zad5.cpp
Normal file
@@ -0,0 +1,48 @@
|
||||
#include <iostream>
|
||||
#include <typeinfo>
|
||||
|
||||
class Pojazd {
|
||||
public:
|
||||
virtual ~Pojazd() = default;
|
||||
virtual void wydajDzwiekWirtualnie() {} // metoda wirtualna
|
||||
};
|
||||
|
||||
class Samochod : public Pojazd {
|
||||
public:
|
||||
void sygnal() { std::cout << "Sygnał!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Sygnał!"; }
|
||||
};
|
||||
|
||||
class Rower : public Pojazd {
|
||||
public:
|
||||
void Dzwonek() { std::cout << "Dzyń dzyń!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Dzyń dzyń!"; }
|
||||
};
|
||||
|
||||
class Motocykl : public Pojazd {
|
||||
public:
|
||||
void Warkot() { std::cout << "Wrum wrum!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Wrum wrum!"; }
|
||||
};
|
||||
|
||||
class NiepolimorficznyTyp {};
|
||||
class NiepolimorficznyTyp2 : public NiepolimorficznyTyp {};
|
||||
|
||||
void pokazTyp(const Pojazd *p) {
|
||||
const std::type_info &ti = typeid(*p);
|
||||
std::cout << "Rzeczywisty typ: " << ti.name() << std::endl;
|
||||
}
|
||||
|
||||
void pokazTyp2(const NiepolimorficznyTyp *n) {
|
||||
const std::type_info &ti = typeid(*n);
|
||||
std::cout << "Rzeczywisty typ: " << ti.name() << std::endl;
|
||||
}
|
||||
|
||||
int main() {
|
||||
Pojazd p;
|
||||
Samochod s;
|
||||
NiepolimorficznyTyp2 npol;
|
||||
pokazTyp(&p);
|
||||
pokazTyp(&s);
|
||||
pokazTyp2(&npol);
|
||||
}
|
||||
42
uczelnia/2_semestr/programowanie/laby/lab11/zad6.cpp
Normal file
42
uczelnia/2_semestr/programowanie/laby/lab11/zad6.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#include <iostream>
|
||||
#include <typeinfo>
|
||||
|
||||
class Pojazd {
|
||||
public:
|
||||
virtual ~Pojazd() = default;
|
||||
virtual void wydajDzwiekWirtualnie() {} // metoda wirtualna
|
||||
};
|
||||
|
||||
class Samochod : public Pojazd {
|
||||
public:
|
||||
void sygnal() { std::cout << "Sygnał!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Sygnał!"; }
|
||||
};
|
||||
|
||||
class Rower : public Pojazd {
|
||||
public:
|
||||
void Dzwonek() { std::cout << "Dzyń dzyń!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Dzyń dzyń!"; }
|
||||
};
|
||||
|
||||
class Motocykl : public Pojazd {
|
||||
public:
|
||||
void Warkot() { std::cout << "Wrum wrum!"; }
|
||||
void wydajDzwiekWirtualnie() override { std::cout << "Wrum wrum!"; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
Rower r;
|
||||
Pojazd *p = &r;
|
||||
|
||||
Samochod *s_static = static_cast<Samochod *>(p);
|
||||
|
||||
std::cout
|
||||
<< "Wynik static_cast: " << s_static
|
||||
<< "\n"; // miejsce w pamięci. dowolne wywołanie metody zwróci teraz błąd
|
||||
|
||||
Samochod *s_dynamic = dynamic_cast<Samochod *>(p);
|
||||
|
||||
std::cout << "Wynik dynamic_cast: " << s_dynamic
|
||||
<< "\n"; // nullptr, bo sprawdził w runtime, że typ się nie zgadza
|
||||
}
|
||||
48
uczelnia/2_semestr/programowanie/laby/lab11/zad7.cpp
Normal file
48
uczelnia/2_semestr/programowanie/laby/lab11/zad7.cpp
Normal file
@@ -0,0 +1,48 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
template <typename T>
|
||||
std::ostream &operator<<(std::ostream &os, const std::vector<T> &v) {
|
||||
os << "[";
|
||||
for (size_t i = 0; i < v.size(); ++i) {
|
||||
os << v[i];
|
||||
if (i != v.size() - 1)
|
||||
os << ", ";
|
||||
}
|
||||
os << "]";
|
||||
return os;
|
||||
}
|
||||
|
||||
template <typename T1, typename T2> class Para {
|
||||
T1 pierwszy;
|
||||
T2 drugi;
|
||||
|
||||
public:
|
||||
Para(const T1 &p, const T2 &d) : pierwszy(p), drugi(d) {}
|
||||
|
||||
const T1 &pobierzPierwszy() const { return pierwszy; }
|
||||
const T2 &pobierzDrugi() const { return drugi; }
|
||||
|
||||
friend std::ostream &operator<<(std::ostream &os, const Para<T1, T2> ¶) {
|
||||
os << "(" << para.pierwszy << ", " << para.drugi << ")";
|
||||
return os;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
Para<int, std::string> p1(42, "Tralala");
|
||||
std::cout << "Para 1: " << p1 << "\n";
|
||||
std::cout << "Pierwszy element p1: " << p1.pobierzPierwszy() << "\n\n";
|
||||
|
||||
Para<double, double> p2(3.1415, 2.7182);
|
||||
std::cout << "Para 2: " << p2 << "\n";
|
||||
std::cout << "Drugi element p2: " << p2.pobierzDrugi() << "\n\n";
|
||||
|
||||
std::vector<int> liczby = {1, 1, 2, 3, 5, 8};
|
||||
Para<std::string, std::vector<int>> p3("Fibonacci", liczby);
|
||||
|
||||
std::cout << "Para 3: " << p3 << "\n";
|
||||
|
||||
return 0;
|
||||
}
|
||||
33
uczelnia/2_semestr/programowanie/laby/lab11/zad8.cpp
Normal file
33
uczelnia/2_semestr/programowanie/laby/lab11/zad8.cpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#include <bitset>
|
||||
#include <iostream>
|
||||
|
||||
template <typename T> class Liczalna {
|
||||
public:
|
||||
void zliczDoN(int n) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
static_cast<T *>(this)->wypisz(i);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class Dziesietna : public Liczalna<Dziesietna> {
|
||||
public:
|
||||
void wypisz(int liczba) { std::cout << "Dziesietnie: " << liczba << "\n"; }
|
||||
};
|
||||
|
||||
class Binarna : public Liczalna<Binarna> {
|
||||
public:
|
||||
void wypisz(int liczba) {
|
||||
std::cout << "Binarnie: " << std::bitset<8>(liczba) << "\n";
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
Dziesietna d;
|
||||
d.zliczDoN(4);
|
||||
|
||||
Binarna b;
|
||||
b.zliczDoN(4);
|
||||
|
||||
return 0;
|
||||
}
|
||||
30
uczelnia/2_semestr/programowanie/laby/lab11/zad9.cpp
Normal file
30
uczelnia/2_semestr/programowanie/laby/lab11/zad9.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
class Pracownik {
|
||||
std::string imie;
|
||||
|
||||
public:
|
||||
Pracownik(const std::string &i) : imie(i) {}
|
||||
virtual double pensja() const { return 0; }
|
||||
virtual void wypisz() const {
|
||||
std::cout << imie << ", pensja: " << pensja() << std::endl;
|
||||
}
|
||||
virtual ~Pracownik() {}
|
||||
};
|
||||
|
||||
class Etatowy : public Pracownik {
|
||||
double stawka;
|
||||
|
||||
public:
|
||||
Etatowy(const std::string &i, double s) : Pracownik(i), stawka(s) {}
|
||||
double pensja() const override { return stawka; }
|
||||
};
|
||||
|
||||
void przetworz(Pracownik &p) { p.wypisz(); }
|
||||
|
||||
int main() {
|
||||
Pracownik *tab[] = {new Etatowy("Ala", 5000)};
|
||||
przetworz(*tab[0]);
|
||||
delete tab[0];
|
||||
}
|
||||
27
uczelnia/2_semestr/programowanie/laby/lab12/narzedzia.hpp
Normal file
27
uczelnia/2_semestr/programowanie/laby/lab12/narzedzia.hpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
template <typename T> T wiekszy(T a, T b) { return a > b ? a : b; }
|
||||
|
||||
template <typename T> void zamien(T &a, T &b) {
|
||||
T c = a;
|
||||
a = b;
|
||||
b = c;
|
||||
}
|
||||
|
||||
template <typename T> void wypisz(T *tab, int n) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
std::cout << *(tab + i);
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
template <typename T> void sortuj3(T a, T b, T c) {
|
||||
std::vector<T> vec{a, b, c};
|
||||
std::sort(vec.begin(), vec.end());
|
||||
|
||||
for (const auto &symbol : vec) {
|
||||
std::cout << symbol;
|
||||
}
|
||||
}
|
||||
9
uczelnia/2_semestr/programowanie/laby/lab12/zad1.cpp
Normal file
9
uczelnia/2_semestr/programowanie/laby/lab12/zad1.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include <iostream>
|
||||
|
||||
template <typename T> T potroj(T x) { return x * 3; }
|
||||
|
||||
int main() {
|
||||
std::cout << potroj(7) << '\n'; // 21
|
||||
std::cout << potroj(2.5) << '\n'; // 7.5
|
||||
std::cout << potroj('A') << '\n'; // dziwny znak
|
||||
}
|
||||
13
uczelnia/2_semestr/programowanie/laby/lab12/zad10.cpp
Normal file
13
uczelnia/2_semestr/programowanie/laby/lab12/zad10.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "narzedzia.hpp"
|
||||
|
||||
int main() {
|
||||
int a = 2, b = 1, c = 4;
|
||||
sortuj3(a, b, c);
|
||||
std::cout << std::endl;
|
||||
double i = 1.5, j = 0, k = 14.234;
|
||||
sortuj3(i, j, k);
|
||||
std::cout << std::endl;
|
||||
std::string x = "abc", y = "cde", z = "gde";
|
||||
sortuj3(x, y, z);
|
||||
std::cout << std::endl;
|
||||
}
|
||||
10
uczelnia/2_semestr/programowanie/laby/lab12/zad2.cpp
Normal file
10
uczelnia/2_semestr/programowanie/laby/lab12/zad2.cpp
Normal file
@@ -0,0 +1,10 @@
|
||||
template <typename T> T wiekszy(T a, T b) { return a > b ? a : b; }
|
||||
|
||||
int main() {
|
||||
wiekszy(2, 5); // int int
|
||||
wiekszy(2.0, 5.0); // double double
|
||||
// wiekszy(2, 5.0); // nie uruchomi się, bowiem zadeklarowalilśmy dwa
|
||||
// argumenty tego samego typu, a podajemy dwa różne
|
||||
wiekszy<double>(2, 5.0); // double
|
||||
wiekszy('A', 'Z'); // char
|
||||
}
|
||||
9
uczelnia/2_semestr/programowanie/laby/lab12/zad3.cpp
Normal file
9
uczelnia/2_semestr/programowanie/laby/lab12/zad3.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include <iostream>
|
||||
|
||||
template <typename T> T srednia(T a, T b) { return (a + b) / 2; }
|
||||
|
||||
int main() {
|
||||
std::cout << srednia(3, 4) << std::endl; // co się wypisze? 3
|
||||
std::cout << srednia(3.0, 4.0) << std::endl; // co się wypisze? 3.5
|
||||
std::cout << srednia<double>(3, 4.0) << std::endl; // 3.5
|
||||
}
|
||||
21
uczelnia/2_semestr/programowanie/laby/lab12/zad4.cpp
Normal file
21
uczelnia/2_semestr/programowanie/laby/lab12/zad4.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
#include <iostream>
|
||||
|
||||
template <typename T> void zamien(T &a, T &b) {
|
||||
T c = a;
|
||||
a = b;
|
||||
b = c;
|
||||
}
|
||||
|
||||
template <typename T> void zamiana_i_wyswietlenie(T &x, T &y) {
|
||||
zamien(x, y); // teraz x == 2, y == 1
|
||||
std::cout << x << ',' << y << std::endl;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int x = 2, y = 4;
|
||||
zamiana_i_wyswietlenie(x, y);
|
||||
double i = 2.5, j = 3.5;
|
||||
zamiana_i_wyswietlenie(i, j);
|
||||
std::string a = "hej", b = "ho";
|
||||
zamiana_i_wyswietlenie(a, b);
|
||||
}
|
||||
14
uczelnia/2_semestr/programowanie/laby/lab12/zad5.cpp
Normal file
14
uczelnia/2_semestr/programowanie/laby/lab12/zad5.cpp
Normal file
@@ -0,0 +1,14 @@
|
||||
#include <iostream>
|
||||
|
||||
template <typename T> T minZ3(T a, T b, T c) {
|
||||
return a < b ? (a < c ? a : c) : (b < c ? b : c);
|
||||
}
|
||||
|
||||
int main() {
|
||||
if (minZ3(7, 2, 5) == 2) {
|
||||
std::cout << "1 ok\n";
|
||||
}
|
||||
if (minZ3(3.5, 1.2, 4.8) == 1.2) {
|
||||
std::cout << "2 ok\n";
|
||||
}
|
||||
}
|
||||
17
uczelnia/2_semestr/programowanie/laby/lab12/zad6.cpp
Normal file
17
uczelnia/2_semestr/programowanie/laby/lab12/zad6.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <iostream>
|
||||
|
||||
template <typename T> int policz(const T *tab, int n, T wartosc) {
|
||||
int count = 0;
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (*(tab + i) == wartosc)
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int dane[] = {1, 2, 3, 2, 2, 5};
|
||||
if (policz(dane, 6, 2) == 3) {
|
||||
std::cout << "Zgadza się :D\n";
|
||||
}
|
||||
}
|
||||
13
uczelnia/2_semestr/programowanie/laby/lab12/zad7.cpp
Normal file
13
uczelnia/2_semestr/programowanie/laby/lab12/zad7.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <iostream>
|
||||
|
||||
template <typename T, int N> void powtorz(const T &wartosc) {
|
||||
for (int i = 0; i < N; i++) {
|
||||
std::cout << wartosc;
|
||||
}
|
||||
std::cout << '\n';
|
||||
}
|
||||
|
||||
int main() {
|
||||
powtorz<char, 5>('*'); // *****
|
||||
powtorz<int, 3>(7); // 7 7 7
|
||||
}
|
||||
12
uczelnia/2_semestr/programowanie/laby/lab12/zad8.cpp
Normal file
12
uczelnia/2_semestr/programowanie/laby/lab12/zad8.cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
// Fragment A
|
||||
template <typename T> T podwoj(T x) { return x + x; }
|
||||
podwoj(2, 3); // funkcja przyjmuje jeden argument a jest wywołana z dwoma
|
||||
|
||||
// Fragment B
|
||||
template <typename T> T iloczyn(T a, T b);
|
||||
// definicja w innym pliku .cpp - kod się nie linkuje
|
||||
// należy dodać #include "nazwa_pliku.cpp"
|
||||
|
||||
// Fragment C
|
||||
template <typename T> T wiekszy(T a, T b) { return a > b ? a : b; }
|
||||
wiekszy("abc", 5); // musi być dwa razy ten sam typ danych, a nie dwa różne
|
||||
21
uczelnia/2_semestr/programowanie/laby/lab12/zad9.cpp
Normal file
21
uczelnia/2_semestr/programowanie/laby/lab12/zad9.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
#include "narzedzia.hpp"
|
||||
|
||||
int main() {
|
||||
std::cout << wiekszy(2, 4) << std::endl;
|
||||
std::cout << wiekszy(2.2, 4.3) << std::endl;
|
||||
std::cout << wiekszy("abc", "cdf") << std::endl;
|
||||
|
||||
std::cout << "\n===\n";
|
||||
|
||||
int x = 2, y = 4;
|
||||
zamien(x, y);
|
||||
std::cout << x << ',' << y;
|
||||
|
||||
double i = 2.5, j = 3.5;
|
||||
zamien(i, j);
|
||||
std::cout << i << ',' << j;
|
||||
|
||||
std::string a = "abc", b = "cde";
|
||||
zamien(a, b);
|
||||
std::cout << a << ',' << b;
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
20
uczelnia/2_semestr/programowanie/laby/lab6/zad1.cpp
Normal file
20
uczelnia/2_semestr/programowanie/laby/lab6/zad1.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
|
||||
class Prostokat {
|
||||
public:
|
||||
double szerokosc;
|
||||
double wysokosc;
|
||||
double pole() { return szerokosc * wysokosc; }
|
||||
double obwod() { return 2 * szerokosc + 2 * wysokosc; }
|
||||
};
|
||||
|
||||
int main() {
|
||||
Prostokat p1;
|
||||
p1.szerokosc = 2;
|
||||
p1.wysokosc = 2;
|
||||
double pole = p1.pole();
|
||||
double obwod = p1.obwod();
|
||||
printf(
|
||||
"Pole o szerokości %0.2f i wysokości %0.2f ma pole %0.2f i obwód %0.2f",
|
||||
p1.szerokosc, p1.wysokosc, pole, obwod);
|
||||
}
|
||||
35
uczelnia/2_semestr/programowanie/laby/lab6/zad10.cpp
Normal file
35
uczelnia/2_semestr/programowanie/laby/lab6/zad10.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#include <stdexcept>
|
||||
#include <stdio.h>
|
||||
|
||||
class Konto {
|
||||
static int liczbaKont;
|
||||
float saldo;
|
||||
|
||||
public:
|
||||
Konto(int saldoPoczatkowe) : saldo(saldoPoczatkowe) { Konto::liczbaKont++; }
|
||||
void wplac(float pieniadze) { saldo += pieniadze; }
|
||||
void wyplac(float pieniadze) {
|
||||
if (saldo - pieniadze <= 0) {
|
||||
throw std::invalid_argument(
|
||||
"Saldo po wypłacie nie może być mniejsze niż 0!!!\n");
|
||||
}
|
||||
saldo -= pieniadze;
|
||||
}
|
||||
void pokazSaldo() { printf("Aktualne saldo to: %0.2f\n", saldo); }
|
||||
|
||||
static void ileKont() {
|
||||
printf("Aktualnie jest %d kont\n", Konto::liczbaKont);
|
||||
}
|
||||
};
|
||||
|
||||
int Konto::liczbaKont = 0;
|
||||
|
||||
int main() {
|
||||
Konto::ileKont();
|
||||
Konto k1 = Konto(20);
|
||||
Konto::ileKont();
|
||||
Konto k2 = Konto(20);
|
||||
Konto::ileKont();
|
||||
Konto k3 = Konto(20);
|
||||
Konto::ileKont();
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user