Informatika1-2015/Gyakorlat11

A MathWikiből
(Változatok közti eltérés)
1. sor: 1. sor:
== Mátrixozás még ==
+
= Mátrixozás még =
  
=== Emlékeztetõ és még pár dolog ===
+
== Emlékeztetõ és még pár dolog ==
  
 
Mátrixot megadhatunk a következõ módon:
 
Mátrixot megadhatunk a következõ módon:
 
<python>
 
<python>
m = Matrix([[1, 0], [0, 1]]
+
m = Matrix([[1, 0], [0, 1]])
 
</python>
 
</python>
 
Ez a következõ mátrixot eredményezi:
 
Ez a következõ mátrixot eredményezi:
11. sor: 11. sor:
 
  0 1
 
  0 1
  
Blokkmátrixot, továbbá fõátlóval adott mátrixot is kényelmesen adhatunk meg:
+
Blokkmátrixot, csupa 1-es mátrixot, továbbá fõátlóval adott mátrixot is kényelmesen adhatunk meg:
 
<python>
 
<python>
 
A = diagonal_matrix([1, 5])
 
A = diagonal_matrix([1, 5])
block_matrix([[A, -1*A], [A^(-1), A]])
+
B = ones_matrix(2, 2)
 +
block_matrix([[A, -1*A], [A^(-1), B]])
 
</python>
 
</python>
 
Ez a következõ mátroxot eredményezi:
 
Ez a következõ mátroxot eredményezi:
20. sor: 21. sor:
 
   0  5|  0  -5
 
   0  5|  0  -5
 
  ------+-------
 
  ------+-------
   1  0|  1  0
+
   1  0|  1  1
   0 1/5|  0   5
+
   0 1/5|  1   1
  
 
Egy mátrix determinánsát kiszámolhatjuk a '''det''' metódussal:
 
Egy mátrix determinánsát kiszámolhatjuk a '''det''' metódussal:
27. sor: 28. sor:
 
m.det()
 
m.det()
 
</python>
 
</python>
 +
 +
== Feladatok ==
  
 
=== Összefüggõ ===
 
=== Összefüggõ ===
37. sor: 40. sor:
 
=== Blokkmátrix ===
 
=== Blokkmátrix ===
  
Számoljuk ki a determinánsát a következõ blokkmátrix determinánsát:
+
Számoljuk ki a determinánsát a következõ blokkmátrixnak:
 
  X I
 
  X I
 
  O X
 
  O X
ahol X a 3x3-as csupa -1 mátrix, I a 3x3-as egységmátrix és O a 3x3-as csupa 0 mátrix.
+
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
 +
 
 +
= Listaértelmezések =
  
== Listaértelmezések ==
+
== Emlékeztetõ ==
  
 
<python>
 
<python>

A lap 2015. november 24., 07:48-kori változata

Tartalomjegyzék

Mátrixozás még

Emlékeztetõ és még pár dolog

Mátrixot megadhatunk a következõ módon:

m = Matrix([[1, 0], [0, 1]])

Ez a következõ mátrixot eredményezi:

1 0
0 1

Blokkmátrixot, csupa 1-es mátrixot, továbbá fõátlóval adott mátrixot is kényelmesen adhatunk meg:

A = diagonal_matrix([1, 5])
B = ones_matrix(2, 2)
block_matrix([[A, -1*A], [A^(-1), B]])

Ez a következõ mátroxot eredményezi:

 1   0| -1   0
 0   5|  0  -5
------+-------
 1   0|  1   1
 0 1/5|  1   1

Egy mátrix determinánsát kiszámolhatjuk a det metódussal:

m.det()

Feladatok

Ö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

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

Listaértelmezések

Emlékeztetõ

[kifejezés for elem in bejárható_objektum]

Egy olyan listát hoz létre melyben a kifejezés szerepel a bejárható_objektum minden elemére. Bejárható objektum például egy lista, az is amit a range függvény hoz létre.

[kifejezés for elem in bejárható_objektum if feltétel]

Mint az elõzõ, de csak azok az elemek lesznek benne melyekre teljesül a feltétel.

[kifejezés for elem1 in bejárható_objektum1 if feltétel1
           for elem2 in bejárható_objektum2 if feltétel2
           for elemN in bejárható_objektumN if feltételN]

Több feltétel és ciklus is írható akár.

Pl:

[n^2 for n in range(1, 5)]  # [1, 4, 9, 16]
[n for n in [-1, 2, -3, 4] if n > 0]  # [2, 4]

Feladatok

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

  1. Keressük meg az összes olyan 1000 alatti négyzetszámot, melynél eggyel nagyobb szám prím. Pl a 4 ilyen.
  2. 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
  3. 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)
Személyes eszközök