From 0eee4999984cb451a2a88908b4ae6a9d3276eba3 Mon Sep 17 00:00:00 2001 From: Szymon P Date: Thu, 23 Apr 2026 11:15:33 +0200 Subject: [PATCH] python rzeczy --- .../Prawdopodobieństwo.md | 4 + .../matematyka_stosowana/laby/powtórka.R | 201 ++++++++++++++++++ uczelnia/2_semestr/python/laby/8/baza.py | 35 +++ uczelnia/2_semestr/python/laby/8/figury.py | 81 +++++++ uczelnia/2_semestr/python/laby/8/osoba.py | 68 ++++++ uczelnia/2_semestr/python/laby/8/pracownik.py | 45 ++++ 6 files changed, 434 insertions(+) create mode 100644 uczelnia/2_semestr/matematyka_stosowana/laby/powtórka.R create mode 100644 uczelnia/2_semestr/python/laby/8/baza.py create mode 100644 uczelnia/2_semestr/python/laby/8/figury.py create mode 100644 uczelnia/2_semestr/python/laby/8/osoba.py create mode 100644 uczelnia/2_semestr/python/laby/8/pracownik.py diff --git a/uczelnia/2_semestr/matematyka_stosowana/Prawdopodobieństwo.md b/uczelnia/2_semestr/matematyka_stosowana/Prawdopodobieństwo.md index 3313cca..a90111b 100644 --- a/uczelnia/2_semestr/matematyka_stosowana/Prawdopodobieństwo.md +++ b/uczelnia/2_semestr/matematyka_stosowana/Prawdopodobieństwo.md @@ -246,3 +246,7 @@ Estymator $\theta$ rozkładu zmiennej X nazywamy dowolną statystyką, której w 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. diff --git a/uczelnia/2_semestr/matematyka_stosowana/laby/powtórka.R b/uczelnia/2_semestr/matematyka_stosowana/laby/powtórka.R new file mode 100644 index 0000000..77c6cc5 --- /dev/null +++ b/uczelnia/2_semestr/matematyka_stosowana/laby/powtórka.R @@ -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") +} + + + diff --git a/uczelnia/2_semestr/python/laby/8/baza.py b/uczelnia/2_semestr/python/laby/8/baza.py new file mode 100644 index 0000000..0668e1d --- /dev/null +++ b/uczelnia/2_semestr/python/laby/8/baza.py @@ -0,0 +1,35 @@ +from osoba import Osoba +from pracownik import Pracownik + +if __name__ == "__main__": + baza: set[Pracownik | Osoba] = set() + + baza.add(Osoba("2342348", "Bogdan", "Wojciechowski", 67.67, 69.69)) + baza.add(Osoba("2983473", "Stanisław", "Pięta", 123.21, 543.23)) + baza.add(Osoba("2389412", "Stefan", "Cichnicki", 67.67, 233.1)) + baza.add(Osoba("2983473", "Genowefa", "Pięta", 123.21, 543.23)) + baza.add(Osoba("2389412", "Aniela", "Głąb", 2384.1, 233.1)) + + baza.add( + Pracownik( + "2389412", + "Stanisław", + "Lem", + "Wydawnictwo niezwykłe", + 2384.1, + 233.1, + 234123, + ) + ) + + baza.add( + Pracownik("2389412", "Andrzej", "Sapkowski", "CD PROJEKT RED", 2384.1, 233.1, 5) + ) + baza.add( + Pracownik( + "2389412", "Andrzej", "Duda", "Pałac prezydencki", 2384.1, 233.1, 234123 + ) + ) + + for element in baza: + print(element.__repr__()) diff --git a/uczelnia/2_semestr/python/laby/8/figury.py b/uczelnia/2_semestr/python/laby/8/figury.py new file mode 100644 index 0000000..6adb2f7 --- /dev/null +++ b/uczelnia/2_semestr/python/laby/8/figury.py @@ -0,0 +1,81 @@ +from abc import ABC, abstractmethod +from math import pi as PI + + +class Figura(ABC): + @abstractmethod + def oblicz_pole(self): + pass + + @abstractmethod + def typ_figury(self): + pass + + def print(self): + print(" Figura : ", self.typ_figury(), " , Pole : ", self.oblicz_pole()) + + def __copy__(self): + cls = self.__class__ + result = cls.__new__(cls) + result.__dict__.update(self.__dict__) + return result + + +class Kwadrat(Figura): + def __init__(self, a: int | float): + if isinstance(a, int | float): + self.a = a + else: + raise TypeError("Niewłaściwy typ boku") + + def oblicz_pole(self): + return self.a**2 + + def typ_figury(self): + return " Kwadrat " + + +class Kolo(Figura): + def __init__(self, r: int | float) -> None: + if isinstance(r, int | float): + self.r = r + else: + raise TypeError("Koło musi mieć r typu liczba !!") + + def oblicz_pole(self) -> float: + return 2 * PI * self.r + + def typ_figury(self): + return " Koło " + + +class Trojkat(Figura): + def __init__(self, a: int | float, h: int | float): + if isinstance(a, int | float) and isinstance(h, int | float): + self.a = a + self.h = h + else: + raise TypeError("Trojkat ma zle typy na wejsciu :((((") + + def oblicz_pole(self) -> float: + return (self.a * self.h) / 2 + + def typ_figury(self): + return " Trojkat " + + +if __name__ == "__main__": + try: + kwadrat = Kwadrat(3) + kolo = Kolo(2) + trojkat = Trojkat(2, 5) + trojkat2 = trojkat.__copy__() + except TypeError as e: + print(f"Bład podczas tworzenia figur: {e}") + except Exception as e: + print(f"Nieznany błąd poczas tworzenia figur: {e}") + + kwadrat.print() + kolo.print() + trojkat.print() + trojkat2.print() diff --git a/uczelnia/2_semestr/python/laby/8/osoba.py b/uczelnia/2_semestr/python/laby/8/osoba.py new file mode 100644 index 0000000..825e344 --- /dev/null +++ b/uczelnia/2_semestr/python/laby/8/osoba.py @@ -0,0 +1,68 @@ +class Osoba: + ilosc_osob: int = 0 + + def __init__( + self, + pesel: str, + imie: str, + nazwisko: str, + wzrost: float = 0.0, + waga: float = 0.0, + ) -> None: + self.__pesel = pesel + self.__imie = imie + self.__nazwisko = nazwisko + self.__wzrost = wzrost + self.__waga = waga + Osoba.ilosc_osob += 1 + + @property + def pesel(self) -> str: + return self.__pesel + + @property + def imie(self) -> str: + return self.__imie + + @property + def nazwisko(self) -> str: + return self.__nazwisko + + @property + def wzrost(self) -> float: + return self.__wzrost + + @wzrost.setter + def wzrost(self, nowy_wzrost: float) -> None: + if nowy_wzrost <= 0: + self.__wzrost = 0 + return + self.__wzrost = nowy_wzrost + + @property + def waga(self) -> float: + return self.__waga + + @waga.setter + def waga(self, nowa_waga: float) -> None: + if nowa_waga <= 0: + self.__waga = 0 + return + self.__waga = nowa_waga + + @property + def data_urodzenia(self) -> str: + return self.__pesel[:6] + + def __del__(self): + Osoba.ilosc_osob -= 1 + del self + + def __hash__(self) -> int: + return int(self.__pesel) + + def __str__(self) -> str: + return f"{self.__pesel}, {self.__imie}, {self.__nazwisko}" + + def __repr__(self): + return f"Osoba(pesel={self.__pesel}, imie={self.__imie}, nazwisko={self.__nazwisko}, wzrost={self.__wzrost}, waga={self.__waga})" diff --git a/uczelnia/2_semestr/python/laby/8/pracownik.py b/uczelnia/2_semestr/python/laby/8/pracownik.py new file mode 100644 index 0000000..5d3e1d6 --- /dev/null +++ b/uczelnia/2_semestr/python/laby/8/pracownik.py @@ -0,0 +1,45 @@ +from osoba import Osoba + + +class Pracownik(Osoba): + def __init__( + self, + pesel: str, + imie: str, + nazwisko: str, + miejsce_zatrudnienia: str, + wzrost: float = 0.0, + waga: float = 0.0, + pensja: float = 0.0, + ) -> None: + super().__init__(pesel, imie, nazwisko, wzrost, waga) + self.__miejsce_zatrudnienia = miejsce_zatrudnienia + self.__pensja = pensja + + @property + def miejsce_zatrudnienia(self) -> str: + return self.__miejsce_zatrudnienia + + @miejsce_zatrudnienia.setter + def miejsce_zatrudnienia(self, nowe_miejsce: str): + if nowe_miejsce: + self.__miejsce_zatrudnienia = nowe_miejsce + return + nowe_miejsce = "" + + @property + def pensja(self) -> float: + return self.__pensja + + @pensja.setter + def pensja(self, nowa_pensja: float) -> None: + if nowa_pensja >= 0: + self.__pensja = nowa_pensja + return + self.__pensja = 0 + + def __str__(self): + return f"{super().__str__()} | Miejsce zatrudnienia: {self.__miejsce_zatrudnienia} " + + def __repr__(self): + return f"Pracownik(pesel={super().pesel}, imie={super().imie}, nazwisko={super().nazwisko}, miejsce_zatrudnienia={self.miejsce_zatrudnienia}, wzrost={super().wzrost}, waga={super().waga}, pensja={self.pensja})"