Skip to content

Commit 8c7541c

Browse files
author
Sushmit Roy
committed
SR: Changing mat.py logic
1 parent bd6d7a0 commit 8c7541c

File tree

7 files changed

+506
-346
lines changed

7 files changed

+506
-346
lines changed

.idea/workspace.xml

Lines changed: 60 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.ipynb_checkpoints/Python3_chapter4-checkpoint.ipynb

Lines changed: 163 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"name": "stdout",
5555
"output_type": "stream",
5656
"text": [
57-
"{'@', '#', '?'}\n",
57+
"{'@', '?', '#'}\n",
5858
"2\n",
5959
"\n",
6060
" # ? @\n",
@@ -180,7 +180,7 @@
180180
" gnome hoop putty shooter slinky\n",
181181
"--------------------------------\n",
182182
" 240 55 133 90 150\n",
183-
"1.1071820576957945e-25\n"
183+
"4.8568588212647255e-25\n"
184184
]
185185
}
186186
],
@@ -230,12 +230,31 @@
230230
" 6 | one 0 0 0\n",
231231
"\n",
232232
"\n",
233-
" 0 1 2 3 4 5 6\n",
234-
" -----------------------\n",
235-
" 0 | 0 0 0 0 0 0 one\n",
236-
" 1 | 0 0 0 0 0 one 0\n",
237-
" 2 | 0 0 0 0 one 0 0\n",
238-
" 3 | 0 0 one 0 0 0 0\n",
233+
" 0\n",
234+
" -----\n",
235+
" 0 | one\n",
236+
" 1 | 0\n",
237+
" 2 | 0\n",
238+
" 3 | one\n",
239+
"\n",
240+
"\n",
241+
" 0\n",
242+
" -----\n",
243+
" 0 | 0\n",
244+
" 1 | 0\n",
245+
" 2 | one\n",
246+
" 3 | one\n",
247+
" 4 | 0\n",
248+
" 5 | 0\n",
249+
" 6 | one\n",
250+
"\n",
251+
"\n",
252+
" 0\n",
253+
" -----\n",
254+
" 0 | one\n",
255+
" 1 | 0\n",
256+
" 2 | 0\n",
257+
" 3 | one\n",
239258
"\n"
240259
]
241260
}
@@ -245,23 +264,25 @@
245264
"# Task 4.14.1 \n",
246265
"G = listlist2mat([[one,zero,one,one],\n",
247266
" [one,one,zero,one],[zero,zero,zero,one],\n",
248-
" [one,one,one,zero],[zero,zero,one,zero],[zero,one,zero,zero],[one,zero,zero,zero]])\n",
249-
"\n",
250-
"print(G)\n",
251-
"\n",
252-
"# Task 4.14.3\n",
253-
"\n",
267+
" [one,one,one,zero],[zero,zero,one,zero],\n",
268+
" [zero,one,zero,zero],[one,zero,zero,zero]])\n",
269+
"c1 = listlist2mat([[one],[zero],[zero],[one]])\n",
270+
"c = listlist2mat([[one,zero,zero,one]])\n",
271+
"res = G*c1\n",
272+
"#Task 4.14.3\n",
254273
"R = listlist2mat([[zero,zero,zero,zero,zero,zero,one],\n",
255274
" [zero,zero,zero,zero,zero,one,zero],\n",
256275
" [zero,zero,zero,zero,one,zero,zero],\n",
257276
" [zero,zero,one,zero,zero,zero,zero]])\n",
258-
"\n",
259-
"print(R)"
277+
"print(G)\n",
278+
"print(c1)\n",
279+
"print(G*c1)\n",
280+
"print(R * res)\n"
260281
]
261282
},
262283
{
263284
"cell_type": "code",
264-
"execution_count": 7,
285+
"execution_count": 6,
265286
"metadata": {
266287
"collapsed": false
267288
},
@@ -291,13 +312,13 @@
291312
" 5 | 2\n",
292313
"\n",
293314
"False\n",
294-
"('b', 'A')\n",
295315
"('a', 'B')\n",
296316
"('b', 'B')\n",
317+
"('b', 'A')\n",
297318
"0\n",
298319
"True\n",
299320
"True\n",
300-
"({'a', 'b'}, {'A', 'B'})\n",
321+
"({'a', 'b'}, {'B', 'A'})\n",
301322
"Addition starts\n",
302323
"True\n",
303324
"True\n",
@@ -315,18 +336,65 @@
315336
"True\n",
316337
"True\n",
317338
"True\n",
318-
"True\n"
339+
"True\n",
340+
"testing for mat * mat\n",
341+
"True\n",
342+
"\n",
343+
" 0 1 2\n",
344+
" ---------\n",
345+
" 0 | 15 12 0\n",
346+
" 1 | 25 31 0\n",
347+
" 2 | 0 0 0\n",
348+
"\n",
349+
"\n",
350+
" a b\n",
351+
" ------\n",
352+
" 0 | 4 -3\n",
353+
" 1 | 1 0\n",
354+
" 2 | 1 -2\n",
355+
"\n",
356+
"\n",
357+
" x y\n",
358+
" ------\n",
359+
" a | 3 -2\n",
360+
" b | 4 -1\n",
361+
"\n",
362+
"\n",
363+
" x y\n",
364+
" -------\n",
365+
" 0 | 0 -5\n",
366+
" 1 | 3 -2\n",
367+
" 2 | -5 0\n",
368+
"\n",
369+
"True\n",
370+
"\n",
371+
" (1, 1) (2, 2)\n",
372+
" ---------------\n",
373+
" 0 | 0 0\n",
374+
" 1 | 0 0\n",
375+
"\n",
376+
"True\n",
377+
"\n",
378+
" c d\n",
379+
" ------\n",
380+
" a | 0 5\n",
381+
" b | 0 15\n",
382+
"\n",
383+
"True\n",
384+
"True\n",
385+
"\n",
386+
" A B\n",
387+
" -----\n",
388+
" a | 1 2\n",
389+
" b | 3 4\n",
390+
"\n",
391+
"\n",
392+
" c d\n",
393+
" -----\n",
394+
" A | 0 5\n",
395+
" B | 0 0\n",
396+
"\n"
319397
]
320-
},
321-
{
322-
"data": {
323-
"text/plain": [
324-
"True"
325-
]
326-
},
327-
"execution_count": 7,
328-
"metadata": {},
329-
"output_type": "execute_result"
330398
}
331399
],
332400
"source": [
@@ -412,12 +480,74 @@
412480
"v1.f\n",
413481
"v4 = Vec({'a','b'},{'a':1,'b':1})\n",
414482
"\n",
415-
"{key1[0]: M3[key1] for key1 in M3.f if key1[1] == 0}\n",
483+
"#{key1[0]: M3[key1] for key1 in M3.f if key1[1] == 0}\n",
484+
"print('testing for mat * mat')\n",
416485
"A = Mat(({0,1,2}, {0,1,2}), {(1,1):4, (0,0):0, (1,2):1, (1,0):5, (0,1):3, (0,2):2})\n",
417486
"B = Mat(({0,1,2}, {0,1,2}), {(1,0):5, (2,1):3, (1,1):2, (2,0):0, (0,0):1, (0,1):4})\n",
418487
"\n",
419-
"#A * B == Mat(({0,1,2}, {0,1,2}), {(0,0):15, (0,1):12, (1,0):25, (1,1):31})\n",
420-
"A * B"
488+
"print(A * B == Mat(({0,1,2}, {0,1,2}), {(0,0):15, (0,1):12, (1,0):25, (1,1):31}))\n",
489+
"#print(A * B)\n",
490+
"C = Mat(({0,1,2}, {'a','b'}), {(0,'a'):4, (0,'b'):-3, (1,'a'):1, (2,'a'):1, (2,'b'):-2})\n",
491+
"D = Mat(({'a','b'}, {'x','y'}), {('a','x'):3, ('a','y'):-2, ('b','x'):4, ('b','y'):-1})\n",
492+
"#print(C)\n",
493+
"#print(D)\n",
494+
"#print(C*D)\n",
495+
"print(C*D == Mat(({0,1,2}, {'x','y'}), {(0,'y'):-5, (1,'x'):3, (1,'y'):-2, (2,'x'):-5}))\n",
496+
"M = Mat(({0, 1}, {'a', 'c', 'b'}), {})\n",
497+
"N = Mat(({'a', 'c', 'b'}, {(1, 1), (2, 2)}), {})\n",
498+
"#print(M * N)\n",
499+
"print(M*N == Mat(({0,1}, {(1,1), (2,2)}), {}))\n",
500+
"E = Mat(({'a','b'},{'A','B'}), {('a','A'):1,('a','B'):2,('b','A'):3,('b','B'):4})\n",
501+
"F = Mat(({'A','B'},{'c','d'}),{('A','d'):5})\n",
502+
"\n",
503+
"#print(E * F)\n",
504+
"print(E*F == Mat(({'a', 'b'}, {'d', 'c'}), {('b', 'd'): 15, ('a', 'd'): 5}))\n",
505+
"print(F.transpose()*E.transpose() == \n",
506+
" Mat(({'d', 'c'}, {'a', 'b'}), {('d', 'b'): 15, ('d', 'a'): 5}))\n",
507+
"\n",
508+
"#print(Mat(({0,1,2}, {'x','y'}), {(0,'y'):-5, (1,'x'):3, (1,'y'):-2, (2,'x'):-5}))\n",
509+
"#print(E)\n",
510+
"#print(F)\n",
511+
"\n"
512+
]
513+
},
514+
{
515+
"cell_type": "code",
516+
"execution_count": 7,
517+
"metadata": {
518+
"collapsed": false
519+
},
520+
"outputs": [
521+
{
522+
"name": "stdout",
523+
"output_type": "stream",
524+
"text": [
525+
"0\n",
526+
"0\n",
527+
"5\n",
528+
"15\n",
529+
"\n",
530+
" c d\n",
531+
" ------\n",
532+
" a | 0 5\n",
533+
" b | 0 15\n",
534+
"\n"
535+
]
536+
}
537+
],
538+
"source": [
539+
"E = Mat(({'a','b'},{'A','B'}), {('a','A'):1,('a','B'):2,('b','A'):3,('b','B'):4})\n",
540+
"F = Mat(({'A','B'},{'c','d'}),{('A','d'):5})\n",
541+
"mat_mul = Mat((E.D[0], F.D[1]), {})\n",
542+
"for k in F.D[1]:\n",
543+
" vec_col = Vec(F.D[0], {key1[0]: F[key1] for key1 in F.f if key1[1] == k})\n",
544+
" # print(vec_col)\n",
545+
" for j in E.D[0]:\n",
546+
" mat_mul[j, k] = sum([E[key1]*vec_col[key1[1]] for key1 in E.f if key1[0] == j])\n",
547+
" print(mat_mul[j,k])\n",
548+
" \n",
549+
"print(mat_mul)\n",
550+
"#print(E,F)\n"
421551
]
422552
}
423553
],

0 commit comments

Comments
 (0)