Informatika1-2015/Gyakorlat11megoldasok
A MathWikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „== Blokkmátrix == Számoljuk ki a determinánsát a következõ blokkmátrixnak: X I O X ahol I a 3x3-as egységmátrix és O a 3x3-as csupa 0 mátrix, X pedig a k…”) |
|||
1. sor: | 1. sor: | ||
+ | = Mátrixok = | ||
+ | |||
== Blokkmátrix == | == Blokkmátrix == | ||
8. sor: | 10. sor: | ||
-1 0 -1 | -1 0 -1 | ||
-1 -1 0 | -1 -1 0 | ||
+ | |||
+ | === Megoldás === | ||
+ | |||
+ | <python> | ||
+ | O = 0 * ones_matrix(3, 3) | ||
+ | I = diagonal_matrix([1, 1, 1]) | ||
+ | X = -1 * ones_matrix(3, 3) + I | ||
+ | block_matrix([[X, I], [O, X]]).det() | ||
+ | </python> | ||
== Egyenlet megoldás == | == Egyenlet megoldás == | ||
20. sor: | 31. sor: | ||
Ha megkaptuk az eredményt, akkor állítsuk át a mátrixot, hogy GF(3) felett legyen értelmezve (a '''change_ring''' metódussal) és nézzük meg így is a megoldást. | Ha megkaptuk az eredményt, akkor állítsuk át a mátrixot, hogy GF(3) felett legyen értelmezve (a '''change_ring''' metódussal) és nézzük meg így is a megoldást. | ||
+ | |||
+ | === Megoldás === | ||
+ | |||
+ | <python> | ||
+ | A = matrix([[1, -1, 0], [3, 1, -1], [-2, 0, 1]]) | ||
+ | b = vector([1, 1, 2]) | ||
+ | A.solve_right(b) | ||
+ | </python> | ||
+ | |||
+ | <python> | ||
+ | A = matrix([[1, -1, 0], [3, 1, -1], [-2, 0, 1]]) | ||
+ | b = vector([1, 1, 2]) | ||
+ | G = A.change_ring(GF(3)) | ||
+ | G.solve_right(b) | ||
+ | </python> | ||
== Összefüggõ == | == Összefüggõ == | ||
28. sor: | 54. sor: | ||
1 x -1 | 1 x -1 | ||
+ | === Megoldás === | ||
− | + | <python> | |
+ | m = Matrix([[x, 0, 1], [0, 2, x], [1, x, -1]]) | ||
+ | solve(m.det() == 0, x) | ||
+ | </python> | ||
= Listaértelmezések = | = Listaértelmezések = | ||
69. sor: | 99. sor: | ||
− | + | * Keressük meg az összes olyan 1000 alatti négyzetszámot, melynél eggyel nagyobb szám prím. Pl a 4 ilyen. | |
− | + | * Keressük meg az összes olyan 100 alatti számpárt, melyekre igaz, hogy mindkettõ prím és az egészosztással vett eredményük is prím. Pl (11, 2) ilyen. | |
− | + | * Keressük meg az összes egy jegyû számhármast, mely egymás után írva megegyezik a köbeik összegével. Ilyen például az 1, 5, 3, mert 1^3 + 5^3 + 3^3 == 153 | |
− | + | * Keressük meg az összes olyan 1000 alatti számot, melynek négyzete megegyezik az nálánál kisebb osztói köbeinek az összegével. (Egy kis csavar a [https://hu.wikipedia.org/wiki/T%C3%B6k%C3%A9letes_sz%C3%A1mok tökéletes számokon]) | |
− | + | * Keressük meg az összes olyan 10000 alatti számot, mely kétféleképpen írható fel 2 darab szám köbének összegeként. |
A lap 2015. december 8., 23:26-kori változata
Tartalomjegyzék |
Mátrixok
Blokkmátrix
Számoljuk ki a determinánsát a következõ blokkmátrixnak:
X I O X
ahol I a 3x3-as egységmátrix és O a 3x3-as csupa 0 mátrix, X pedig a következõ:
0 -1 -1 -1 0 -1 -1 -1 0
Megoldás
O = 0 * ones_matrix(3, 3) I = diagonal_matrix([1, 1, 1]) X = -1 * ones_matrix(3, 3) + I block_matrix([[X, I], [O, X]]).det()
Egyenlet megoldás
Oldjuk meg az Ax = b alakú egyenletrendszert, ahol A és b rendre:
1 -1 0 | 1 3 1 -1 | 1 -2 0 1 | 2
Használjuk az elõadáson tanult solve_right metódust!
Ha megkaptuk az eredményt, akkor állítsuk át a mátrixot, hogy GF(3) felett legyen értelmezve (a change_ring metódussal) és nézzük meg így is a megoldást.
Megoldás
A = matrix([[1, -1, 0], [3, 1, -1], [-2, 0, 1]]) b = vector([1, 1, 2]) A.solve_right(b)
A = matrix([[1, -1, 0], [3, 1, -1], [-2, 0, 1]]) b = vector([1, 1, 2]) G = A.change_ring(GF(3)) G.solve_right(b)
Összefüggõ
Határozzuk meg, hogy az alábbi mátrix sorai (vagy oszlopai) milyen x értékekre lesznek összefüggõk. (Használjuk a solve parancsot a fentiekkel együtt.)
x 0 1 0 2 x 1 x -1
Megoldás
m = Matrix([[x, 0, 1], [0, 2, x], [1, x, -1]]) solve(m.det() == 0, x)
Listaértelmezések
Mit csinál?
Futtassuk le az alábbi példákat és értelmezzük õket mi is történik bennük és hogyan érjük ezt el.
[n for n in range(1, 10)]
[(n, m) for n in range(1, 10) for m in range(1, 5)]
[n for n in range(1, 10) if is_prime(n)]
[n for n in range(1, 100) if n % 5 == 0 and n % 7 == 1]
[(n, m) for n in range(1, 5) for m in range(n, 5)]
[(m, n) for n in range(1, 10) for m in range(n, 10) if m % n == 0]
sorted([(m, n) for n in range(1, 10) for m in range(n, 10) if m % n == 0])
sum([n for n in range(1, 10) if is_prime(n)])
Az utolsóhoz egy kis spoiler, ha nem menne: spoiler
[n for n in range(1, 100) if n == sum([m for m in range(1, n) if n % m == 0])]
Oldjuk meg
- Keressük meg az összes olyan 1000 alatti négyzetszámot, melynél eggyel nagyobb szám prím. Pl a 4 ilyen.
- Keressük meg az összes olyan 100 alatti számpárt, melyekre igaz, hogy mindkettõ prím és az egészosztással vett eredményük is prím. Pl (11, 2) ilyen.
- Keressük meg az összes egy jegyû számhármast, mely egymás után írva megegyezik a köbeik összegével. Ilyen például az 1, 5, 3, mert 1^3 + 5^3 + 3^3 == 153
- Keressük meg az összes olyan 1000 alatti számot, melynek négyzete megegyezik az nálánál kisebb osztói köbeinek az összegével. (Egy kis csavar a tökéletes számokon)
- Keressük meg az összes olyan 10000 alatti számot, mely kétféleképpen írható fel 2 darab szám köbének összegeként.