Compare commits

..

293 Commits

Author SHA1 Message Date
474050ff6d increase dot grid size to be less distracting 2025-09-07 18:32:52 +01:00
1b95f46544 add note on cloudwatch event rules via ansible 2025-02-12 14:09:35 +00:00
a4b13fb71e always dark mode 2024-12-25 19:45:11 +00:00
d512ff1c73 use dotgrid module 2024-12-25 19:34:14 +00:00
b7c38ddc89 fix title cuasing issues with gronk 2024-08-09 21:03:58 +01:00
9d602fede7 cadence license manager issues 2024-08-09 20:57:19 +01:00
a21898048c update readmes 2024-04-16 18:47:33 +01:00
5e3bdbe2f6 how to install droidcam on jetson nano 2024-04-16 18:42:24 +01:00
1e90d6c8a9 comic mono 2024-04-14 16:05:13 +01:00
b6c9129fa5 update readme 2024-04-13 21:03:16 +01:00
00b08276a2 add realistic date 2024-04-13 21:01:33 +01:00
47bfb4ac20 update blog readme 2024-04-13 20:58:25 +01:00
1055f83d3a fix images 2024-04-13 20:54:16 +01:00
a9cb29989d fix metadata 2024-04-13 20:52:42 +01:00
ce04f5dd57 add old posts 2024-04-13 20:44:27 +01:00
ef43740721 update readme 2024-04-13 20:18:04 +01:00
b94dba3163 add base_url 2024-04-13 20:06:50 +01:00
816896537d start move blog to gronk 2024-04-13 20:02:11 +01:00
ad7096bca2 explain xed value 2024-03-02 14:28:24 +00:00
37618fe7eb cross elastic demand 2024-03-02 14:25:31 +00:00
8c16a0d537 update flashcards 2024-02-29 12:56:56 +00:00
e203b294c5 update flashcards 2024-02-25 13:02:36 +00:00
91e7c9701a update flashcards 2024-02-23 19:16:29 +00:00
9e12734c5f update readme 2024-02-21 15:08:29 +00:00
524465453a update flashcards (corrections) 2024-02-21 15:06:30 +00:00
dec593c503 management 2024-02-16 12:34:28 +00:00
56d55a6617 update readme to include errata 2024-02-13 09:45:57 +00:00
15cec82789 add resources on mmme3081 2024-02-13 09:39:33 +00:00
8185cd14e4 mmme3049 2024-02-02 12:36:25 +00:00
e4a0ef25e1 help i think my device shut down after deleting the current kernel and before installing the second (no entries in systemd-boot/grub/<bootloader>) 2024-01-29 15:38:10 +00:00
5f5e43e54e update readme 2024-01-23 16:31:12 +00:00
a24eb028a9 add code for solutions for exam papers 2024-01-23 16:28:16 +00:00
996700bec9 add exercise sheet 8 solution plotter script 2024-01-17 15:50:25 +00:00
4369e246bd update folder name 2024-01-07 16:14:15 +00:00
a42bfcc814 add errata for exercise sheets 2024-01-07 16:06:29 +00:00
3de79c2111 formatting 2024-01-02 20:15:44 +00:00
da516f5160 add page no issues with logging into email 2024-01-02 20:14:13 +00:00
0489963eda update gohookr.sh 2024-01-02 19:04:05 +00:00
8981e9b9c4 update readmes 2024-01-02 18:48:48 +00:00
dd35b48def add flask project example 2024-01-02 02:15:24 +00:00
0ceb20bcf1 add computer engineering slides 2023-12-28 20:18:17 +00:00
f266085c4e add mechatronics lecture slides 2023-12-28 20:16:19 +00:00
5b64235c97 add past papers 2023-12-28 20:13:00 +00:00
b3d42c30d9 add lecture slides, lectur notes 2023-12-28 20:12:23 +00:00
a84913e3f5 add exercise sheets 2023-12-28 19:49:08 +00:00
557bad8387 add exam cheatsheets 2023-11-06 12:56:52 +00:00
0f29002415 add mmme3085 mechatronics week 4 lecture slides 2023-11-06 12:55:42 +00:00
11cd8df774 correct lecture_notes folder name 2023-11-06 12:54:53 +00:00
a92f99dae8 add fea lecture slides 2023-11-06 12:54:10 +00:00
7f7955fc4f add fea exercise sheets 2023-11-06 12:53:52 +00:00
a4d8d95d74 add .n2w config 2023-10-31 16:04:01 +00:00
bec5809694 add notes, slides, lecture notes on fea 2023-10-31 16:03:40 +00:00
4e51f23dca move lecture notes and slides into subfolders 2023-10-31 14:35:05 +00:00
212cfd6e4c add lecture notes, lecture slides for lecture 4, 5 2023-10-23 17:08:35 +01:00
c58e7b2f94 add computer engineering slides, separate computer engineering and mechatronics into subfolders 2023-10-23 17:08:00 +01:00
307c4f366d remove unnecessary frontmatter 2023-10-18 18:33:54 +01:00
3b0d086ea0 update labs.md 2023-10-18 18:33:16 +01:00
4b59dcaa8b mmmme3085 move labs to own page 2023-10-18 18:32:52 +01:00
55b75039bf add lecture notes, lecture slides, exercise sheets for lectures 2,3 2023-10-18 18:32:09 +01:00
cde7a3c7f9 add courseworks page for cmt 2023-10-18 18:31:32 +01:00
b0f8043db0 format tables 2023-10-15 16:14:53 +01:00
6e748d46b2 add exerices sheets, worked example matlab scripts 2023-10-15 16:12:48 +01:00
f2e94c592f add index.md for mmme3085 2023-10-15 15:50:56 +01:00
f8785c4fd2 mmme3085 add week 2 mechatronics lecture slides 2023-10-12 09:59:20 +01:00
56282d75af initial resources for 3085, 3086 2023-10-05 11:01:12 +01:00
ed7af09a55 2nd year fin 2023-06-15 00:33:56 +01:00
917a47caf9 rename mmme2049 flashcard apkg 2023-06-07 13:41:14 +01:00
57507d4c34 finish mmme2049 2023-06-07 13:40:09 +01:00
d61c94880c done with 2047 2023-05-22 22:14:01 +01:00
9b694732bd mmme2053 beam bending dicontinuiutity functions 2023-05-19 23:50:26 +01:00
160418816f add past papers 2023-05-08 18:55:48 +01:00
d505de5ac1 add exercise sheets, lecture notes, lecture slides 2023-05-08 17:30:28 +01:00
868fac25cf add, organise exam papers 2023-05-08 17:30:08 +01:00
c90147635a explain variable in nusselt number 2023-05-08 17:29:40 +01:00
c0c565a104 add errata for bearings 2023-04-30 16:21:21 +01:00
fb21e1012f add MMME2044 anki flashcards 2023-04-28 20:43:40 +01:00
015149b341 update notes on bearings, add past papers 2023-04-28 20:42:43 +01:00
bc73ac4e09 update heading sizes 2023-04-28 18:10:08 +01:00
6357ba4fdb mmme2049 add lecture slides, exercise sheet 1 2023-04-26 00:05:28 +01:00
b262977263 mmme2046 add exercise sheets, control lecture notes 2023-04-26 00:04:18 +01:00
486774e0d6 add exercise sheets 2023-04-26 00:02:38 +01:00
3eed68e1b3 updaet digital electronics 2023-04-26 00:02:21 +01:00
826ea4690f fix error in flip flop output table 2023-04-25 20:20:50 +01:00
07466ce8a9 notes on ac motors 2023-04-24 22:55:25 +01:00
9b1346f8f0 add errata, fix typos 2023-04-23 19:13:58 +01:00
6ec65bd5ec fix typos in turbomachinery notes 2023-04-23 17:09:25 +01:00
519d3e37f0 update notes on heat transfer 2023-04-22 14:38:33 +01:00
5d580557ec fix typo 2023-04-18 13:54:16 +01:00
bb4ba0ff66 fix typos 2023-04-11 15:52:22 +01:00
249a2f30d2 typo in piezoelectrics notes 2023-04-09 14:42:53 +01:00
a07f63de81 mmme2051 notes on dc motors 2023-03-30 11:35:23 +01:00
f3580ea182 mmme2051 boolean algebra 2023-03-30 11:15:49 +01:00
572d86e60f mmme2053 note on elastic instability (buckling) 2023-03-24 15:37:43 +00:00
7d9ad8cbf0 notes on thick walled cylinders 2023-03-23 15:49:05 +00:00
7166aecc6f mmme2053 empty notes on thick walled cylinders, elastic instability (buckling) 2023-03-23 14:33:46 +00:00
274c643b09 notes on diodes 2023-03-23 12:17:45 +00:00
5d4ec5ab36 add note about exclusion of efficiency from transformer equation 2023-03-23 11:54:24 +00:00
acb42fb8c6 mmme2051 add formula sheet 2023-03-23 11:26:58 +00:00
ebb8ad0350 add notes on transformers 2023-03-23 11:26:34 +00:00
b2ff21cd12 add notes on piezoelectrics 2023-03-20 14:21:30 +00:00
73d39c8744 add mmme2044 lecture slides 2023-03-20 14:04:42 +00:00
d0496e79d8 add notes on pumps, turbines 2023-03-20 14:02:40 +00:00
485ca3ca66 fix metadata 2023-03-18 10:57:19 +00:00
11bc9c6c0d add metadata to asymmetrical bending 2023-03-18 10:50:02 +00:00
044a898557 mmme2045 add incomplete notes on polymers 2023-03-14 10:28:37 +00:00
ec195bbe66 mmme2044 add incomplete notes on pneumatics, bearings 2023-03-14 10:26:16 +00:00
5a807f15ac mmme2044 lecture slides on macine system deign 2023-03-14 10:24:18 +00:00
96891f53ba mmme2049 add lecture slides p006 2023-03-14 10:23:35 +00:00
5f109d2843 mmme2051 add approximate methods exercise sheet 2023-03-14 10:23:14 +00:00
0a4b93d33b add mmme2053 worked examples, exercise sheets 2023-03-14 10:22:12 +00:00
e14699c5ef notes on vibration isolation 2023-03-13 17:11:43 +00:00
3880dc3c5c notes on turbomachinery pt1 2023-03-13 14:18:28 +00:00
2fb7818e20 steady state performance 2023-03-06 22:26:39 +00:00
f04625d539 vibrations lecture --- approximate methods 2023-03-06 22:25:45 +00:00
5a788e0eed notes on digital electronics 2023-03-02 12:50:01 +00:00
414d4b1183 lecture notes, slides on gas mixtures and combustion, heat transfer 2023-02-27 10:47:52 +00:00
1bf9a50a93 add power factor 2023-02-18 20:28:06 +00:00
a2e60d3eea update control notes 2023-02-18 20:27:04 +00:00
b35404bc42 fix missing end command 2023-02-17 13:40:07 +00:00
b994350970 fix typo in ac_power.md 2023-02-17 13:27:13 +00:00
4959ea926b begin notes on ac 2023-02-17 13:24:14 +00:00
9ef91509e7 update tags for mmme2049 2023-02-16 16:14:14 +00:00
4494ba74b9 fix typo 2023-02-16 15:43:15 +00:00
aa7650c78f fix typo 2023-02-16 15:41:07 +00:00
468b4a22cd notes on strain energy 2023-02-16 15:08:05 +00:00
998a08633e notes on combustion and gas mixtures 2023-02-14 19:59:31 +00:00
d584420e0f notes on private enterprises 2023-02-08 18:33:17 +00:00
5c27d1a91c mmme2046 notes on control 2 lecture 2023-02-06 17:11:38 +00:00
81fe971662 remove flist 2023-02-06 11:39:00 +00:00
027f5dfb89 move notes out of year subfolders 2023-02-06 11:36:23 +00:00
6c0d1020a7 add inherited tas to uni folders 2023-02-06 11:30:16 +00:00
5202768589 mmme2047 lecture notes dimensional analysis 2023-02-06 2023-02-06 10:57:39 +00:00
7b2ed927b4 fix another typo lol 2023-02-05 17:10:47 +00:00
3eb6fe9d56 fix typos 2023-02-05 17:09:34 +00:00
829beab997 mmme2049 add lecture notes, notes 2023-02-05 17:06:22 +00:00
8f18918c05 mmme2046 add worked examples, lecture notes 2023-02-05 17:05:56 +00:00
6150bb4707 fix images 2023-02-05 17:03:41 +00:00
23d7364485 remove duplicate notes in wrong folder 2023-02-05 16:50:14 +00:00
1f8a5382d8 fix typos 2023-02-05 16:50:13 +00:00
2033c7524e notes on asymmetrical beam bending 2023-02-05 16:50:12 +00:00
b7ef6c914b add electrical fundamentals 2023-02-05 16:50:11 +00:00
83cd3ad585 add standard nondimensional groups in fluids 2023-01-31 21:48:07 +00:00
00d1758c35 fix typo 2023-01-31 20:59:05 +00:00
5ac0e81f5a add lecture slides 2023-01-31 20:51:46 +00:00
fb07f79fb0 add dimensional analysiss lecture slides, lecture notes 2023-01-31 20:51:17 +00:00
9904aaa68d delete duplicate typo folder 2023-01-31 20:50:34 +00:00
58476ad943 fix typo, add missing image 2023-01-31 20:50:13 +00:00
9baa4abeb7 add other files 2023-01-30 20:47:34 +00:00
ba3430236c add exercise sheets 2023-01-30 20:45:31 +00:00
d7e2c77140 add lecture notes 2023-01-30 20:44:10 +00:00
d938b19869 add lecture slide 2023-01-30 20:43:49 +00:00
cda5056661 add thermodynamic tables 2023-01-30 20:41:33 +00:00
9396acbe81 update thermodynamic tables - add 16 pages 2023-01-30 20:41:22 +00:00
4f2fff1d71 mths2007 finished 2023-01-30 20:37:47 +00:00
98f161b927 add lecture slides 2023-01-30 20:37:01 +00:00
19bb008d18 notes and example on laplace 2023-01-30 20:36:47 +00:00
199c488cb3 add images mmme2047 2023-01-30 20:34:13 +00:00
aa163ccbf1 notes on dimensional analysis 2023-01-30 20:33:35 +00:00
e4fc38feaa add how to concat pdfs 2023-01-26 15:33:15 +00:00
50721f0bcd add figure to thin cylinder 2022-11-10 16:21:21 +00:00
14f4fc0fa9 add pdfimages to .gitignore 2022-11-10 15:55:39 +00:00
1d226d9503 mmme2053 thermal stress and strain add notes, lecture notes, lecture slides, worked examples 2022-11-10 15:54:53 +00:00
1ffbca756c mmme2044 start notes on seals 2022-11-07 16:45:24 +00:00
e263656e60 mmme2046 dynamics fix title, tags 2022-11-04 12:39:44 +00:00
78946e25e4 mmme1026 eigenvalues update title 2022-11-04 12:38:47 +00:00
2c14c31e93 mths2007 add problem sheets, lecture slides and notes, formula sheet 2022-11-04 12:03:52 +00:00
187337d789 mmme2045 mmme2047 add lecture notes 2022-11-04 12:03:16 +00:00
1e42fd59b4 mmme2046 add exercise sheets, formula sheet 2022-11-04 12:02:46 +00:00
d0fd9f5ed4 mmme2053 notes on fatigue and fracture 2022-11-04 12:02:11 +00:00
44ccde2294 mmme2044 notes on shaft design 2022-11-04 11:38:10 +00:00
1b4b7faf38 mths2007 add lecture notes on 1e, 1g 2022-10-17 22:03:20 +01:00
476976a4de mmme2053 notes on w0441 2022-10-17 22:02:27 +01:00
93809b624f mmme2045 add notes and questions on block L 2022-10-17 22:01:44 +01:00
388a08aaf0 mmme2046 exercise sheet 2 2022-10-17 22:00:29 +01:00
7172f29183 mmme2047 w0341 w0442 notes 2022-10-17 22:00:06 +01:00
4cc230ceee mmme2044 w0441 notes on linkages 2022-10-17 21:57:11 +01:00
21482ff439 mmme2047 l2 w04/41 l3 w05/42 2022-10-17 11:00:53 +01:00
24634aae51 mmme2046 l3 w05/42 2022-10-17 10:49:09 +01:00
8b27c853f4 mths2007 week3 slides 2022-10-09 22:34:13 +01:00
7388bbe104 add uncommitted year 1 content 2022-10-05 12:44:49 +01:00
b4b6f8b54d mmme2045 add lecture slides 2022-10-05 12:42:54 +01:00
355fddb665 mmme2046 add lecture slides, exercise sheets 2022-10-05 12:42:17 +01:00
bcba31b8a0 mmme2047 add lecture notes 2022-10-05 12:41:37 +01:00
a455671a65 mmme2045 lecture 1 2022-10-05 10:50:10 +01:00
554caccd4b mmme2047 lecture 1 2022-10-03 12:37:27 +01:00
c453e4fcd4 add zack.jpg 2022-10-03 11:10:40 +01:00
e3fcbdf7cc mmme2046 lecture 1 2022-10-03 11:06:34 +01:00
1acef81bb7 mmme2046 lecture 1 2022-10-03 10:44:28 +01:00
70308e2285 add volume of parallelapiped 2022-05-26 22:40:01 +01:00
053a3530b5 add notes on namecheap srv records 2022-04-08 21:40:58 +01:00
a1cf6996cf take notes on machining processes i guess 2022-03-28 10:32:35 +01:00
c3a47c46b3 fix a thing kind of to do with \textit 2022-03-09 16:45:37 +00:00
21e4474341 fix a thing kind of to do with \textit 2022-03-09 16:41:22 +00:00
f875f32177 create notes on dynamics 2022-03-08 11:17:35 +00:00
506984b69c add notes on heat treatments 2022-03-08 11:17:04 +00:00
fe8a7209b3 fix typos 2022-03-08 11:15:34 +00:00
35a4e42433 add notes on extended bernoulli eqn 2022-03-08 11:07:15 +00:00
86896fdc2c fix typo 2022-03-04 18:56:17 +00:00
422cedff86 notes on vectors: corrections 2022-03-03 23:12:41 +00:00
a085632759 add uuid to frontmatter 2022-03-02 01:43:54 +00:00
6029a95698 most of the notes on feb 22nd 2022-03-02 01:36:36 +00:00
a8de6477af fix vector formatting issue 2022-03-02 01:34:34 +00:00
f6ce1dedd6 notes on moulding 2022-03-01 22:21:01 +00:00
99aaf75110 notes on diffusion, deformation processes 2022-02-28 21:51:32 +00:00
c327b62aa4 notes on casting 2022-02-21 17:26:19 +00:00
48d6ea286c manufacutring cost modelling notes 2022-02-21 16:28:28 +00:00
a5e865c29d add section angle between vectors 2022-02-20 14:40:12 +00:00
9c8de3928e fix formatting issue 2022-02-20 14:33:55 +00:00
d845161287 fix typo 2022-02-19 00:05:53 +00:00
a8305e1b38 update title 2022-02-19 00:04:12 +00:00
fb6a1797a7 vectors notes 2022-02-19 00:02:46 +00:00
620370f52b add internal link checker script 2022-02-13 22:13:02 +00:00
68996291d8 create notes page for dell xps 15 9570 2022-02-13 22:12:33 +00:00
6ace5534bf fix typo 2022-02-13 22:12:08 +00:00
42d8101a92 fix typo 2022-02-09 18:52:01 +00:00
0ffbf781ed minor fixes 2022-02-07 15:34:47 +00:00
6f1e5e6fe6 applied technology lecture at uni of sussex 2022-02-07 2022-02-07 15:29:24 +00:00
f60e983788 Add SI units for specific and molar gas constant 2021-12-28 19:49:05 +00:00
7fe78254b3 add notes on integration 2021-12-28 16:39:26 +00:00
cef225ae95 add notes on mmme 1026 differentiation 2021-12-27 19:30:41 +00:00
b05441973e attempt to better organise thermodynamics page 2021-12-26 22:58:19 +00:00
c075bea216 fix internal link 2021-12-26 22:34:57 +00:00
02a98be18e finish notes on semester 1 thermodynamics 2021-12-26 22:00:00 +00:00
2a32037e1c wrap up unimportant first two lectures in details tags 2021-12-23 22:07:27 +00:00
e983d37e81 use tableWrapper class, fix typo 2021-12-23 21:49:38 +00:00
e680e2d3c1 mmme/1048 add notes on lectures for 1st dec 2021-12-23 21:00:18 +00:00
98ee2b861a add notes on mmme/1048 thermodynamics lecture 1 2021-12-23 17:28:35 +00:00
a31107dced final renaming issues 2021-12-23 15:48:11 +00:00
6bc5bf97b1 add mmme1048 back in lol 2021-12-23 15:45:05 +00:00
e8c154d43b less big rename 2021-12-23 15:41:57 +00:00
51a5b12813 big rename 2021-12-23 15:41:07 +00:00
f8d7ee4668 add images 2021-12-22 15:45:09 +00:00
3dbf3d6fae Add notes on diffusion 2021-12-22 15:43:18 +00:00
ab786a21b8 Add notes on metals 2021-12-22 15:43:08 +00:00
e9bdfce660 Fix typo 2021-12-22 15:42:21 +00:00
d1b06d44de mmme1029 Notes on the crystallisation of materials 2021-12-21 22:54:38 +00:00
60f81709c2 add notes on thermal expansion, thermal conductivity 2021-12-21 20:25:57 +00:00
c7122f797d Fix typo 2021-12-21 15:33:45 +00:00
e7bac52743 add notes on buoyancy 2021-12-21 15:32:59 +00:00
fb5c664b33 fix details 2021-12-02 16:37:44 +00:00
091cad8470 fix header 2021-12-02 16:36:57 +00:00
8af6494886 fix header levels 2021-12-02 16:36:15 +00:00
ef91ba0126 more consistent use of details/summary 2021-12-02 16:33:31 +00:00
dc1cd6f8ff Fix details/summary tags 2021-12-02 16:30:22 +00:00
42bc5f626d Add notes on calculus 1a,1b, 2a 2021-12-02 16:10:52 +00:00
a60a373628 move images to correct folder 2021-12-02 10:35:18 +00:00
ed47d55e8b separate complex numbers and matrices 2021-11-17 14:54:49 +00:00
234a1f3e23 Fix some mistakes 2021-11-17 14:47:47 +00:00
5538c471ba minor fix 2021-11-17 14:36:06 +00:00
373cb80111 split fluid dynamics into separate file 2021-11-17 14:34:49 +00:00
055eea2cd9 Add some fluid dynamics 2021-11-17 14:31:06 +00:00
91f5566d49 Add notes on composites 2021-11-12 19:52:04 +00:00
e6b0253316 Add images for material toughness 2021-11-08 14:16:43 +00:00
ce582bbee3 Material toughness 2021-11-08 14:16:06 +00:00
bb28d8e582 Add matrices determinants, inverses, special matrices 2021-11-02 16:46:30 +00:00
6bad6269ee Update tags 2021-11-01 15:55:34 +00:00
467a4a8584 mmme1029 polymers 2021-11-01 15:51:24 +00:00
8fba174386 fix typo 2021-11-01 10:54:30 +00:00
4ca6b42f30 images for mmme1028 l2.1 2021-11-01 10:52:22 +00:00
1e625bbefe mmme1028 leture l2.1 2021-11-01 10:51:46 +00:00
7fe2281f5b Add missing images 2021-10-21 18:19:52 +01:00
8a92779a67 Update headers 2021-10-21 18:13:15 +01:00
8a059f5a8e Finish writing up notes on matrices lecture 1 2021-10-20 12:47:29 +01:00
ee73b7cf2f Lecture 3 - submerged surfaces 2021-10-20 11:27:23 +01:00
0040607bb1 Partially write up notes on matrices lecture 1 2021-10-19 20:24:53 +01:00
417a2626ce typo 2021-10-19 20:14:37 +01:00
46a18380f9 Add images -- not sure which are needed lol 2021-10-19 20:13:36 +01:00
655ddc6cfc Watch lecture 1.5, 1.6 2021-10-18 15:49:23 +01:00
f7329c8108 Rename mmme1028_statistics_and_dynamics to mmme1028_statics 2021-10-18 09:07:01 +01:00
1321fdadc8 maybe fix summary tag usage 2021-10-14 15:33:38 +01:00
32199c7b2c Use details/summary tag for examples 2021-10-14 15:31:31 +01:00
0deb97de3b Formatting 2021-10-14 15:17:27 +01:00
b19ef43cd8 Add examples for de moivre and euler 2021-10-14 13:06:56 +01:00
9be52cc368 Complete lecture 2 on mmme1048 fluid mechanics 2021-10-13 20:22:29 +01:00
e171861da8 Fix date of lecture 2 2021-10-12 12:35:34 +01:00
841db6edbd Notes on mmme1026 lecture 2 2021-10-12 12:30:28 +01:00
3517bbe751 Organisation 2021-10-11 17:52:10 +01:00
80ec507c9b Complete MMME1029 Lecture 2 2021-10-11 17:49:57 +01:00
d0a81a6999 Fix typo 2021-10-10 00:06:23 +01:00
ceb8b4c583 mafs mode 2021-10-07 17:32:15 +01:00
383b1558e2 Clarify wording in mechanical/mmme1048_fluid_mechanics 2021-10-07 14:57:38 +01:00
8ce459b919 Add mmme10248 tag 2021-10-06 11:37:48 +01:00
465b113839 Add notes for mmme1048 fluid mechanics 2021-10-06 11:26:29 +01:00
cef6909f68 Create .gitignore 2021-10-04 12:41:00 +01:00
9da243f8eb Fix equation in mmme1029 2021-10-04 12:39:19 +01:00
7f6c583509 Create notes on mmme1029 lecture 1 2021-10-04 12:33:49 +01:00
7cb6475616 Fix up images 2021-10-04 10:51:26 +01:00
3547ef7e0c Fix title for mmme1028 2021-10-04 10:47:15 +01:00
3cfce68f19 Minor changes 2021-10-04 10:44:38 +01:00
c0d6190132 Create notes on mmme1028 lectures L1.1, L1.2 2021-10-04 10:43:27 +01:00
01188813f8 Add LICENSE 2021-09-01 18:24:00 +01:00
3953b55ce6 Remove Making a web api 2021-09-01 16:42:01 +01:00
c6d3c97d86 docker nginx: Add syntax highlighting 2021-09-01 16:41:41 +01:00
1155 changed files with 154822 additions and 43 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*.md.pdf
pdfimages

427
LICENSE Normal file
View File

@@ -0,0 +1,427 @@
Attribution-ShareAlike 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution-ShareAlike 4.0 International Public
License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
such rights in consideration of benefits the Licensor receives from
making the Licensed Material available under these terms and
conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the “Licensor.” The text of the Creative Commons public
licenses is dedicated to the public domain under the CC0 Public Domain
Dedication. Except for the limited purpose of indicating that material
is shared under a Creative Commons public license or as otherwise
permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.
Creative Commons may be contacted at creativecommons.org.

11
blog/first_post.md Executable file
View File

@@ -0,0 +1,11 @@
---
author: Akbar Rahman
pub_date: Fri, 31 Jul 2020 19:52:52 +0100
title: first post
tags: []
uuid: fd338dc9-ae5f-48f4-9fc6-e02e88ab4ce5
---
# first post
this is my first post

182
blog/g27_pedals.md Executable file
View File

@@ -0,0 +1,182 @@
---
author: Akbar Rahman
pub_date: Tue, 04 Aug 2020 15:20:13 +0100
title: Repurposing Racing Wheel Pedals
tags: [ g27, sim_racing ]
uuid: 0f09200e-fd50-451b-aae1-1117a8a704db
---
<h1>Repurposing Racing Wheel Pedals</h1>
<p>I have a Logitech G27 I don't use much. I wondered if I could use it for anything else. I could. </p>
<h2> The Pinout of the Connector </h2>
<p>The first thing I had to do was figure out what each pin did on the DE-9 connector, and which
ones I should care about.
This was done easily after I took off the top plastic casing thing by poking the three 100k Ohm
potentiometers and the connector in the right places at the right times:
</p>
<style> #pinout_table tr td:first-child { text-align: right } </style>
<img src="./images/repurposing-racing-wheel-pedals-g27-pinout.svg" class="centered" style="width: 10em;">
<table id="pinout_table">
<tr> <th>pin</th> <th>function</th></tr>
<tr> <td>1,4</td> <td>ground</td></tr>
<tr> <td>6</td> <td>clutch pedal</td></tr>
<tr> <td>7</td> <td>brake pedal</td></tr>
<tr> <td>8</td> <td>accelerator pedal</td></tr>
<tr> <td>9</td> <td>voltage in</td></tr>
</table>
<h2> Reading the Values of the Pots </h2>
I'm using an Arduino to read the pots and then do something with the values.
I very dirtily wired pin 4 on the pedals to GND on a Arduino Uno, pin 9 to 5V, and
pins 6,7,8 to A0, A1, and A2.
I used a basic sketch to check that everything is good:
<details>
<summary> Show/hide test_sketch.ino </summary>
<pre><code> void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A2));
delay(20);
}
</code></pre>
</details>
I noticed that the minimum and maximum values read by the Uno were quite far off 0 and 1024, like
they should be, and voltage was being lost on the way to and from the potentiometers.
Since the pedals have to be calibrated every time you plug them in, I assume this is normal and
spat out this code:
<details>
<summary> Show/hide sketch_aug02a.ino </summary>
<pre><code>// sensor pins
int sa = A0;
int sb = A1;
int sc = A2;
// minimum values detected by the sensors
int mina = 1025;
int minb = 1025;
int minc = 1025;
// maximum values detected by the sensors
int maxa = 512;
int maxb = 512;
int maxc = 512;
// raw values of the sensors
int rva, rvb, rvc;
// calculated values of the sensors (between 0 and 1, this is the value sent to computer)
float cva, cvb, cvc;
void setup() {
Serial.begin(9600);
}
void loop() {
rva = analogRead(sa);
rvb = analogRead(sb);
rvc = analogRead(sc);
if (rva &lt; mina) mina = rva;
if (rvb &lt; minb) minb = rvb;
if (rvc &lt; minc) minc = rvc;
if (rva &gt; maxa) maxa = rva;
if (rvb &gt; maxb) maxb = rvb;
if (rvc &gt; maxc) maxc = rvc;
cva = (float)(rva-mina)/(float)(maxa-mina);
cvb = (float)(rvb-minb)/(float)(maxb-minb);
cvc = (float)(rvc-minc)/(float)(maxc-minc);
Serial.print('[');
Serial.print(cva); Serial.print(',');
Serial.print(cvb); Serial.print(',');
Serial.print(cvc);
Serial.print(']');
Serial.println();
delay(20);
}
</code></pre>
</details>
<h2> Actually Making the Numbers Do Something </h2>
This is where you can make the pedals do fun things.
I reworked another piece of code I wrote to do a similar thing to quickly create a script that
reads the values sent by the Arduino, and then simulate pressing a key combination.
The only thing I've done with this is set push-to-talk to ctrl-shift-alt-1.
I don't know what else I could use this for, maybe temporarily muting particular things, like music.
<details>
<summary> Show/hide pedalboard.py </summary>
<pre><code> #!/usr/bin/env python3
import sys
import json
import time
from enum import Enum
import keyboard
import serial
class KeyState(Enum):
UP = 0
DOWN = 1
STATES = [KeyState.UP] * 3
THRESHOLD = 0.8
MACROS = ['ctrl+shift+alt+1', 'ctrl+shift+alt+2', 'ctrl+shift+alt+3']
def get_args():
""" Get command line arguments """
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('device')
return parser.parse_args()
def main(args):
""" Entry point for script """
while True:
try:
kb = serial.Serial(port=args.device, baudrate=9600)
while True:
handle(json.loads(kb.readline()))
except serial.serialutil.SerialException as e:
print(e)
print("Failed to connect to device... trying again")
time.sleep(1)
except Exception as e:
print(e)
return 0
def handle(data):
global STATES
states = [KeyState.DOWN if value &gt; THRESHOLD else KeyState.UP for value in data]
r = [handle_state_change(i, states[i]) if states[i] != STATES[i] else None for i in range(len(STATES))]
STATES = states
return r
def handle_state_change(key, newstate):
print(f"{key} {newstate}")
return keyboard.press(MACROS[key]) if newstate == KeyState.DOWN else keyboard.release(MACROS[key])
if __name__ == '__main__':
try:
sys.exit(main(get_args()))
except KeyboardInterrupt:
sys.exit(0)
</code></pre>
</details>

View File

@@ -0,0 +1,226 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="68.148842"
height="34.400002"
viewBox="-138.624 -137.291 68.14884 34.400003"
id="Layer_1"
xml:space="preserve"
sodipodi:docname="repurposing-racing-wheel-pedals-g27-pinout.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><title
id="title1416">DE-9 Connector with numbers</title><metadata
id="metadata1308"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>DE-9 Connector with numbers</dc:title><dc:date>2020-08-02</dc:date><dc:creator><cc:Agent><dc:title>alvierahman90</dc:title></cc:Agent></dc:creator><cc:license
rdf:resource="" /><dc:contributor><cc:Agent><dc:title>Original drawing from Mobius (maybe): https://commons.wikimedia.org/wiki/File:DSubminiatures.svg</dc:title></cc:Agent></dc:contributor></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1722"
inkscape:window-height="1060"
id="namedview1306"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="10.44492"
inkscape:cx="27.994898"
inkscape:cy="11.731109"
inkscape:window-x="1056"
inkscape:window-y="1094"
inkscape:window-maximized="0"
inkscape:current-layer="Layer_1" /><defs
id="defs2584">
</defs>
<g
id="g1336"
transform="rotate(180,-104.54958,-120.091)"
style="stroke:#454545;stroke-opacity:1"><g
transform="translate(-193.19312,-267.013)"
id="g2241"
style="stroke:#454545;stroke-opacity:1">
<circle
cx="66.588997"
cy="141.351"
r="2.2409999"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="circle2243" />
<circle
cx="77.617996"
cy="141.351"
r="2.2409999"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="circle2245" />
<circle
cx="88.643997"
cy="141.351"
r="2.2379999"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="circle2247" />
<path
d="m 99.668,139.11 c 1.238,0 2.242,1.004 2.242,2.241 0,1.237 -1.004,2.24 -2.242,2.24 -1.233,0 -2.237,-1.003 -2.237,-2.24 0,-1.237 1.004,-2.241 2.237,-2.241 z"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="path2249"
inkscape:connector-curvature="0" />
<circle
cx="110.697"
cy="141.351"
r="2.2409999"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="circle2251" />
<circle
cx="72.102997"
cy="152.491"
r="2.2390001"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="circle2253" />
<circle
cx="83.130997"
cy="152.491"
r="2.2390001"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="circle2255" />
<path
d="m 94.156,150.252 c 1.237,0 2.238,1.003 2.238,2.237 0,1.237 -1.001,2.241 -2.238,2.241 -1.238,0 -2.242,-1.004 -2.242,-2.241 0,-1.234 1.004,-2.237 2.242,-2.237 z"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="path2257"
inkscape:connector-curvature="0" />
<circle
cx="105.185"
cy="152.491"
r="2.2390001"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="circle2259" />
</g><path
d="m -129.54912,-136.791 c -5.609,0 -9.4,4.518 -8.425,10.042 l 2.354,13.309 c 0.976,5.525 6.366,10.049 11.975,10.049 h 38.191005 c 5.608,0 10.996,-4.523 11.975,-10.049 l 2.354,-13.309 c 0.975,-5.524 -2.813,-10.042 -8.425,-10.042 z"
style="fill:none;stroke:#454545;stroke-opacity:1"
id="path2261"
inkscape:connector-curvature="0" /></g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-123.37334"
y="-129.7538"
id="text1340"><tspan
sodipodi:role="line"
id="tspan1338"
x="-123.37334"
y="-129.7538"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-112.29854"
y="-129.7538"
id="text1340-3"><tspan
sodipodi:role="line"
id="tspan1338-7"
x="-112.29854"
y="-129.7538"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-101.2884"
y="-129.7538"
id="text1340-9"><tspan
sodipodi:role="line"
id="tspan1338-8"
x="-101.2884"
y="-129.7538"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">3</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-90.565475"
y="-129.7538"
id="text1340-6"><tspan
sodipodi:role="line"
id="tspan1338-70"
x="-90.565475"
y="-129.7538"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">4</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-129.24457"
y="-105.27687"
id="text1340-4"><tspan
sodipodi:role="line"
id="tspan1338-84"
x="-129.24457"
y="-105.27687"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">5</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-117.9472"
y="-105.27687"
id="text1340-8"><tspan
sodipodi:role="line"
id="tspan1338-1"
x="-117.9472"
y="-105.27687"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">6</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-106.88921"
y="-105.27687"
id="text1340-68"><tspan
sodipodi:role="line"
id="tspan1338-5"
x="-106.88921"
y="-105.27687"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">7</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-94.538704"
y="-105.27687"
id="text1340-2"><tspan
sodipodi:role="line"
id="tspan1338-19"
x="-94.538704"
y="-105.27687"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">8</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.98580647px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.17464516;stroke-opacity:1;"
x="-83.91153"
y="-105.27687"
id="text1340-96"><tspan
sodipodi:role="line"
id="tspan1338-0"
x="-83.91153"
y="-105.27687"
style="stroke-width:0.17464516;stroke:none;stroke-opacity:1;fill:#454545;fill-opacity:1;">9</tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

63
blog/lastfm_bookmarklets.md Executable file
View File

@@ -0,0 +1,63 @@
---
author: Akbar Rahman
pub_date: Mon, 18 Sep 2023 16:25:48 +0100
title: last.fm bookmarklets
tags: [ last.fm, scripts ]
uuid: e54ebf58-4033-4dae-81db-91db344f1311
---
# last.fm bookmarklets
last.fm doesn't let you see how many scrobbled you've made in one day particularly easily.
Here is a bookmarklet to solve that.
<label for="days"> Number of days to view: </label>
<input type="number" value="1" id="days" placeholder="Days"/><br><br>
<label for="offset"> Offset (e.g. 0 to include today, 7 to look at last week): </label>
<input type="number" value="0" id="offset" placeholder="Offset (Days)" /><br><br>
<label for="username"> last.fm username </label>
<input type="text" value="" id="username" placeholder="Username" /><br><br>
<input type="button" id="button" value="Generate bookmarklet"><br>
<p><a style="display: none" href="" id="scriptLink">Bookmark this link</a></p>
When you press generate bookmarklet, the values `OFFSET`, `DAYS`, `USERNAME` will be
subsituted and put into the link above.
It's always best to inspect bookmarklets though.
Inspect the page to view the script used to generate the bookmarklet.
<textarea cols="109" rows="15" readonly id="scriptText">
javascript: (() => {
const MILLESECONDS_PER_DAY = 1000 * 24 * 60 * 60;
const OFFSET;
const DAYS;
const USERNAME;
const currentDate = new Date();
const to = new Date(currentDate - (OFFSET * MILLESECONDS_PER_DAY));
const from = new Date(to - ((DAYS-1) * MILLESECONDS_PER_DAY));
const toDate = to.getFullYear() + "-" + (to.getMonth()+1) + "-" + to.getDate();
const fromDate = from.getFullYear() + "-" + (from.getMonth()+1) + "-" + from.getDate();
document.location = "https://www.last.fm/user/" + USERNAME + "/library?from=" + fromDate + "&to=" + toDate;
})();
</textarea>
<script>
document.getElementById("button").addEventListener("click", () => {
scriptText = document.getElementById("scriptText").value;
offset = document.getElementById("offset").value;
days = document.getElementById("days").value;
username = document.getElementById("username").value;
newscript = scriptText.replace(
"OFFSET", "OFFSET = " + offset
).replace(
"DAYS", "DAYS = " + days
).replace(
"USERNAME", "USERNAME = '" + username + "'"
);
document.getElementById("scriptLink").href = newscript;
document.getElementById("scriptLink").style = "";
});
</script>

13
blog/readme.md Normal file
View File

@@ -0,0 +1,13 @@
---
title: alv's blog
author: Akbar Rahman
pub_date: Fri, 31 Jul 2020 19:50:51 +0100
blog: true
tags: [ alvs_blog, blog ]
uuid: 2d03893a-eb9b-4923-8024-a223ecbe72f7
---
# alv's blog
this is my blog.
i promise i will try to keep things posted here interesting.

View File

@@ -2,7 +2,11 @@
author: Alvie Rahman
date: \today
title: Bash
tags: [ linux, shell, programming ]
tags:
- linux
- shell
- programming
uuid: a436d67a-1f07-45fb-9241-5dbaa69b4667
---
# `set` builtin[^gnuset]

View File

@@ -0,0 +1,57 @@
---
author: Akbar Rahman
date: \today
title: "Cadence License Manager Install - `java.lang.IllegalArgumentException: :locationICompSelected: Null parameter - InstallComponent ID`"
tags: [ cadence, license_manager, flexlm, java, errors ]
uuid: a5f46736-1ab8-4da1-8737-95de51c95d50
---
# Error
```
[root@host Downloads]# iscape/bin/iscape.sh -batch majorAction=InstallFromArchive archiveDirectory=$(realpath LCU04.30.000_lnx86.Base) installDirectory=$(realpath target)
Initializing InstallScape using JVM at /home/alvi/Downloads/iscape.04.23-s012/runtime/LNX86/bin/java. This might take some time...
WARNING: The DISPLAY environment variable has not been set.
InstallScape might not initialize.
InstallScape Installer (Batch Mode) - 04.23.s12
:locationICompSelected: Null parameter - InstallComponent ID
java.lang.IllegalArgumentException: :locationICompSelected: Null parameter - InstallComponent ID
at com.khanpur.installerng.ArchiveLocationManager.locationICompSelected(ArchiveLocationManager.java:143)
at com.khanpur.installerng.Installer.archiveLocationICompSelected(Installer.java:1156)
at com.khanpur.installer.gui.batch.BatchInstallfromarchive.execute(BatchInstallfromarchive.java:86)
at com.khanpur.installer.gui.batch.BatchView.initialize(BatchView.java:329)
at com.khanpur.installer.gui.batch.BatchView.<init>(BatchView.java:90)
at com.khanpur.installer.gui.InstallerUINoSplash.showBatch(InstallerUINoSplash.java:325)
at com.khanpur.installer.gui.BatchCommand.execute(BatchCommand.java:78)
at com.khanpur.util.TransactionCommand.execute(TransactionCommand.java:74)
at com.khanpur.util.Commandline.runCommands(Commandline.java:223)
at com.khanpur.installer.gui.InstallerUINoSplash.processCommandLine(InstallerUINoSplash.java:340)
at com.khanpur.installer.gui.InstallerUINoSplash.main(InstallerUINoSplash.java:372)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.khanpur.installer.gui.InstallerUI.main(InstallerUI.java:123)
Failed with InstallScape JVM.
Now loading System JVM...
iscape/bin/iscape.sh: line 222: java: command not found
Error:
/usr/bin/which: no java in (/usr/local/bin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)
Could not use JVM packaged with Installcape. The Java in your path did not work or could not find Java in your path. Ensure that Java 1.6 or later is in your PATH environment variable and restart InstallScape.
```
# Cause
Using the wrong filepath.
The Cadence archives have subfolders to split the software between multiple CDs (a relic of the
past perhaps).
The actual folder to use is the CDs.
# Solution
Use the folder that contains the `.sdx` files (in my case, add `/CDROM1` onto end of
`archiveDirectory`).

View File

@@ -0,0 +1,81 @@
---
author: Akbar Rahman
date: \today
title: Eventbridge Rule (Cloudwatch Rule) Does Not Invoke Lambda When Configured Through Ansible
tags:
- ansible
- aws
- aws_eventbridge
- aws_lambda
- cloudwatch
- eventbridge
- lambda
- permissions
uuid: df3ca083-b6ae-4e35-bb1c-8b3978117c57
---
# Eventbridge Rule (formerly Cloudwatch Rule) Does Not Invoke Lambda When Configured Through Ansible
## Problem
After creating an Eventbridge rule to run a Lambda function with the Ansible module
[`amazon.aws.cloudwatchevent_rule`](https://docs.ansible.com/ansible/latest/collections/amazon/aws/cloudwatchevent_rule_module.html),
the rule does not run Lambda function when it should:
```yaml
- name: "Create lambda function"
register: create_lambda
amazon.aws.lambda:
region: "{{ aws_ec2_region }}"
description: "My Lambda function"
name: "{{ lambda_name }}"
role: "{{ iam_role.iam_role.arn }}"
state: "present"
timeout: 120
vpc_security_group_ids: "{{ sec_group.group_id }}"
vpc_subnet_ids: "{{ subnet_ids }}"
image_uri: "{{ ecr.repository.repositoryUri }}:latest"
- name: "Schedule my Lambda function"
register: lambda_schedule_rule
amazon.aws.cloudwatchevent_rule:
name: "a_unique_rule_name"
region: "{{ aws_ec2_region }}"
schedule_expression: "rate(1 minute)"
state: "present"
targets:
- arn: "{{ create_lambda.configuration.function_arn }}"
id: "a_unique_id"
input: "{{ eventbridge_rule_lambda_event_input }}"
```
Even though creating a seemingly identical setup through the AWS console works fine.
## Cause
The Eventbridge rule is not allowed to invoke this Lambda, as it is not in the Lambda's policy.
## Solution
Use the
[`amazon.aws.lambda_policy`](https://docs.ansible.com/ansible/latest/collections/amazon/aws/lambda_policy_module.html)
module to allow the Eventbridge rule to invoke the Lambda.
Note that, if specifying the Lambda function name to `function_name` (as opposed to the ARN of the
Lambda function), you must specify `version` or otherwise the Lambda function still won't be run!
```yaml
- name: "Allow Eventbridge (Cloudwatch) Rules to invoke lambda"
amazon.aws.lambda_policy:
action: "lambda:InvokeFunction"
function_name: "{{ lambda_name }}"
state: "present"
statement_id: "a_unique_statement_id"
region: "{{ aws_ec2_region }}"
principal: "events.amazonaws.com"
source_arn: "{{ lambda_schedule_rule.rule.arn }}"
version: "{{ create_lambda.configuration.version }}"
```
Solution found thanks to @david-kretch's answer to the same question at
<https://stackoverflow.com/questions/45282939/cloudwatch-event-rule-creation-via-ansible-succeeds-but-not-invoked>.

View File

@@ -2,7 +2,11 @@
author: Alvie Rahman
date: \today
title: Setting Up Nginx and Let's Encrypt in Docker
tags: [ linux, docker, programming ]
tags:
- linux
- docker
- programming
uuid: 2abad576-9921-463b-928d-2381f91488e0
---
# Setting Up Nginx and Let's Encrypt in Docker
@@ -22,7 +26,7 @@ Notice how `certbot`'s `entrypoint` field is commented out?
Yeah, that's one of the things that tripped me up.
When the autorenew entrypoint is specified, you can't perform one of the future steps.
```
```yaml
version: '3'
services:

12
computery_stuff/flask.md Executable file
View File

@@ -0,0 +1,12 @@
---
author: Akbar Rahman
date: \today
title: Flask
tags: [ python, flask, programming, docker ]
uuid: e513ed96-cb19-4d4c-9894-e337c54659e5
---
# Examples
- [alv.cx-glass](https://git.alv.cx/alvierahman90/alv.cx-glass) --- a pretty minimal example, probably not very production ready but has example of how to use in Docker
- <https://flask.palletsprojects.com/> --- official documentation for Flask

View File

@@ -2,7 +2,11 @@
author: Alvie Rahman
date: \today
title: Git
tags: [ linux, programming, git ]
tags:
- linux
- programming
- git
uuid: 8eb93ba5-72e8-4c25-b1f5-02e25408a14d
---

View File

@@ -2,7 +2,11 @@
author: Alvie Rahman
date: \today
title: GNOME is a Whole Mess
tags: [ gnome, linux, troubleshooting ]
tags:
- gnome
- linux
- troubleshooting
uuid: 635199f2-f2c6-4f94-840f-8f729bde0c13
---
Gnome is, like, a whole mess. These are the weird issues I had to solve.

View File

@@ -2,7 +2,10 @@
author: Alvie Rahman
date: \today
title: Go (golang)
tags: [ golang, programming ]
tags:
- golang
- programming
uuid: 70d24c2e-25f6-4a46-9756-659d13b5149f
---
# Getting Up to Speed With Go
@@ -10,22 +13,13 @@ tags: [ golang, programming ]
Probably the most useful resoure I found was the [Tour of Go](https://tour.golang.org/).
It's easy to understand and teaches you all you need to know.
# Making a web api
> We need to memorize the `Handler` interface.
>
> type Handler interface {
> ServerHTTP(ResponseWriter, *Request)
> }
# `godoc` [^golang-godoc]
> Godoc parses Go source code - including comments - and produces documentation as HTML or plain
> text.
> The end result is documentation tightly coupled with the code it documents.
> For example, through godoc's web interface [which is at <http://localhost:6060> by default] you can
> navigate from a function's documentation to its implementation with one click.
> For example, through godoc's web interface [which is at <http://localhost:6060> by default] you
> can navigate from a function's documentation to its implementation with one click.
## Installing godoc // `command not found: godoc`

17
computery_stuff/jetson_nano.md Executable file
View File

@@ -0,0 +1,17 @@
---
author: Akbar Rahman
date: \today
title: Jetson Nano
tags: [ nvidia, jetson, jetson_nano, droidcam ]
uuid: f312451a-2cd4-468a-9eef-ca9859c7cd1e
---
# installing Droidcam
figured out with help from <https://hizzely.hashnode.dev/instalasi-droidcam-cli-di-jetson-nano> :pray:
0. build and install libjpeg-turbo version 2.1.2 from github (cmake, make, make install)
0. build droidcam (2.1.3 confirmed working) from source (make) and install (./install-client) (may need to set `PKG_CONFIG_PATH` environment varible to whatever libjpeg turbo installed at (for me, `/opt/libjpeg-turbo/lib64/pkgconfig`))
0. install v4l2loopback-dkms with apt
0. run droidcam (you may need to set `LD_LIBRARY_PATH` environment variable to wherever libjpeg-turbo installed to (for me, `/opt/libjpeg-turbo/lib64`))

View File

@@ -2,7 +2,10 @@
author: Alvie Rahman
date: \today
title: libvirt
tags: [ linux, virtualisation ]
tags:
- linux
- virtualisation
uuid: 62c2f458-f701-4075-8e12-d9b9a59efd1f
---
# issues

66
computery_stuff/linux.md Executable file
View File

@@ -0,0 +1,66 @@
---
author: Alvie Rahman
date: \today
title: Linux
tags:
- linux
uuid: 8ef11516-4afd-4f80-abb8-bdce045e8b65
---
# user stuff
## add user to group
```bash
usermod -a -G group user
```
## change primary user group
```bash
usermod -g group user
```
# help i think my device shut down after deleting the current kernel and before installing the second (no entries in systemd-boot/grub/<bootloader>)
0. boot into a live usb of current disto
1. mount the root partition to `/mnt` and the boot partition to the appropriate folder (check
fstab which should be in `/mnt/etc/fstab`, if it says `/efi`, mount it to `/mnt/efi`)
2. chroot into the mounted filesystem:
on arch based systems you can simply run:
```
arch-chroot /mnt
```
on non arch based systems[^1]:
```
mount -t proc /proc /mnt/proc/
mount -t sysfs /sys /mnt/ys/
mount --rbind /dev /mnt/dev/
# only if using uefi
mount --rbind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars/
# for internet access
cp /etc/resolv.conf /mnt/etc/resolv.conf
chroot /mnt /bin/bash
```
3. the system can now be force updated/kernel images can be generated
on arch based systems[^2]:
```
# reinstall all current packages
pacman -Qqen > /root/pkgs.txt # list all installed packages
pacman -S $(< /root/pkgs.txt) # reinstall all installed packages
rm /root/pkgs.txt # clean up
# reinstall dependencies (if there are issues)
pacman -Qqdn > /root/deps.txt # list all installed dependencies
pacman -S $(< /root/deps.txt) # reinstall all installed dependencies
rm /root/deps.txt # clean up
```
[^1]: https://wiki.archlinux.org/title/Chroot [wayback machine](https://web.archive.org/web/20240121115548/https://wiki.archlinux.org/title/Chroot)
[^2]: https://bbs.archlinux.org/viewtopic.php?id=193174 [wayback machine](https://web.archive.org/web/20240129153400/https://bbs.archlinux.org/viewtopic.php?id=193174)

30
computery_stuff/namecheap.md Executable file
View File

@@ -0,0 +1,30 @@
---
author: Akbar Rahman
date: \today
title: Namecheap DNS
tags: []
uuid: d4d9fa2b-3d4c-44f7-a44d-12b0410be633
---
# SRV Records not Showing up on DNS Servers
> There is a bug on Namecheap's DNS configuration interface.
> When defining a SRV Record you must write the subdomain in the protocol box aswell.
> After you save that entry, a visual bug kicks in and the protocol box now only shows the protocol
> itself, but in the backend it's saved as protocol+subdomain, as it should be.
>
> ~ [exore13](https://www.spigotmc.org/threads/solved-multiple-servers-namecheap-srv-record-config.517697/)
So say your SRV record looks something like this:
```
_minecraft _tcp 0 5 25566 peen.mc.alv.cx.
```
You'll have to enter this instead:
```
_minecraft _tcp.peen.mc 0 5 25566 peen.mc.alv.cx.
```

19
computery_stuff/pdfs.md Executable file
View File

@@ -0,0 +1,19 @@
---
author: Akbar Rahman
date: \today
title: PDFs
tags: [ pdf, concatenate ]
uuid: a43eac87-cb19-4c58-a285-cff04c494847
---
# Concatenate PDFs from the Command Line
```
qpdf t1.pdf --pages t1.pdf 1-z t2.pdf 1-z t3.pdf 1-z -- t.pdf
```
```
pdftk t1.pdf t2.pdf t3.pdf cat output t.pdf
```
Original answer by pts [here](https://superuser.com/a/458188)

View File

@@ -2,7 +2,9 @@
author: Alvie Rahman
date: \today
title: Postgres
tags: [ programming ]
tags:
- programming
uuid: 7e44b054-4b6e-4f8c-b9af-9d4c4bf77878
---
\tableofcontents

View File

@@ -2,7 +2,14 @@
author: Alvie Rahman
date: \today
title: Pulseaudio
tags: [ pulseaudio, linux, audio, mixing, microphone, sink ]
tags:
- pulseaudio
- linux
- audio
- mixing
- microphone
- sink
uuid: 4e251354-9afb-49fd-abd9-fedc9b280a25
---
# Collect and Mix Sound Input From Different Sources {#paMixer}
@@ -41,7 +48,7 @@ From <https://www.pclinuxos.com/forum/index.php/topic,119695.msg1159936.html#msg
This will unload _all_ loopback and null-sink modules.
### Destroy Specific Modules {#destsroyMixerSpecific}
### Destroy Specific Modules {#destroyMixerSpecific}
>
> pactl unload-module <module number>

View File

@@ -2,7 +2,12 @@
author: Alvie Rahman
date: \today
title: Python
tags: [ docker, python, programming, io ]
tags:
- docker
- python
- programming
- io
uuid: cd5c50f9-66f4-4a3b-b89a-04a20ecd642b
---
# Issues

View File

@@ -0,0 +1,14 @@
---
author: Akbar Rahman
date: \today
title: University of Nottingham
tags: [ uni ]
uuid: d1b03938-c5b4-48ad-a258-78f96880aa4b
---
### Trying to log into Microsoft 365 sends me to a different organisation's login page
Try one of these links:
- <https://pls.cx/uon_email> (a redirect to the link below)
- <https://outlook.office.com/owa/nottingham.ac.uk>

25
computery_stuff/xps_15_9570.md Executable file
View File

@@ -0,0 +1,25 @@
---
author: Alvie Rahman
date: \today
title: Dell XPS 15 (9570)
tags:
- dell
- xps
- xps_15
- windows
- drivers
uuid: 489c3145-b3b8-43e0-b51c-c788977e2907
---
# Installing Windows: A media driver your computer needs is missing.
> A media driver your computer needs is missing.
> This could be a DVD, USB, or Hard disk driver.
> If you have a CD, DVD, or USD flash drive with the driver on it, please insert it now.
>
> Note: If the installation media for Windows is in the DVD drive or on a USB you can safely remove
> it for this step.
A very misleading error indeed... turns out the issue may be that you need to use a dedicated
[windows image flasher](https://github.com/WoeUSB/WoeUSB)...

View File

@@ -6,4 +6,6 @@ cd `dirname $0`
git pull
cd ..
rm -rf notes.alv.cx/*
notes2web.py -o notes.alv.cx notes
cd /root/gronk
git pull
docker compose up --build

16
internal_link_checker.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
# used to alert me if i've written a bad internal link or broken one by changing a header
files="$(find $1 -name '*.html' -type f)"
for filename in $files
do
links="$(grep -oP '<a.*?>' -h $filename | grep -oP '(?<=href="\#).*?(?=")')"
ids="$(grep -oP '(?<=id=").*?(?=")' -h $filename)"
for link in $links
do
[[ "$ids" == *"$link"* ]] \
|| echo Found broken internal link in $filename: $link
done
done

View File

@@ -1,20 +0,0 @@
---
author: Alvie Rahman
date: \today
title: Linux
tags: [ linux ]
---
# user stuff
## add user to group
```bash
usermod -a -G group user
```
## change primary user group
```bash
usermod -g group user
```

10
readme.md Normal file
View File

@@ -0,0 +1,10 @@
---
title: alv's notes
base_url: https://notes.alv.cx
---
# alv's notes
These are my personal notes. Correctness is not guaranteed.
Best viewed at [notes.alv.cx](https://notes.alv.cx).

12
styles.css Normal file
View File

@@ -0,0 +1,12 @@
@import url("https://styles.alv.cx/fonts/comic-mono-font.css");
@import url("https://styles.alv.cx/modules/dotgrid.css");
@import url("https://styles.alv.cx/modules/alwaysdark.css");
:root {
--dotgrid-size: 15em;
--dotgrid-dot-size: 1px;
}
body {
font-family: 'Comic Mono', monospace;
}

1
uni/.n2w.yml Normal file
View File

@@ -0,0 +1 @@
itags: [ uni ]

1
uni/mmme/.n2w.yml Normal file
View File

@@ -0,0 +1 @@
itags: [ mmme ]

View File

@@ -0,0 +1,783 @@
---
author: Alvie Rahman
date: \today
title: MMME1026 // Calculus
tags:
- uni
- nottingham
- mechanical
- engineering
- mmme1026
- maths
- calculus
uuid: 126b21f8-e188-48f6-9151-5407f2b2b644
---
# Calculus of One Variable Functions
## Key Terms
<details>
<summary>
### Function
A function is a rule that assigns a **unique** value $f(x)$ to each value $x$ in a given *domain*.
</summary>
The set of value taken by $f(x)$ when $x$ takes all possible value in the domain is the *range* of
$f(x)$.
</details>
<details>
<summary>
### Rational Functions
A function of the type
$$ \frac{f(x)}{g(x)} $$
</summary>
where $f$ and $g$ are polynomials, is called a rational function.
Its range has to exclude all those values of $x$ where $g(x) = 0$.
</details>
<details>
<summary>
### Inverse Functions
Consider the function $f(x) = y$.
If $f$ is such that for each $y$ in the range there is exactly one $x$ in the domain,
we can define the inverse $f^{-1}$ as:
$$f^{-1}(y) = f^{-1}(f(x)) = x$$
</summary>
</details>
<details>
<summary>
### Limits
Consider the following:
$$f(x) = \frac{\sin x}{x}$$
The value of the function can be easily calculated when $x \neq 0$, but when $x=0$, we get the
expression $\frac{\sin 0 }{0}$.
However, when we evaluate $f(x)$ for values that approach 0, those values of $f(x)$ approach 1.
This suggests defining the limit of a function
$$\lim_{x \rightarrow a} f(x)$$
to be the limiting value, if it exists, of $f(x)$ as $x$ gets approaches $a$.
</summary>
#### Limits from Above and Below
Sometimes approaching 0 with small positive values of $x$ gives you a different limit from
approaching with small negative values of $x$.
The limit you get from approaching 0 with positive values is known as the limit from above:
$$\lim_{x \rightarrow a^+} f(x)$$
and with negative values is known as the limit from below:
$$\lim_{x \rightarrow a^-} f(x)$$
If the two limits are equal, we simply refer to the *limit*.
</details>
## Important Functions
<details>
<summary>
### Exponential Functions
$$f(x) = e^x = \exp x$$
</summary>
It can also be written as an infinite series:
$$\exp x = e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + ...$$
The two important limits to know are:
- as $x \rightarrow + \infty$, $\exp x \rightarrow +\infty$ ($e^x \rightarrow +\infty$)
- as $x \rightarrow -\infty$, $\exp x \rightarrow 0$ ($e^x \rightarrow 0$)
Note that $e^x > 0$ for all real values of $x$.
</details>
<details>
<summary>
### Hyperbolic Functions (sinh and cosh)
The hyperbolic sine ($\sinh$) and hyperbolic cosine function ($\cosh$) are defined by:
$$\sinh x = \frac 1 2 (e^x - e^{-x}) \text{ and } \cosh x = \frac 1 2 (e^x + e^{-x})$$
$$\tanh = \frac{\sinh x}{\cosh x}$$
</summary>
![[Fylwind at English Wikipedia, Public domain, via Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Sinh_cosh_tanh.svg)](./images/Sinh_cosh_tanh.svg)
Some key facts about these functions:
- $\cosh$ has even symmetry and $\sinh$ and $\tanh$ have odd symmetry
- as $x \rightarrow + \infty$, $\cosh x \rightarrow +\infty$ and $\sinh x \rightarrow +\infty$
- $\cosh^2x - \sinh^2x = 1$
- $\tanh$'s limits are -1 and +1
- Derivatives:
- $\frac{\mathrm{d}}{\mathrm{d}x} \sinh x = \cosh x$
- $\frac{\mathrm{d}}{\mathrm{d}x} \cosh x = \sinh x$
- $\frac{\mathrm{d}}{\mathrm{d}x} \tanh x = \frac{1}{\cosh^2x}$
</details>
<details>
<summary>
### Natural Logarithm
$$\ln{e^y} = \ln{\exp y} = y$$
</summary>
Since the exponential of any real number is positive, the domain of $\ln$ is $x > 0$.
</details>
<details>
<summary>
### Implicit Functions
An implicit function takes the form
$$f(x, y) = 0$$
</summary>
To draw the curve of an implicit function you have to rewrite it in the form $y = f(x)$.
There may be more than one $y$ value for each $x$ value.
</details>
# Differentiation
The derivative of the function $f(x)$ is denoted by:
$$f'(x) \text{ or } \frac{\mathrm{d}}{\mathrm dx} f(x)$$
Geometrically, the derivative is the gradient of the curve $y = f(x)$.
It is a measure of the rate of change of $f(x)$ as $x$ varies.
For example, velocity, $v$, is the rate of change of displacement, $s$, with respect to time, $t$,
or:
$$v = \frac{\mathrm ds}{dt}$$
<details>
<summary>
#### Formal Definition
</summary>
![](./images/vimscrot-2021-12-27T14:33:20,836330991+00:00.png)
As $h\rightarrow 0$, the clospe of the cord $\rightarrow$ slope of the tangent, or:
$$f'(x_0) = \lim_{h\rightarrow0}\frac{f(x_0+h) - f(x_0)}{h}$$
whenever this limit exists.
</details>
## Rules for Differentiation
### Powers
$$\frac{\mathrm d}{\mathrm dx} x^n = nx^{-1}$$
### Trigonometric Functions
$$\frac{\mathrm d}{\mathrm dx} \sin x = \cos x$$
$$\frac{\mathrm d}{\mathrm dx} \cos x = \sin x$$
### Exponential Functions
$$\frac{\mathrm d}{\mathrm dx} e^{kx} = ke^{kx}$$
$$\frac{\mathrm d}{\mathrm dx} \ln kx^n = \frac n x$$
where $n$ and $k$ are constant.
### Linearity
$$\frac{\mathrm d}{\mathrm dx} (f + g) = \frac{\mathrm d}{\mathrm dx} f + \frac{\mathrm d}{\mathrm dx} g$$
### Product Rule
$$\frac{\mathrm d}{\mathrm dx} (fg) = \frac{\mathrm df}{\mathrm dx}g + \frac{\mathrm dg}{\mathrm dx}f$$
### Quotient Rule
$$ \frac{\mathrm d}{\mathrm dx} \frac f g = \frac 1 {g^2} \left( \frac{\mathrm df}{\mathrm dx} g - f \frac{\mathrm dg}{\mathrm dx} \right) $$
$$ \left( \frac f g \right)' = \frac 1 {g^2} (gf' - fg')$$
### Chain Rule
Let
$$f(x) = F(u(x))$$
$$ \frac{\mathrm df}{\mathrm dx} = \frac{\mathrm{d}F}{\mathrm du} \frac{\mathrm du}{\mathrm dx} $$
<details>
<summary>
#### Example 1
Differentiate $f(x) = \cos{x^2}$.
</summary>
Let $u(x) = x^2$, $F(u) = \cos u$
$$ \frac{\mathrm df}{\mathrm dx} = -\sin u \cdot 2x = 2x\sin{x^2} $$
</details>
## L'Hôpital's Rule
l'Hôpital's rule provides a systematic way of dealing with limits of functions like
$\frac{\sin x} x$.
Suppose
$$\lim_{x\rightarrow{a}} f(x) = 0$$
and
$$\lim_{x\rightarrow{a}} g(x) = 0$$
and we want $\lim_{x\rightarrow{a}} \frac{f(x)}{g(x)}$.
If
$$\lim_{x\rightarrow{a}} \frac{f'(x)}{g'(x)} = L $$
where any $L$ is any real number or $\pm \infty$, then
$$\lim_{x\rightarrow{a}} \frac{f(x)}{g(x)} = L$$
You can keep applying the rule until you get a sensible answer.
# Graphs
## Stationary Points
An important application of calculus is to find where a function is a maximum or minimum.
![](./images/vimscrot-2021-12-27T15:30:26,494800477+00:00.png)
when these occur the gradient of the tangent to the curve, $f'(x) = 0$.
The condition $f'(x) = 0$ alone however does not guarantee a minimum or maximum.
It only means that point is a *stationary point*.
There are three main types of stationary points:
- maximum
- minimum
- point of inflection
### Local Maximum
The point $x = a$ is a local maximum if:
$$f'(a) = 0 \text{ and } f''(a) < 0$$
This is because $f'(x)$ is a decreasing function of $x$ near $x=a$.
### Local Minimum
The point $x = a$ is a local minimum if:
$$f'(a) = 0 \text{ and } f''(a) > 0$$
This is because $f'(x)$ is a increasing function of $x$ near $x=a$.
### Point of Inflection
$$f'(a) = 0 \text{ and } f''(a) = 0 \text { and } f'''(a) \ne 0$$
#### $f'''(a) > 0$
![](./images/vimscrot-2021-12-27T15:38:11,125781274+00:00.png)
#### $f'''(a) < 0$
![](./images/vimscrot-2021-12-27T15:38:29,395666506+00:00.png)
# Approximating with the Taylor series
The expansion
$$e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots$$
is an example of a *Taylor series*.
These enable us to approximate a given function f(x) using a series which is often easier to
calculate.
Among other uses, they help us:
- calculate complicated function using simple arithmetic operations
- find useful analytical approximations which work for $x$ near a given value
(e.g. $e^x \approx 1 + x$ for $x$ near 0)
- Understand the behaviour of a function near a stationary point
## Strategy
Suppose we know information about $f(x)$ only at the point $x=0$.
How can we find out about $f$ for other values of $x$?
We could approximate the function by successive polynomials,
each time matching more derivatives at $x=0$.
\begin{align*}
g(x) = a_0 &\text{ using } f(0) \\
g(x) = a_0 + a_1x &\text{ using } f(0), f'(0) \\
g(x) = a_0 + a_1x + a_2x^2 &\text{ using } f(0), f'(0), f''(0) \\
&\text{and so on...}
\end{align*}
<details>
<summary>
#### Example 1
For $x$ near 0, approximate $f(x) = \cos x$ by a quadratic.
</summary>
1. Set $f(0) = g(0$:
$$f(0) = 1 \rightarrow g(0) = a_0 = 1$$
2. Set $f'(0) = g'(0$:
$$f'(0) = -\sin0 = 0 \rightarrow g'(0) = a_1 = 0$$
3. Set $f''(0) = g''(0$:
$$f''(0) = -\cos = -1 \rightarrow g''(0) = 2a_2 = -1 \rightarrow a_2 = -0.5$$
So for $x$ near 0,
$$\cos x \approx 1 - \frac 1 2 x^2$$
Check:
$x$ | $\cos x$ | $1 - 0.5x^2$
--- | -------- | ------------
0.4 | 0.921061 | 0.920
0.2 | 0.960066 | 0.980
0.1 | 0.995004 | 0.995
</details>
## General Case
### Maclaurin Series
A Maclaurin series is a Taylor series expansion of a function about 0.
Any function $f(x)$ can be written as an infinite *Maclaurin Series*
$$f(x) = a_0 + a_1x + a_2x^2 + a_3x^2 + \cdots$$
where
$$a_0 = f(0) \qquad a_n = \frac 1 {n!} \frac{\mathrm d^nf}{\mathrm dx^n} \bigg|_{x=0}$$
($|_{x=0}$ means evaluated at $x=0$)
### Taylor Series
We may alternatively expand about any point $x=a$ to give a Taylor series:
\begin{align*}
f(x) = &f(a) + (x-a)f'(a) \\
& + \frac 1 {2!}(x-a)^2f''(a) \\
& + \frac 1 {3!}(x-a)^3f'''(a) \\
& + \cdots + \frac 1 {n!}(x-a)^nf^{(n)}(a)
\end{align*}
a generalisation of a Maclaurin series.
An alternative form of Taylor series is given by setting $x = a+h$ where $h$ is small:
$$f(a+h) = f(a) + hf'(a) + \cdots + \frac 1 {n!}h^nf^{(n)}(a) + \cdots$$
## Taylor Series at a Stationary Point
If f(x) has a stationary point at $x=a$, then $f'(a) = 0$ and the Taylor series begins
$$f(x) = f(a) + \frac 1 2 f''(a)(x-a)^2 + \cdots$$
- If $f''(a) > 0$ then the quadratic part makes the function increase going away from $x=a$ and we
have a minimum
- If $f''(a) < 0$ then the quadratic part makes the function decrease going away from $x=a$ and we
have a maximum
- If $f''(a) = 0$ then we must include a higer order terms to determine what happens
have a minimum
# Integration
Integration is the reverse of [differentiation](#differentiation).
Take velocity and displacement as an example:
$$\int\! v \mathrm dt = s + c$$
where $c$ is the constant of integration, which is required for
[indefinite integrals](#indefinite-integrals).A
## Definite Integrals
The definite integral of a function $f(x)$ in the range $a \le x \le b$ is denoted be:
$$\int^b_a \! f(x) \,\mathrm dx$$
If $f(x) = F'(x)$ ($f(x)$ is the derivative of $F(x)$) then
$$\int^b_a \! f(x) \,\mathrm dx = \left[F(x)\right]^b_a = F(b) - F(a)$$
## Area and Integration
Approximate the area under a smooth curve using a large number of narrow rectangles.
![](./images/vimscrot-2021-12-28T15:18:59,911868873+00:00.png)
Area under curve $\approx \sum_{n} f(x_n)\Delta x_n$.
As the rectangles get more numerous and narrow, the approximation approaches the real area.
The limiting value is denoted
$$\approx \sum_{n} f(x_n)\Delta x_n \rightarrow \int^b_a\! f(x) \mathrm dx$$
This explains the notation used for integrals.
<details>
<summary>
#### Example 1
Calculate the area between these two curves:
\begin{align*}
y &= f_1(x) = 2 - x^2 \\
y &= f_2(x) = x
\end{align*}
</summary>
![](./images/vimscrot-2021-12-28T15:25:12,556743251+00:00.png)
1. Find the crossing points $P$ and $Q$
\begin{align*}
f_1(x) &= f_2(x) \\
x &= 2-x^2 \\
x &= 1 \\
x &= -2
\end{align*}
2. Since $f_1(x) \ge f_2(x)$ between $P$ and $Q$
\begin{align*}
A &= \int^1_{-2}\! (f_1(x) - f_2(x)) \mathrm dx \\
&= \int^1_{-2}\! (2 - x^2 - x) \mathrm dx \\
&= \left[ 2x - \frac 13 x^3 - \frac 12 x^2 \right]^1_{-2} \\
&= \left(2 - \frac 13 - \frac 12 \right) - \left( -4 + \frac 83 - \frac 42 \right) \\
&= \frac 92
\end{align*}
</details>
## Techniques for Integration
Integration requires multiple techniques and methods to do correctly because it is a PITA.
These are best explained by examples so try to follow those rather than expect and explanation.
### Integration by Substitution
Integration but substitution lets us integrate functions of functions.
<details>
<summary>
#### Example 1
Find
$$I = \int\!(5x - 1)^3 \mathrm dx$$
</summary>
1. Let $w(x) = 5x - 1$
2.
\begin{align*}
\frac{\mathrm d}{\mathrm dx} w &= 5 \\
\frac 15 \mathrm dw &= \mathrm dx
\end{align*}
3. The integral is then
\begin{align*}
I &= \int\! w^3 \frac 15 \mathrm dw \\
&= \frac 15 \cdot \frac 14 \cdot w^4 + c \\
&= \frac{1}{20}w^4 + c
\end{align*}
4. Finally substitute $w$ out
$$I = \frac{(5x-1)^4}{20} + c$$
</details>
<details>
<summary>
#### Example 2
Find
$$I = \int\! \cos x \sqrt{\sin x + 1} \mathrm dx$$
</summary>
1. Let
$$w(x) = \sin x + 1$$
2. Then
\begin{align*}
\frac{\mathrm d}{\mathrm dx} w = \cos x \\
\mathrm dw = \cos x \mathrm dx \\
\end{align*}
3. The integral is now
\begin{align*}
I &= \int\! \sqrt w \,\mathrm dw \\
&= \int\! w^{\frac12} \,\mathrm dw \\
&= \frac23w^{\frac32} + c
\end{align*}
4. Finally substitute $w$ out to get:
$$I = \frac23 (\sin x + 1)^{\frac32} + c$$
</details>
<details>
<summary>
#### Example 3
Find
$$I = \int^{\frac\pi2}_0\! \cos x \sqrt{\sin x + 1} \,\mathrm dx$$
</summary>
1. Use the previous example to get to
$$I = \int^2_1\! \sqrt w \,\mathrm dw = \frac23w^{\frac32} + c$$
2. Since $w(x) = \sin x + 1$ the limits are:
\begin{align*}
x = 0 &\rightarrow w = 1\\
x = \frac\pi2 &\rightarrow w = 2
\end{align*}
3. This gives us
$$I = \left[ \frac23w^{\frac32} \right]^2_1 = \frac23 (2^{\frac23} = 1)$$
</details>
<details>
<summary>
#### Example 4
Find
$$I = \int^1_0\! \sqrt{1 - x^2} \,\mathrm dx$$
</summary>
1. Try a trigonmetrical substitution:
\begin{align*}
x &= \sin w \\
\\
\frac{\mathrm dx}{\mathrm dw} = \cos w \\
\mathrm dx = \cos 2 \,\mathrm dw \\
\end{align*}
2.
\begin{align*}
x=0 &\rightarrow w=0 \\
x=1 &\rightarrow w=\frac\pi2
\end{align*}
3. Therefore
\begin{align*}
I &= \int^{\frac\pi2}_0\! \sqrt{1 - \sin^2 w} \cos w \,\mathrm dw \\
&= \int^{\frac\pi2}_0\! \cos^w w \,\mathrm dw
\end{align*}
But $\cos(2w) = 2\cos^2w - 1$ so:
$$\cos^2w = \frac12 \cos(2w) + \frac12$$
Hence
\begin{align*}
I &= \int^{\frac\pi2}_0\! \frac12 \cos(2w) + \frac12 \,\mathrm dw \\
&= \left[ \frac14 \sin(2w) + \frac w2 \right]^{\frac\pi2}_0 \\
&= \left( \frac14 \sin\pi + \frac\pi4 \right) - 0 \\
&= \frac\pi4
\end{align*}
### Integration by Parts
$$uv = \int\! u\frac{\mathrm dv}{\mathrm dx} \,\mathrm dx + \int\! \frac{\mathrm du}{\mathrm dx}v \,\mathrm dx$$
or
$$\int\! u\frac{\mathrm dv}{\mathrm dx} \,\mathrm dx = uv - \int\! \frac{\mathrm du}{\mathrm dx}v \,\mathrm dx$$
This technique is derived from integrating the product rule.
</details>
<details>
<summary>
#### Example 1
Find
$$I = \int\! \ln x \,\mathrm dx$$
</summary>
1. Use
$$\int\! u\frac{\mathrm dv}{\mathrm dx} \,\mathrm dx = uv - \int\! \frac{\mathrm du}{\mathrm dx}v \,\mathrm dx$$
2. Set $u = \ln x$
and $v' = 1$.
3. This means that $u' = \frac1x$ and $v = x$.
4.
\begin{align*}
I &= x\ln x - \int\! x\cdot\frac1x \,\mathrm dx + c \\
&= x\ln x - \int\! \,\mathrm dx + c \\
&= x\ln x - x + c \\
\end{align*}
</details>
# Application of Integration
## Differential Equations
Consider the equation
$$\frac{\mathrm dy}{\mathrm dx} = y^2$$
To find $y$, is not a straightforward integration:
$$y = \int\!y^2 \,\mathrm dx$$
The equation above does not solve for $y$ as we can't integrate the right until we know $y$...
which is what we're trying to find.
This is an example of a first order differential equation.
The general form is:
$$\frac{\mathrm dy}{\mathrm dx} = F(x, y)$$
### Separable Differential Equations
A first order diferential equation is called *separable* if it is of the form
$$\frac{\mathrm dy}{\mathrm dx} = f(x)g(y)$$
We can solve these by rearranging:
$$\frac1{g(y} \cdot \frac{\mathrm dy}{\mathrm dx} = f(x)$$
$$\int\! \frac1{g(y)} \,\mathrm dy = \int\! f(x) \,\mathrm dx + c$$
<details>
<summary>
#### Example 1
Find $y$ such that
$$\frac{\mathrm dy}{\mathrm dx} = ky$$
where $k$ is a constant.
</summary>
Rearrange to get
\begin{align*}
\int\! \frac1y \,\mathrm dy &= \int\! k \mathrm dx + c \\
\ln y &= kx + c \\
y &= e^{kx + c} = e^ce^{kx} \\
&= Ae^{kx}
\end{align*}
where $A = e^c$ is an arbitrary constant.
</details>

View File

@@ -0,0 +1,398 @@
---
author: Alvie Rahman
date: \today
title: MMME1026 // Complex Numbers
tags:
- uni
- nottingham
- mechanical
- engineering
- mmme1026
- maths
- complex_numbers
uuid: b9be8780-1ab7-402f-9c67-8cc74a74f7a9
---
# Complex Numbers
## What is a Complex Number?
- $i$ is the unit imaginary number, which is defined by:
$$ i^2 = -1 $$
- An arbritary complex number is written in the form
$$z = x + iy$$
Where:
- $x$ is the real part of $z$ (which you may seen written as $\Re(z) = x$ or Re$(z) = x$)
- $y$ is the imaginary part of $z$ (which you may seen written as $\Im(z) = y$ or Im$(z) = y$)
- Two complex numbers are equal if both their real and imaginary parts are equal
e.g. $$(3 + 4i) + (1 -2i) = (3+1) + i(4-2) = 2 + 2i$$
### The Complex Conjugate
Given complex number $z$:
$$z = x + iy$$
The complex conjugate of z, $\bar z$ is:
$$\bar{z} = x -iy$$
### Division of Complex Numbers
- Multiply numerator and denominator by the conjugate of the denominator
<details>
<summary>
#### Example
</summary>
> \begin{align*}
z_1 &= 5 + i \\
z_2 &= 1 -i \\
\\
\frac{z_1}{z_2} &= \frac{5+i}{1-i} \cdot \frac{\bar{z_2}}{\bar{z_2}} = \frac{(5+i)(1+i)}{(1-i)(1+i)} \\
&= \frac{5 + i + 5i -1}{1 + 1} \\
&= \frac{4 + 6i}{2} = 2 + 3i
> \end{align*}
</details>
### Algebra and Conjugation
When taking complex conjugate of an algebraic expresion, we can replace $i$ by $-i$ before or after
doing the algebraic operations:
\begin{align*}
\overline{z_1+z_2} &= \bar{z_1}+\bar{z_2} \\
\overline{z_1z_2} &= \bar{z_1}\bar{z_2} \\
\overline{z_1/z_2} &= \frac{\bar{z_1}}{\bar{z_2}}
\end{align*}
The conjugate of a real number is the same as that number.
#### Application
If $z$ is a root of the polynomial equation
$$0 = az^2 + bz + c$$
with **real** coefficients $a$, $b$, and $c$, then $\bar{z}$ is also a root because
\begin{align*}
0 &= \overline{az^2 + bz + c} \\
&= \bar{a}\bar{z}^2 + \bar{b}\bar{z} + \bar{c} \\
&= a\bar{z}^2 + b\bar{z} + c
\end{align*}
### The Argand Diagram
A general complex number $z = x + iy$ has two components so it can can be represented as a point in
the plane with Cartesion coordinates $(x, y)$.
\begin{align*}
4-2i &\leftrightarrow (4, -2) \\
-i &\leftrightarrow (0, -1) \\
z &\leftrightarrow (x, y) \\
\bar z &\leftrightarrow (x, -y)
\end{align*}
### Plotting on a Polar Graph
We can also describe points in the complex plain with polar coordinates $(r, \theta)$:
\begin{align*}
z &= r(\cos\theta + i\sin\theta) &\text{ polar form of $z$} \\
r &= \sqrt{x^2+y^2} &\text{(modulus)}\\
\theta &= \arg z,\text{ where} \tan \theta = \frac y x &\text{(argument)} \\
x &= r\cos \theta \\
y &= r\sin \theta
\end{align*}
Be careful when turning $(x, y)$ into $(r, \theta)$ form as $\tan^{-1} \frac y x = \theta$ does not
always hold true as there are many solutions.
#### Choosing $\theta$ Correctly
1. Determine which quadrant the point is in (draw a picture).
2. Find a value of $\theta$ such that $\tan \theta = \frac y x$ and check that it is consistent.
If it puts you in the wrong quadrant, add or subtract $\pi$.
## Exponential Functions
- The exponential function $f(x) = \exp x$ may be wirtten as an infinite series:
$$\exp x = e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots $$
- The function $f(x) = e^{-x}$ is just $\frac 1 {e^x}$
- Note the important properties:
\begin{align*}
e^{a+b} &= e^a e^b \\
(e^a)^b &= e^{ab}
\end{align*}
## Euler's Formula
$$e^{i\theta} = \cos\theta + i\sin\theta$$
- Properties of $e^{i\theta}$: For any real angle $\theta$ we have
$$|e^{i\theta}| = |\cos\theta + i\sin\theta| = \sqrt{\cos^2\theta + \sin^2\theta} = 1$$
and
$$ \arg {e^{i\theta}} = \theta $$
- A complex number in *polar form*, where $r = |z|$, and $\theta = \arg z$, may alternatively be
written in its *exponential form*:
$$z = re^{i\theta}$$
**Note**: $$\bar z = r\cos\theta - ir\sin\theta = re^{-i\theta}$$
<details>
<summary>
### Example 1
Write $z = -1 + i$ in exponential form
</summary>
> $\arg z = \frac {3\pi} 4$
> $|z| = \sqrt 2$
>
> So $z = \sqrt2e^{i\frac{3\pi} 4}$
</details>
<details>
<summary>
### Example 2
The equations for a mechanical vibration problem are found to have the following mathematical
solution:
$$z(t) = \frac{e^{i\omega t}}{\omega_0^2-\omega^2 + i\gamma}$$
</summary>
where $t$ represents time and $\omega$, $\omega_0$ and $\gamma$ are all positive real physical
constants.
Although $z(t)$
is complex and cannot directly represent a physical solution, it turns out that the real and
imaginary parts $x(t)$ and $y(t)$ in $z(t) = x(t) + iy(t)$ can. Polar notation can be used to extract
this physical information efficiently as follows:
a. Put the denominator in the form
$$ae^{i\delta}$$
where you should give explicit expressions for $a$ and $\delta$ in terms of $\gamma$, $\gamma_0$,
and $\gamma$.
> \begin{align*}
a &= \sqrt{\gamma^2 + (\omega_0^2 - \omega^2)^2} \\
\delta &= \tan^{-1}\frac \delta {\omega_0^2 - \omega^2}
> \end{align*}
b. Hence find the constants $b$ and $\varphi$ such that
$$x(t) = b\cos(\omega t + \varphi)$$
and write a similar expression for $y(t)$.
> \begin{align*}
z &= \frac{e^i\omega t}{ae^{i\delta}} = \frac 1 a e^{i (\omega t - \delta)} \\
x + iy &= \frac 1 a \cos(\omega t - \delta) + \frac 1 a \sin(\omega t - \delta) \\
\therefore \Re z &= x = \frac 1 a \cos(\omega t - \delta), \\
\Im z &= y = \frac 1 a \sin(\omega t - \delta) \\
\\
b &= \frac 1 a = \frac 1 {\sqrt{\gamma^2 + (\omega_0^2 - \omega^2)^2}} \\
\varphi &= -\delta = \tan^{-1}\frac \delta {\omega_0^2 - \omega^2}\\
\\
y(t) &= \frac 1 a \sin(\omega t - \delta) \\
> \end{align*}
</details>
## Products of Complex Numbers
Suppose we have 2 complex numbers:
$$z_1 = x_1 + iy_1 = r_1e^{i\theta_1}$$
$$z_2 = x_2 + iy_2 = r_2e^{i\theta_2}$$
Using $e^a e^b = e^{a+b}$, the product is:
\begin{align*}
z_3 = z_1 z_2 &= (r_1e^{i\theta_1})(r_2e^{i\theta_2}) \\
&= r_1r_2e^{i\theta_1}e^{i\theta_2} \\
&= r_1r_2e^{i(\theta_1+\theta_2)} \\
\\
|z_1z_2| &= |z_1|\times|z_2| \\
\arg z_1z_2 &= \arg z_1 \times \arg z_2
\end{align*}
## de Moivre's Theorem
Let $z = re^{i\theta}$. Consider $z^n$.
Since $z = r(\cos\theta + i\sin\theta)$,
\begin{align*}
z^n &= r^n(\cos\theta + i\sin\theta)^n &\text{(1)} \\
\end{align*}
But also
\begin{align*}
z^n &= (re^{i\theta})^n \\
&= r^n(e^{i\theta})^n \\
&= r^ne^{in\theta} \\
&= r^n(\cos{n\theta} + i\sin{n\theta}) &\text{(2)} \\
\end{align*}
By equating (1) and (2), we find de Moivre's theorem:
\begin{align*}
r^n(\cos\theta +i\sin\theta)^n &= r^n(\cos{n\theta} + i\sin{n\theta}) \\
(\cos\theta +i\sin\theta)^n &= (\cos{n\theta} + i\sin{n\theta})
\end{align*}
<details>
<summary>
### Example 1
Write $1+i$ in polar form and use de Moivre's theorem to calculate $(1+i)^{15}$.
</summary>
> \begin{align*}
r &= |1+i| = \sqrt2 \\
\theta &= \arg{1+i} = \frac \pi 4 \\
\\
\text{So } 1 + i &= \sqrt2(\cos{\frac pi 4} + i\sin{\frac \pi 4}) = \sqrt2e^{i\frac \pi 4} \text{ and}\\
(i+i)^{15} &= (\sqrt2)^{15}\left(\cos{\frac \pi 4} + i\sin{\frac \pi 4}\right)^{15} \\
&= 2^{\frac 15 2} \left(\cos{\frac{15\pi} 4} + i\sin{\frac{15\pi} 4}\right) \\
&= 2^{\frac 15 2} \left(\frac 1 {\sqrt2} - \frac i {\sqrt2}\right) \\
&= 2^7 (1 - i) \\
&= 128 - 128i
> \end{align*}
</details>
<details>
<summary>
### Example 2
Use de Moivre's theorem to show that
\begin{align*}
\cos{2\theta} &= \cos^2\theta-\sin^2\theta \\
\text{and} \\
\sin{2\theta} &= 2\sin\theta\cos\theta
\end{align*}
</summary>
> Let $n=2$:
> \begin{align*}
(\cos\theta+i\sin\theta)^2 &= \cos^2\theta + 2i\sin\theta\cos\theta - \sin^2\theta \\
\text{Real part: } \cos^2\theta - \sin^2\theta &= \cos{2\theta}\\
\text{Imaginary part: } 2\sin\theta\cos\theta &= \sin{2\theta}
> \end{align*}
</details>
<details>
<summary>
### Example 3
Given that $n \in \mathbb{N}$ and $\omega = -1 + i$, show that
$w^n + \bar{w}^n = 2^{\frac n 2 + 1}\cos{\frac{3n\pi} 4}$ with Euler's formula.
</summary>
> \begin{align*}
r &= \sqrt{2} \\
\arg \omega = \theta &= \frac 3 4 \pi \\
\\
\omega^n &= r^n(cos{n\theta} + i\sin{n\theta}) \\
\bar\omega^n &= r^n(cos{n\theta} - i\sin{n\theta}) \\
\omega^n + \bar\omega^n &= r^n(2\cos{n\theta}) \\
&= 2^{\frac n 2 + 1}\cos{\frac {3n\pi} 4}
> \end{align*}
</details>
## Complex Roots of Polynomials
<details>
<summary>
### Example
Find which complex numbers $z$ satisfy
$$z^3 = 8i$$
</summary>
> 1. Write $8i$ in exponential form,
>
> $|8i| = 8$ and $\arg{8i} = \frac \pi 2$
>
> $\therefore 8i = 8e^{i\frac \pi 2}$
>
>
> 2. Let the solution be $r = re^{i\theta}$.
>
> Then $z^3 = r^3e^{3i\theta}$.
>
> 3. $z^3 = r^3e^{3i\theta} = 8e^{i\frac \pi 2}$
>
> i. Compare modulus:
>
> $r^3 = 8 \rightarrow r = 2$
>
> ii. Compare argument:
>
> $$3\theta = \frac \pi 2$$
>
> is a solution but there are others since
>
> $$e^{i\frac \pi 2} = e^{i \frac \pi 2 + 2n\pi}$$
>
> so we get a solution whenever
>
> $$3\theta = \frac \pi 2 + 2n\pi$$
>
> for any integer `n`
>
> - $n = 0 \rightarrow z = \sqrt3 + i$
> - $n = 1 \rightarrow z = -\sqrt3 + i$
> - $n = 2 \rightarrow z = -2i$
> - $n = 3 \rightarrow z = \sqrt3 + i$
> - $n = 4 \rightarrow z = -\sqrt3 + i$
> - The solutions start repeating as you can see
>
> In general, an $n$-th order polynomial has exactly $n$ complex roots.
> Some of these complex roots may be real numbers.
>
> 4. There are three solutions
</details>

View File

@@ -0,0 +1,64 @@
---
author: Akbar Rahman
date: \today
title: MMME1026 // Eigenvalues
tags: [ mmme1026, maths, eigenvalues, uni ]
uuid: f2220395-bc97-432e-a1d2-74085f16991d
---
An eigenvalue problem takes the form:
Find all the values of $\lambda$ for which the equation
$$A\pmb{x} = \lambda \pmb{x}$$
has a nonzero solution $\pmb x$, where $A$ is an $n\times n$ matrix and
$\pmb x$ is a column vector.
The equation may be written as
\begin{align*}
A\pmb x &= \lambda I \pmb x \\
\Leftrightarrow A \pmb x - \lambda I \pmb x & = 0 \\
\Leftrightarrow (A-\lambda I)\pmb x &= 0
\end{align*}
($\Leftrightarrow$ means "if and only if")
Non-zero solutions will exist if
$\det(A-\lambda I) = 0$
There are infinitely many eigenvectors for a given eigenvalue.
This is because if $\pmb x$ is an eigenvector of $A$ corresponding to the
eigenvalue $\lambda$ and $c$ is a non-zero scalar, then $c\pmb x$ is also
an eigenvector of $A$:
$$A(c\pmb x) = cA\pmb x = c\lambda \pmb x = \lambda(c\pmb x)$$
In general, if $A$ is an $n\times n$ matrix, then $|A-\lambda I|$ is a
polynomial of degree $n$ in $\lambda$, called the characteristic polynomial.
The characteristic equation is:
$$\lambda^n + c_{n-1}\lambda^{n-1} + c_{n-2}\lambda^{n-2} + \cdots + c_0 = 0$$
<details>
<summary>
#### Example 1 ($2\times2$ example)
</summary>
If $A$ is the matrix
$$A = \begin{pmatrix} a & b \\ c & d \end{pmatrix}$$
then
$$|A - \lambda I| = \lambda^2 - (a+d)\lambda + (ad-bc)$$
And the standard method for solving a quadratic can be used to find $\lambda$.
</details>

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with matplotlib (http://matplotlib.org/) -->
<svg id="svg6564" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="403pt" width="403pt" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 403 403" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs>
<style id="style6568" type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:100000;}</style>
<path id="m6d0dc4c4e2" stroke-width=".5" d="m0 0v-4" stroke="#000"/>
<path id="m2997e254fe" stroke-width=".5" d="m0 0v4" stroke="#000"/>
<path id="BitstreamVeraSans-Roman-31" d="m12.406 8.2969h16.11v55.625l-17.532-3.516v8.985l17.438 3.515h9.859v-64.609l16.11-0.0001v-8.2969h-41.985z"/>
<path id="BitstreamVeraSans-Roman-2212" d="m10.594 35.5h62.594v-8.297h-62.594z"/>
<path id="BitstreamVeraSans-Roman-30" d="m31.781 66.406q-7.609 0-11.453-7.5-3.828-7.484-3.828-22.531 0-14.984 3.828-22.484 3.844-7.5004 11.453-7.5004 7.672 0 11.5 7.5004 3.844 7.5 3.844 22.484 0 15.047-3.844 22.531-3.828 7.5-11.5 7.5m0 7.813q12.266 0 18.735-9.703 6.468-9.688 6.468-28.141 0-18.406-6.468-28.109-6.469-9.6879-18.735-9.6879-12.25 0-18.719 9.6875-6.4682 9.7034-6.4682 28.109 0 18.453 6.4682 28.141 6.469 9.703 18.719 9.703"/>
<path id="BitstreamVeraSans-Roman-78" d="m54.891 54.688l-19.782-26.61 20.797-28.078h-10.594l-15.921 21.484-15.907-21.484h-10.609l21.25 28.609-19.438 26.079h10.594l14.5-19.485 14.5 19.485z"/>
<path id="md69bb88a81" stroke-width=".5" d="m0 0h4" stroke="#000"/>
<path id="m1d1e712049" stroke-width=".5" d="m0 0h-4" stroke="#000"/>
<path id="BitstreamVeraSans-Roman-79" d="m32.172-5.0781q-3.797-9.7659-7.422-12.734-3.609-2.985-9.656-2.985h-7.1878v7.516h5.2818q3.703 0 5.75 1.765 2.062 1.7504 4.546 8.2972l1.61 4.0938-22.11 53.813h9.516l17.094-42.766 17.094 42.766h9.515z"/>
<path id="BitstreamVeraSans-Roman-3d" d="m10.594 45.406h62.594v-8.203h-62.594zm0-19.922h62.594v-8.296h-62.594z"/>
<path id="BitstreamVeraSans-Roman-28" d="m31 75.875q-6.531-11.219-9.719-22.219-3.172-10.984-3.172-22.265 0-11.266 3.203-22.328 3.204-11.063 9.688-22.251h-7.812q-7.313 11.485-10.954 22.563-3.6402 11.078-3.6402 22.016 0 10.89 3.6092 21.921 3.625 11.047 10.985 22.563z"/>
<path id="BitstreamVeraSans-Roman-69" d="m9.4219 54.688h8.9841v-54.688h-8.9841zm0 21.296h8.9841v-11.39h-8.9841z"/>
<path id="BitstreamVeraSans-Roman-6e" d="m54.891 33.016v-33.016h-8.985v32.719q0 7.765-3.031 11.609-3.031 3.86-9.078 3.86-7.281 0-11.485-4.641-4.203-4.625-4.203-12.641v-30.906h-9.0309v54.688h9.0309v-8.5q3.235 4.937 7.594 7.374 4.375 2.438 10.094 2.438 9.422 0 14.25-5.828 4.844-5.828 4.844-17.156"/>
<path id="BitstreamVeraSans-Roman-29" d="m8.0156 75.875h7.8124q7.313-11.516 10.953-22.563 3.641-11.031 3.641-21.921 0-10.938-3.641-22.016-3.64-11.078-10.953-22.563h-7.8124q6.4844 11.188 9.6874 22.25 3.203 11.063 3.203 22.329 0 11.281-3.203 22.265-3.203 11-9.6874 22.219"/>
<path id="BitstreamVeraSans-Roman-73" d="m44.281 53.078v-8.5q-3.797 1.953-7.906 2.922-4.094 0.984-8.5 0.984-6.687 0-10.031-2.046-3.344-2.047-3.344-6.157 0-3.125 2.391-4.906 2.39-1.781 9.625-3.391l3.078-0.687q9.562-2.047 13.594-5.781 4.031-3.735 4.031-10.422 0-7.6252-6.031-12.078-6.032-4.4379-16.579-4.4379-4.39 0-9.156 0.8594-4.765 0.85938-10.031 2.5625l-0.0001 9.281q4.9841-2.5935 9.8121-3.8904 4.828-1.2812 9.578-1.2812 6.344 0 9.75 2.1718 3.422 2.1718 3.422 6.1248 0 3.656-2.468 5.61-2.454 1.953-10.813 3.765l-3.125 0.735q-8.344 1.75-12.062 5.39-3.7035 3.641-3.7035 9.985 0 7.718 5.4685 11.906 5.469 4.203 15.531 4.203 4.969 0 9.36-0.734 4.406-0.719 8.109-2.188"/>
<path id="BitstreamVeraSans-Roman-68" d="m54.891 33.016v-33.016h-8.985v32.719q0 7.765-3.031 11.609-3.031 3.86-9.078 3.86-7.281 0-11.485-4.641-4.203-4.625-4.203-12.641v-30.906h-9.0309v75.984h9.0309v-29.796q3.235 4.937 7.594 7.374 4.375 2.438 10.094 2.438 9.422 0 14.25-5.828 4.844-5.828 4.844-17.156"/>
<path id="BitstreamVeraSans-Roman-63" d="m48.781 52.594v-8.406q-3.812 2.109-7.64 3.156-3.829 1.047-7.735 1.047-8.75 0-13.594-5.547-4.828-5.532-4.828-15.547 0-10.016 4.828-15.563 4.844-5.5309 13.594-5.5309 3.906 0 7.735 1.0469 3.828 1.0469 7.64 3.156v-8.3122q-3.765-1.75-7.797-2.625-4.015-0.8907-8.562-0.8907-12.36 0-19.641 7.7657-7.2654 7.7652-7.2654 20.953 0 13.375 7.3434 21.031 7.36 7.672 20.157 7.672 4.14 0 8.093-0.859 3.953-0.844 7.672-2.547"/>
<path id="BitstreamVeraSans-Roman-6f" d="m30.609 48.391q-7.218 0-11.421-5.641-4.204-5.641-4.204-15.453 0-9.813 4.172-15.453 4.188-5.6409 11.453-5.6409 7.188 0 11.375 5.6559 4.204 5.672 4.204 15.438 0 9.719-4.204 15.406-4.187 5.688-11.375 5.688m0 7.609q11.719 0 18.407-7.625 6.703-7.609 6.703-21.078 0-13.422-6.703-21.078-6.688-7.6409-18.407-7.6409-11.765 0-18.437 7.6407-6.6564 7.6562-6.6564 21.078 0 13.469 6.6564 21.078 6.672 7.625 18.437 7.625"/>
<path id="BitstreamVeraSans-Roman-61" d="m34.281 27.484q-10.89 0-15.093-2.484-4.204-2.484-4.204-8.5 0-4.781 3.157-7.5938 3.156-2.7968 8.562-2.7968 7.485 0 12 5.2966 4.516 5.297 4.516 14.078v2zm17.922 3.719v-31.203h-8.984v8.2969q-3.078-4.9688-7.672-7.3438t-11.235-2.375q-8.39 0-13.359 4.7188-4.953 4.7187-4.953 12.625 0 9.219 6.172 13.906 6.187 4.688 18.437 4.688h12.61v0.89q0 6.203-4.078 9.594-4.079 3.391-11.453 3.391-4.688 0-9.141-1.125-4.438-1.125-8.531-3.375v8.312q4.922 1.906 9.562 2.844 4.641 0.953 9.031 0.953 11.875 0 17.735-6.156 5.859-6.141 5.859-18.641"/>
<path id="BitstreamVeraSans-Roman-74" d="m18.312 70.219v-15.531h18.5v-6.985h-18.5v-29.687q0-6.688 1.829-8.5941 1.828-1.9063 7.453-1.9063h9.218v-7.5156h-9.218q-10.406 0-14.36 3.875-3.9528 3.8906-3.9528 14.141v29.687h-6.5937v6.985h6.5937v15.531z"/>
<clipPath id="p875ac5675d">
<rect id="rect6866" y="12.96" width="338.8" x="51.435" height="344.88"/>
</clipPath>
</defs>
<metadata id="metadata6870">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g id="figure_1">
<g id="patch_1">
<path id="path6572" fill="none" d="m0 403.2h403.2v-403.2h-403.2v403.2z"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path id="path6576" fill="none" d="m51.435 357.84h338.8v-344.88h-338.8l-0.005 344.88z"/>
</g>
<g id="line2d_1">
<path id="path7422" stroke-linejoin="round" d="m202.58 447.3l2.46-19.45 2.97-21.01 2.96-18.8 2.97-16.83 2.97-15.08 2.97-13.52 2.96-12.12 2.97-10.88 2.97-9.77 2.97-8.79 2.96-7.92 2.97-7.14 2.97-6.46 2.97-5.87 3.39-6.05 3.39-5.47 3.39-4.97 3.82-5.09 4.24-5.17 4.66-5.24 6.36-6.68 13.56-14.09 4.67-5.31 4.24-5.26 3.81-5.2 3.39-5.09 3.39-5.6 2.97-5.41 2.97-5.94 2.97-6.56 2.96-7.25 2.97-8.03 2.97-8.92 2.97-9.93 2.96-11.04 2.97-12.31 2.55-11.68 2.54-12.819 2.54-14.09 2.55-15.489 2.54-17.03 2.54-18.729 1.61-13.013" transform="scale(.8)" stroke="#b30000" stroke-miterlimit="1e5" stroke-width="2.5" fill="none"/>
</g>
<g id="line2d_2">
<path id="path7415" stroke-linejoin="round" d="m202.79 16.2l0.55 4.635 2.97 22.175 2.97 19.799 2.97 17.675 2.96 15.771 2.97 14.065 2.97 12.54 2.97 11.17 2.96 9.94 2.97 8.83 2.97 7.84 2.97 6.95 2.96 6.13 2.97 5.41 2.54 4.11 2.55 3.66 2.54 3.24 2.54 2.86 2.55 2.5 2.54 2.17 2.55 1.85 2.54 1.55 2.54 1.27 2.55 1 2.54 0.74 2.54 0.48 2.55 0.22 2.54-0.02 2.54-0.27 2.55-0.52 2.54-0.78 2.54-1.04 2.55-1.32 2.54-1.6 2.55-1.9 2.54-2.22 2.54-2.56 2.55-2.92 2.54-3.31 2.54-3.73 2.55-4.19 2.54-4.68 2.54-5.21 2.55-5.8 2.54-6.43 2.55-7.14 2.54-7.9 2.54-8.73 2.55-9.65 2.54-10.66 2.54-11.76 2.55-12.976 2.54-14.31 2.54-15.774 2.55-17.387 2.54-19.158 0.56-4.635" transform="scale(.8)" stroke="#00b300" stroke-miterlimit="1e5" stroke-dasharray="7.5, 7.50000000000000000" stroke-width="2.5" fill="none"/>
</g>
<g id="line2d_3">
<path id="path6585" d="m51.435 206.95l106.16-0.1 12.2-0.24 7.46-0.35 5.76-0.48 4.41-0.59 3.73-0.7 3.39-0.86 3.06-1 2.71-1.1 2.71-1.34 2.72-1.59 2.71-1.86 2.71-2.13 3.05-2.69 3.73-3.6 10.18-10.06 3.05-2.62 2.71-2.07 2.72-1.79 2.71-1.53 2.71-1.28 3.06-1.16 3.05-0.92 3.39-0.79 3.73-0.65 4.41-0.53 5.43-0.43 7.12-0.31 10.17-0.21 17.98-0.1 61.38-0.02h28.49" clip-path="url(#p875ac5675d)" stroke="#0000b3" stroke-dasharray="1.000000,3.000000" stroke-width="2" fill="none"/>
</g>
<g id="patch_3">
<path id="path6588" d="m51.435 357.84h338.8" stroke="#000" stroke-linecap="square" fill="none"/>
</g>
<g id="patch_4">
<path id="path6591" d="m51.435 357.84v-344.88" stroke="#000" stroke-linecap="square" fill="none"/>
</g>
<g id="patch_5">
<path id="path6594" d="m390.24 357.84v-344.88" stroke="#000" stroke-linecap="square" fill="none"/>
</g>
<g id="patch_6">
<path id="path6597" d="m51.435 12.96h338.8" stroke="#000" stroke-linecap="square" fill="none"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_4">
<path id="path6602" d="m199.66 357.84v-344.88" clip-path="url(#p875ac5675d)" stroke="#000" stroke-dasharray="1.000000,3.000000" stroke-width=".5" fill="none"/>
</g>
<g id="line2d_5">
<g id="g6608">
<use id="use6610" xlink:href="#m6d0dc4c4e2" stroke="#000000" y="357.84" x="199.6621875" stroke-width=".5"/>
</g>
</g>
<g id="line2d_6">
<g id="g6616">
<use id="use6618" xlink:href="#m2997e254fe" stroke="#000000" y="12.96" x="199.6621875" stroke-width=".5"/>
</g>
</g>
<g id="text_1"><!-- 1 -->
<g id="g6625" transform="translate(190.82 370.96) scale(.12 -.12)">
<use id="use6627" xlink:href="#BitstreamVeraSans-Roman-2212"/>
<use id="use6629" x="83.7890625" xlink:href="#BitstreamVeraSans-Roman-31"/>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_7">
<path id="path6633" d="m220.84 357.84v-344.88" clip-path="url(#p875ac5675d)" stroke="#000" stroke-dasharray="1.000000,3.000000" stroke-width=".5" fill="none"/>
</g>
<g id="line2d_8">
<g id="g6636">
<use id="use6638" xlink:href="#m6d0dc4c4e2" stroke="#000000" y="357.84" x="220.8375" stroke-width=".5"/>
</g>
</g>
<g id="line2d_9">
<g id="g6641">
<use id="use6643" xlink:href="#m2997e254fe" stroke="#000000" y="12.96" x="220.8375" stroke-width=".5"/>
</g>
</g>
<g id="text_2"><!-- 0 -->
<g id="g6649" transform="translate(217.02 370.96) scale(.12 -.12)">
<use id="use6651" xlink:href="#BitstreamVeraSans-Roman-30"/>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_10">
<path id="path6655" d="m242.01 357.84v-344.88" clip-path="url(#p875ac5675d)" stroke="#000" stroke-dasharray="1.000000,3.000000" stroke-width=".5" fill="none"/>
</g>
<g id="line2d_11">
<g id="g6658">
<use id="use6660" xlink:href="#m6d0dc4c4e2" stroke="#000000" y="357.84" x="242.0128125" stroke-width=".5"/>
</g>
</g>
<g id="line2d_12">
<g id="g6663">
<use id="use6665" xlink:href="#m2997e254fe" stroke="#000000" y="12.96" x="242.0128125" stroke-width=".5"/>
</g>
</g>
<g id="text_3"><!-- 1 -->
<g id="g6668" transform="translate(238.2 370.96) scale(.12 -.12)">
<use id="use6670" xlink:href="#BitstreamVeraSans-Roman-31"/>
</g>
</g>
</g>
<g id="text_4"><!-- x -->
<g id="g6676" transform="translate(217.29 387.57) scale(.12 -.12)">
<use id="use6678" xlink:href="#BitstreamVeraSans-Roman-78"/>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_13">
<path id="path6683" d="m51.435 206.96h338.8" clip-path="url(#p875ac5675d)" stroke="#000" stroke-dasharray="1.000000,3.000000" stroke-width=".5" fill="none"/>
</g>
<g id="line2d_14">
<g id="g6689">
<use id="use6691" xlink:href="#md69bb88a81" stroke="#000000" y="206.955" x="51.435" stroke-width=".5"/>
</g>
</g>
<g id="line2d_15">
<g id="g6697">
<use id="use6699" xlink:href="#m1d1e712049" stroke="#000000" y="206.955" x="390.24" stroke-width=".5"/>
</g>
</g>
<g id="text_5"><!-- 1 -->
<g id="g6702" transform="translate(29.744 210.27) scale(.12 -.12)">
<use id="use6704" xlink:href="#BitstreamVeraSans-Roman-2212"/>
<use id="use6706" x="83.7890625" xlink:href="#BitstreamVeraSans-Roman-31"/>
</g>
</g>
</g>
<g id="ytick_2">
<g id="line2d_16">
<path id="path6710" d="m51.435 185.4h338.8" clip-path="url(#p875ac5675d)" stroke="#000" stroke-dasharray="1.000000,3.000000" stroke-width=".5" fill="none"/>
</g>
<g id="line2d_17">
<g id="g6713">
<use id="use6715" xlink:href="#md69bb88a81" stroke="#000000" y="185.4" x="51.435" stroke-width=".5"/>
</g>
</g>
<g id="line2d_18">
<g id="g6718">
<use id="use6720" xlink:href="#m1d1e712049" stroke="#000000" y="185.4" x="390.24" stroke-width=".5"/>
</g>
</g>
<g id="text_6"><!-- 0 -->
<g id="g6723" transform="translate(39.8 188.71) scale(.12 -.12)">
<use id="use6725" xlink:href="#BitstreamVeraSans-Roman-30"/>
</g>
</g>
</g>
<g id="ytick_3">
<g id="line2d_19">
<path id="path6729" d="m51.435 163.84h338.8" clip-path="url(#p875ac5675d)" stroke="#000" stroke-dasharray="1.000000,3.000000" stroke-width=".5" fill="none"/>
</g>
<g id="line2d_20">
<g id="g6732">
<use id="use6734" xlink:href="#md69bb88a81" stroke="#000000" y="163.845" x="51.435" stroke-width=".5"/>
</g>
</g>
<g id="line2d_21">
<g id="g6737">
<use id="use6739" xlink:href="#m1d1e712049" stroke="#000000" y="163.845" x="390.24" stroke-width=".5"/>
</g>
</g>
<g id="text_7"><!-- 1 -->
<g id="g6742" transform="translate(39.8 167.16) scale(.12 -.12)">
<use id="use6744" xlink:href="#BitstreamVeraSans-Roman-31"/>
</g>
</g>
</g>
<g id="text_8"><!-- y -->
<g id="g6750" transform="translate(22.249 188.95) rotate(-90) scale(.12 -.12)">
<use id="use6752" xlink:href="#BitstreamVeraSans-Roman-79"/>
</g>
</g>
</g>
<g id="legend_1">
<g id="patch_7">
<path id="path6756" d="m248.34 350.64h134.7v-67.73h-134.7z" stroke="#000" fill="#fff"/>
</g>
<g id="line2d_22">
<path id="path6759" d="m258.42 294.57h20.16" stroke="#b30000" stroke-linecap="square" stroke-width="2" fill="none"/>
</g>
<g id="text_9"><!-- y = sinh(x) -->
<g id="g6773" transform="translate(294.42 299.61) scale(.144 -.144)">
<use id="use6775" xlink:href="#BitstreamVeraSans-Roman-79"/>
<use id="use6777" x="59.1796875" xlink:href="#BitstreamVeraSans-Roman-20"/>
<use id="use6779" x="90.966796875" xlink:href="#BitstreamVeraSans-Roman-3d"/>
<use id="use6781" x="174.755859375" xlink:href="#BitstreamVeraSans-Roman-20"/>
<use id="use6783" x="206.54296875" xlink:href="#BitstreamVeraSans-Roman-73"/>
<use id="use6785" x="258.642578125" xlink:href="#BitstreamVeraSans-Roman-69"/>
<use id="use6787" x="286.42578125" xlink:href="#BitstreamVeraSans-Roman-6e"/>
<use id="use6789" x="349.8046875" xlink:href="#BitstreamVeraSans-Roman-68"/>
<use id="use6791" x="413.18359375" xlink:href="#BitstreamVeraSans-Roman-28"/>
<use id="use6793" x="452.197265625" xlink:href="#BitstreamVeraSans-Roman-78"/>
<use id="use6795" x="511.376953125" xlink:href="#BitstreamVeraSans-Roman-29"/>
</g>
</g>
<g id="line2d_24">
<path id="path6798" d="m258.42 315.71h20.16" stroke="#00b300" stroke-dasharray="6.000000,6.000000" stroke-width="2" fill="none"/>
</g>
<g id="text_10"><!-- y = cosh(x) -->
<g id="g6806" transform="translate(294.42 320.75) scale(.144 -.144)">
<use id="use6808" xlink:href="#BitstreamVeraSans-Roman-79"/>
<use id="use6810" x="59.1796875" xlink:href="#BitstreamVeraSans-Roman-20"/>
<use id="use6812" x="90.966796875" xlink:href="#BitstreamVeraSans-Roman-3d"/>
<use id="use6814" x="174.755859375" xlink:href="#BitstreamVeraSans-Roman-20"/>
<use id="use6816" x="206.54296875" xlink:href="#BitstreamVeraSans-Roman-63"/>
<use id="use6818" x="261.5234375" xlink:href="#BitstreamVeraSans-Roman-6f"/>
<use id="use6820" x="322.705078125" xlink:href="#BitstreamVeraSans-Roman-73"/>
<use id="use6822" x="374.8046875" xlink:href="#BitstreamVeraSans-Roman-68"/>
<use id="use6824" x="438.18359375" xlink:href="#BitstreamVeraSans-Roman-28"/>
<use id="use6826" x="477.197265625" xlink:href="#BitstreamVeraSans-Roman-78"/>
<use id="use6828" x="536.376953125" xlink:href="#BitstreamVeraSans-Roman-29"/>
</g>
</g>
<g id="line2d_26">
<path id="path6831" d="m258.42 336.85h20.16" stroke="#0000b3" stroke-dasharray="1.000000,3.000000" stroke-width="2" fill="none"/>
</g>
<g id="text_11"><!-- y = tanh(x) -->
<g id="g6839" transform="translate(294.42 341.89) scale(.144 -.144)">
<use id="use6841" xlink:href="#BitstreamVeraSans-Roman-79"/>
<use id="use6843" x="59.1796875" xlink:href="#BitstreamVeraSans-Roman-20"/>
<use id="use6845" x="90.966796875" xlink:href="#BitstreamVeraSans-Roman-3d"/>
<use id="use6847" x="174.755859375" xlink:href="#BitstreamVeraSans-Roman-20"/>
<use id="use6849" x="206.54296875" xlink:href="#BitstreamVeraSans-Roman-74"/>
<use id="use6851" x="245.751953125" xlink:href="#BitstreamVeraSans-Roman-61"/>
<use id="use6853" x="307.03125" xlink:href="#BitstreamVeraSans-Roman-6e"/>
<use id="use6855" x="370.41015625" xlink:href="#BitstreamVeraSans-Roman-68"/>
<use id="use6857" x="433.7890625" xlink:href="#BitstreamVeraSans-Roman-28"/>
<use id="use6859" x="472.802734375" xlink:href="#BitstreamVeraSans-Roman-78"/>
<use id="use6861" x="531.982421875" xlink:href="#BitstreamVeraSans-Roman-29"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,753 @@
---
author: Alvie Rahman
date: \today
title: MMME1026 // Systems of Equations and Matrices
tags:
- uni
- nottingham
- mechanical
- engineering
- mmme1026
- maths
- systems_of_equations
- matrices
uuid: 16edb140-9946-4759-93df-50cad510fe31
---
# Systems of Equations (Simultaneous Equations)
## Gaussian Elimination
Gaussian eliminiation can be used when the number of unknown variables you have is equal to the
number of equations you are given.
I'm pretty sure it's the name for the method you use to solve simultaneous equations in school.
For example if you have 1 equation and 1 unknown:
\begin{align*}
2x &= 6 \\
x &= 3
\end{align*}
### Number of Solutions
Let's generalise the example above to
$$ax = b$$
There are 3 possible cases:
\begin{align*}
a \ne 0 &\rightarrow x = \frac b a \\
a = 0, b \ne 0 &\rightarrow \text{no solution for $x$} \\
a = 0, b = 0 &\rightarrow \text{infinite solutions for $x$}
\end{align*}
### 2x2 Systems
A 2x2 system is one with 2 equations and 2 unknown variables.
<details>
<summary>
#### Example 1
\begin{align*}
3x_1 + 4x_2 &= 2 &\text{(1)} \\
x_1 + 2x_2 &= 0 &\text{(2)} \\
\end{align*}
</summary>
\begin{align*}
3\times\text{(2)} = 3x_1 + 6x_2 &= 0 &\text{(3)} \\
\text{(3)} - \text{(1)} = 0x_1 + 2x_2 &= -2 \\
x_2 &= -1
\end{align*}
We've essentially created a 1x1 system for $x_2$ and now that's solved we can back substitute it
into equation (1) (or equation (2), it doesn't matter) to work out the value of $x_1$:
\begin{align*}
3x_1 + 4x_2 &= 2 \\
3x_1 - 1 &= 2 \\
3x_1 &= 6 \\
x_1 &= 2
\end{align*}
You can check the values for $x_1$ and $x_2$ are correct by substituting them into equation (2).
</details>
### 3x3 Systems
A 3x3 system is one with 3 equations and 3 unknown variables.
<details>
<summary>
#### Example 1
\begin{align*}
2x_1 + 3x_2 - x_3 &= 5 &\text{(1)} \\
4x_1 + 4x_2 - 3x_3 &= 5 &\text{(2)} \\
2x_1 - 3x_2 + x_3 &= 5 &\text{(3)} \\
\end{align*}
</summary>
The first step is to eliminate $x_1$ from (2) and (3) using (1):
\begin{align*}
\text{(2)}-2\times\text{(1)} = -2x_2 -x_3 &= -1 &\text{(4)} \\
\text{(3)}-\text{(1)} = -6x_2 + 3x_3 &= -6 &\text{(5)} \\
\end{align*}
This has created a 2x2 system of $x_2$ and $x_3$ which can be solved as any other 2x2 system.
I'm too lazy to type up the working, but it is solved like any other 2x2 system.
\begin{align*}
x_2 &= -2
x_3 &= 5
\end{align*}
These values can be back-substituted into any of the first 3 equations to find out $x_1$:
\begin{align*}
-2x_1 + 3x_2 - x_3 = 2x_1 + 6 - 3 = 5 \rightarrow x_1 = 1
\end{align*}
</details>
<details>
<summary>
#### Example 2
\begin{align*}
x_1 + x_2 - 2x_3 &= 1 &R_1 \\
2x_1 - x_2 - x_3 &= 1 &R_2 \\
x_1 + 4x_2 + 7x_3 &= 2 &R_3 \\
\end{align*}
</summary>
1. Eliminate $x_1$ from $R_2$, $R_3$:
\begin{align*}
x_1 + x_2 - 2x_3 &= 1 &R_1' = R_1\\
- 3x_2 - 5x_3 &= -1 &R_2' = R_2 - 2R_1 \\
3x_2 + 5x_3 &= 1 &R_3' = R_3 - R_1 \\
\end{align*}
We've created another 2x2 system of $R_2'$ and $R_3'$
2. Eliminate $x_2$ from $R_3''$
\begin{align*}
x_1 + x_2 - 2x_3 &= 1 &R_1'' = R_1' = R_1\\
- 3x_2 - 5x_3 &= -1 &R_2'' = R_2' = R_2 - 2R_1 \\
0x_3 &= 0 &R_3'' = R_3 '+ R_2' \\
\end{align*}
We can see that $x_3$ can be any number, so there are infinite solutions. Let:
$$x_3 = t$$
where $t$ can be any number
3. Substitute $x_3$ into $R_2''$:
$$R_2'' = -3x_2 - 5t = -1 \rightarrow x_2 = \frac 1 3 - \frac{5t} 3$$
4. Substitute $x_2$ and $x_3$ into $R_1''$:
$$R_1'' = x_1 + \frac 1 3 - \frac{5t} 3 + 2t = 1 \rightarrow x_1 = \frac 2 3 - \frac t 3$$
</details>
## Systems of Equations and Matrices
Many problems in engineering have a very large number of unknowns and equations to solve
simultaneously.
We can use matrices to solve these efficiently.
Take the following simultaneous equations::
\begin{align*}
3x_1 + 4x_2 &= 2 &\text{(1)} \\
x_1 + 2x_2 &= 0 &\text{(2)}
\end{align*}
They can be represented by the following matrices:
\begin{align*}
A &= \begin{pmatrix} 3 & 4 \\ 1 & 2 \end{pmatrix} \\
\pmb x &= \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} \\
\pmb b &= \begin{pmatrix} 2 \\ 0 \end{pmatrix} \\
\end{align*}
You can then express the system as:
$$A\pmb x = \pmb b$$
<details>
<summary>
#### A 3x3 System as a Matrix
</summary>
\begin{align*}
2x_1 + 3x_2 - x_3 &= 5 \\
4x_1 + 4x_2 - 3x_3 &= 3 \\
2x_1 - 3x_2 + x_3 &= -1
\end{align*}
Could be expressed in the form $A\pmb x = \pmb b$ where:
\begin{align*}
A &= \begin{pmatrix} 2 & 3 & -1 \\ 4 & 4 & -3 \\ 2 & -3 & -1 \end{pmatrix} \\
\pmb x &= \begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix} \\
\pmb b &= \begin{pmatrix} 5 \\ 3 \\ -1 \end{pmatrix} \\
\end{align*}
</details>
<details>
<summary>
#### An $m\times n$ System as a Matrix
</summary>
\begin{align*}
a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n &= b_1 \\
a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n &= b_2 \\
\cdots \\
a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n &= b_m \\
\end{align*}
Could be expressed in the form $A\pmb x = \pmb b$ where:
\begin{align*}
A = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & & & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{pmatrix},
\pmb x = \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix},
\pmb b = \begin{pmatrix} b_1 \\ b_2 \\ \vdots \\ b_m \end{pmatrix}
\end{align*}
</details>
# Matrices
## Order of a Matrix
The order of a matrix is its size e.g. $3\times2$ or $m\times n$
## Column Vectors
- Column vectors are matrices with only one column:
$$ \begin{pmatrix} 1 \\ 2 \end{pmatrix} \begin{pmatrix} 4 \\ 45 \\ 12 \end{pmatrix} $$
- Column vector variables typed up or printed are expressed in $\pmb{bold}$ and when it is
handwritten it is \underline{underlined}:
$$ \pmb x = \begin{pmatrix} -3 \\ 2 \end{pmatrix}$$
## Matrix Algebra
### Equality
Two matrices are the same if:
- Their order is the same
- Their corresponding elements are the same
### Addition and Subtraction
Only possible if their order is the same.
\begin{align*}
A + B&= \begin{pmatrix} a_{11} + b_{11} & a_{12} + b_{12} & \cdots & a_{1n} + b_{1n} \\
a_{21} + b_{21} & a_{22} + b_{22} & \cdots & a_{2n} + b_{2n} \\
\vdots & & & \vdots \\
a_{m1} + b_{m1} & a_{m2} + b_{m2} & \cdots & a_{mn} + b_{mn}
\end{pmatrix} \\
A - B&= \begin{pmatrix} a_{11} - b_{11} & a_{12} - b_{12} & \cdots & a_{1n} - b_{1n} \\
a_{21} - b_{21} & a_{22} - b_{22} & \cdots & a_{2n} - b_{2n} \\
\vdots & & & \vdots \\
a_{m1} - b_{m1} & a_{m2} - b_{m2} & \cdots & a_{mn} - b_{mn}
\end{pmatrix},
\end{align*}
### Zero Matrix
This is a matrix whose elements are all zeros.
For any matrix $A$,
$$A + 0 =A$$
We can only add matrices of the same order, therefore 0 must be of the same order as $A$.
### Multiplication
Let
$$
\begin{matrix}
A & m\times n \\
B & p\times q
\end{matrix}
$$
To be able to multiply $A$ by $B$, $n = p$.
If $n \ne p$, then $AB$ does not exist.
$$
\begin{matrix}
A & B & = & C \\
m\times n & p \times q & & m\times q
\end{matrix}
$$
When $C = AB$ exists,
$$C_{ij} = \sum_r\! a_{ir}b_{rj}$$
That is, $C_{ij}$ is the 'product' of the $i$th row of $A$ and $j$th column of $B$.
#### Multiplication of a Matrix by a Scalar
If $\lambda$ is a scalar, we define
$$
\lambda a = \begin{pmatrix} \lambda a_{11} & \lambda a_{12} & \cdots & \lambda a_{1n} \\
\lambda a_{21} & \lambda a_{22} & \cdots & \lambda a_{2n} \\
\vdots & & & \vdots \\
\lambda a_{m1} & \lambda a_{m2} & \cdots & \lambda a_{mn}
\end{pmatrix},
$$
<details>
<summary>
#### Example 1
</summary>
$$
\begin{pmatrix} 1 & -1 \\ 2 & 1 \end{pmatrix}
\begin{pmatrix} 0 & 1 \\ 3 & 2 \end{pmatrix} =
\begin{pmatrix} -3 & -1 \\ 3 & 4 \end{pmatrix}
$$
$$
\begin{pmatrix} 0 & 1 \\ 3 & 2 \end{pmatrix}
\begin{pmatrix} 1 & -1 \\ 2 & 1 \end{pmatrix} =
\begin{pmatrix} 2 & 1 \\ 7 & -1 \end{pmatrix}
$$
</details>
<details>
<summary>
#### Example 2
</summary>
$$
A = \begin{pmatrix} 4 & 1 & 6 \\ 3 & 2 & 1 \end{pmatrix},\,
B = \begin{pmatrix} 1 & 1 \\ 1 & 2 \\ 1 & 0 \end{pmatrix}
$$
$$
AB = \begin{pmatrix} 11 & 6 \\ 6 & 7 \end{pmatrix},\,
BA = \begin{pmatrix} 7 & 3 & 7 \\ 10 & 5 & 8 \\ 4 & 1 & 6 \end{pmatrix}
$$
</details>
### Other Properties of Matrix Algebra
- $(\lambda A)B = \lambda(AB) = A(\lambda B)$
- $A(BC) = (AB)C = ABC$
- $(A+B)C = AC + BC$
- $C(A+B) = CA + CB$
- In general, $AB \ne BA$ even if both exist
- $AB = 0$ does not always mean $A = 0$ or $B = 0$:
$$\begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix} \begin{pmatrix}3 & 0 \\ 0 & 0 \end{pmatrix} =
\begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix} = 0$$
<details>
<summary>
It follows that $AB = AC$ does not imply that $B=C$ as
$$AB = AC \leftrightarrow A(B + C) = 0$$
and as $A$ and $(B-C)$ are not necessarily 0, $B$ is not necessarily equal to $C$:
</summary>
$$AB = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix} \begin{pmatrix}0 & 0 \\ 1 & 0 \end{pmatrix} =
\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}$$
and
$$AC = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix} \begin{pmatrix}1 & 2 \\ 1 & 0 \end{pmatrix} =
\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix} = AB$$
but $B \ne C$
</details>
## Special Matrices
### Square Matrix
Where $m = n$
<details>
<summary>
#### Example 1
A $3\times3$ matrix.
</summary>
$$\begin{pmatrix}1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9\end{pmatrix}$$
</details>
<details>
<summary>
#### Example 2
A $2\times2$ matrix.
</summary>
$$\begin{pmatrix}1 & 2 \\ 4 & 5 \end{pmatrix}$$
</details>
### Identity Matrix
The identity matrix is a square matrix whose eleements are all 0, except the leading diagonal which
is 1s.
The leading diagonal is the top left to bottom right corner.
It is usually denoted by $I$ or $I_n$.
The identity matrix has the properties that
$$AI = IA = A$$
for any square matrix $A$ of the same order as I, and
$$Ix = x$$
for any vector $x$.
<details>
<summary>
#### Example 1
The $3\times3$ identity matrix.
</summary>
$$\begin{pmatrix}1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1\end{pmatrix}$$
</details>
<details>
<summary>
#### Example 2
The $2\times2$ identity matrix.
</summary>
$$\begin{pmatrix}1 & 0 \\ 0 & 1 \end{pmatrix}$$
</details>
### Transposed Matrix
The transpose of matrix $A$ of order $m\times n$ is matrix $A^T$ which has the order $n\times m$.
It is found by reflecting it along the leading diagonal, or interchanging the rows and columns of
$A$.
![by [Lucas Vieira](https://commons.wikimedia.org/wiki/File:Matrix_transpose.gif)](./images/Matrix_transpose.gif)
Let matrix $D = EF$, then $D^T = (EF)^T = E^TF^T$
#### Example 1
$$
A = \begin{pmatrix}3 & 2 & 1 \\ 4 & 5 & 6 \end{pmatrix},\,
A^T = \begin{pmatrix}3 & 4 \\ 2 & 5 \\ 1 & 6\end{pmatrix}
$$
#### Example 2
$$
B = \begin{pmatrix}1 \\ 4\end{pmatrix},\,
B^T = \begin{pmatrix}1 & 4\end{pmatrix}
$$
#### Example 3
$$
C = \begin{pmatrix}1 & 2 & 3 \\ 0 & 5 & 1 \\ 2 & 3 & 7\end{pmatrix},\,
C^T = \begin{pmatrix}1 & 0 & 2 \\ 2 & 5 & 4 \\ 3 & 1 & 7\end{pmatrix}
$$
### Orthogonal Matrices
A matrix, $A$, such that
$$A^{-1} = A^T$$
is said to be orthogonal.
Another way to say this is
$$AA^T = A^TA = I$$
### Symmetric Matrices
A square matrix which is symmetric about its leading diagonal:
$$A = A^T$$
You can also express this as the matrix $A$, where
$$a_{ij} = a_{ji}$$
is satisfied to all elements.
<details>
<summary>
#### Example 1
</summary>
$$\begin{pmatrix}
1 & 0 & -1 & 3 \\
0 & 3 & 4 & -1 \\
-2 & 4 & -1 & 6 \\
3 & -7 & 6 & 2
\end{pmatrix}$$
</details>
### Anti-Symmetric
A square matrix is anti-symmetric if
$$A = -A^T$$
This can also be expressed as
$$a_{ij} = -a_{ji}$$
This means that all elements on the leading diagonal must be 0.
<details>
<summary>
#### Example 1
</summary>
$$\begin{pmatrix}
0 & -1 & 5 \\
1 & 0 & 1 \\
-5 & -1 & 0
\end{pmatrix}$$
</details>
## The Determinant
### Determinant of a 2x2 System
The determinant of a $2x2$ system is
$$D = a_{11}a_{22} - a_{12}a_{21}$$
It is denoted by
$$
\begin{vmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}
\end{vmatrix}
\text{ or }
\det
\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}
\end{pmatrix}
$$
- A system of equations has a unique solution if $D \ne 0$
- If $D = 0$, then there are either
- no solutions (the equations are inconsistent)
- intinitely many solutions
### Determinant of a 3x3 System
Let
$$
A = \begin{pmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33}
\end{pmatrix}
$$
\begin{align*}
\det A = &a_{11} \times \det \begin{pmatrix}a_{22} & a_{23} \\ a_{32} & a_{33} \end{pmatrix} \\
&-a_{12} \times \det \begin{pmatrix}a_{21} & a_{23} \\ a_{31} & a_{33} \end{pmatrix} \\
&+a_{13} \times \det \begin{pmatrix}a_{21} & a_{22} \\ a_{31} & a_{32} \end{pmatrix}
\end{align*}
The $2x2$ matrices above are created by removing any elements on the same row or column as its corresponding
coefficient:
![](./images/vimscrot-2021-11-02T16:19:40,013146580+00:00.png)
### Chessboard Determinant
$\det A$ may be obtained by expanding out any row or column.
To figure out which coefficients should be subtracted and which ones added use the chessboard
pattern of signs:
$$\begin{pmatrix} + & - & + \\ - & + & - \\ + & - & + \end{pmatrix}$$
### Properties of Determinants
- $$\det A = \det A^T$$
- If all elements of one row of a matrix are multiplied by a constant $z$, the determinant of the
new matrix is $z$ times the determinant of the original matrix:
\begin{align*}
\begin{vmatrix} za & zb \\ c & d \end{vmatrix} &= zad - zbc \\
&= z(ad-bc) \\
&= z\begin{vmatrix} a & b \\ c & d \end{vmatrix}
\end{align*}
This is also true if a column of a matrix is mutiplied by a constant.
**Application** if the fator $z$ appears in each elements of a row or column of a determinant it
can be factored out
$$\begin{vmatrix}2 & 12 \\ 1 & 3 \end{vmatrix} = 2\begin{vmatrix}1 & 6 \\ 1 & 3 \end{vmatrix} = 2 \times 3
\begin{vmatrix} 1 & 2 \\ 1 & 1 \end{vmatrix}$$
**Application** if all elements in one row or column of a matrix are zero, the value of the
determinant is 0.
$$\begin{vmatrix} 0 & 0 \\ c & d \end{vmatrix} = 0\times d - 0\times c = 0$$
**Application** if $A$ is an $n\times n$ matrix,
$$\det(zA) = z^n\det A$$
- Swapping any two rows or columns of a matrix changes the sign of the determinant
\begin{align*}
\begin{vmatrix} c & d \\ a & b \end{vmatrix} &= cb - ad \\
&= -(ad - bc) \\
&= -\begin{vmatrix} a & b \\ c & d \end{vmatrix}
\end{align*}
**Application** If any two rows or two columns are identical, the determinant is zero.
**Application** If any row is a mutiple of another, or a column a multiple of another column, the
determinant is zero.
- The value of a determinant is unchanged by adding to any row a constant multiple of another row,
or adding to any column a constant multiple of another column
- If $A$ and $B$ are square matrices of the same order then
$$\det(AB) = \det A \times \det B $$
## Inverse of a Matrix
If $A$ is a square matrix, then its inverse matrix is $A^{-1}$ and is defined by the property that:
$$A^{-1}A = AA^{-1} = I$$
- Not every matrix has an inverse
- If the inverse exists, then it is very useful for solving systems of equations:
\begin{align*}
A\pmb{x} = \pmb b \rightarrow A^{-1}A\pmb x &= A^{-1}\pmb b \\
I\pmb x &= A^{-1}\pmb b \\
\pmb x &= A^{-1}\pmb b
\end{align*}
Therefore there must be a unique solution to $A\pmb x = \pmb b$: $\pmb x = A^{-1}\pmb b$.
- If $D = EF$ then
$$D^-1 = (EF)^{-1} = F^{-1}E^{-1}$$
### Inverse of a 2x2 Matrix
If $A$ is the $2x2$ matrix
$$
A = \begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}
\end{pmatrix}
$$
and its determinant, $D$, satisfies $D \ne 0$, $A$ has the inverse $A^{-1}$ given by
$$
A^{-1} = \frac 1 D \begin{pmatrix}
a_{22} & -a_{12} \\
-a_{21} & a_{11}
\end{pmatrix}
$$
If $D = 0$, then matrix $A$ has no inverse.
<details>
<summary>
#### Example 1
Find the inverse of matrix $A = \begin{pmatrix} -1 & 5 \\ 2 & 3 \end{pmatrix}$.
</summary>
1. Calculate the determinant
$$\det A = -1 \times 3 - 5 \times 2 = -13$$
Since $\det A \ne 0$, the inverse exists.
2. Calculate $A^{-1}$
$$ A^{-1} = \frac 1 {-13} \begin{pmatrix} 3 & -5 \\ -2 & -1\end{pmatrix}$$

View File

@@ -0,0 +1,322 @@
---
author: Akbar Rahman
date: \today
title: MMME1026 // Vectors
tags:
- uni
- nottingham
- mechanical
- engineering
- mmme1026
- maths
- vectors
uuid: ef1669d9-b8c3-4813-8b33-5764a2f57a55
---
Vectors have a *magnitude* (size) and *direction*.
Examples of vectors include force, velocity, and acceleration.
In type, vectors are notated in **bold**: $\pmb{a}$.
In handwriting is is \underline{underlined}.
# Vector Algebra
## Equality
Two vectors are said to be equal if their magnitudes and directions are equal.
You can also do this by checking if their vertical and horizontal components are equal.
## Addition
Two vectors, $\pmb{a}$ and $\pmb{b}$, can be summed together by summing their components.
You can also do this graphically by drawing $\pmb{a}$ and then $\pmb{b}$ by putting its tail on
the tip of $\pmb{a}$.
The sum of the vectors is from the tail of $\pmb{a}$ to the tip of $\pmb{b}$:
![](./images/vimscrot-2022-02-18T16:34:17,290235454+00:00.png)
Vector addition is associative[^d_associative] and commutative[^d_commutative].
## Zero Vector
The *zero vector* is denoted by $\pmb{0}$ and has zero magnitude and arbitrary direction.
$$\pmb{a} + \pmb 0 = \pmb a$$
If $\pmb a + \pmb b = 0$ then it is normal to write
$$\pmb b = -\pmb a$$
$-\pmb a$ is a vector with the same magnitude to $\pmb a$ but opposite direction.
## Multiplication
### Multiplication by a Scalar
Let $k$, an arbitrary scalar and $\pmb a$, an arbitrary vector.
- $k\pmb a$ is a vector of magnitude $|k|$ times that of $\pmb a$ and is parralel to it
- $0\pmb a = 0$
- $1\pmb a = a$
- $(-k)\pmb a = -(k\pmb a)$
- $(-1)\pmb a = -\pmb a$
- $k(\pmb a + \pmb b) = k\pmb a + k\pmb b$
- $(k_1 + k_2)\pmb a = k_1\pmb a + k_2\pmb a$
- $(k_1k_2)\pmb a = k_1(k_2\pmb a)$
### The Scalar Product (Inner Product, Dot Product)
The scalar product of two vectors $\pmb a$ and $\pmb b$ is a scalar defined by
$$\pmb a \cdot \pmb b = |\pmb a||\pmb b|\cos\theta = a_1b_1 + a_2b_2 + a_3b_3$$
where $\pmb a = (a_1, a_2, a_3)$ and $\pmb b = (b_1, b_2, b_3)$
where $\theta$ is the angle between the two vectors (note that $\cos\theta = \cos(2\pi - \theta)$).
This definition does not depend on a coordinate system.
- The dot product is commutative[^d_commutative]
- The dot product is distributive[^d_distributive]
- If $\pmb a$ is perpendicular to $\pmb b$, then $\pmb a \cdot \pmb b = 0$ and they are said to be
orthogonal
- If $\pmb a \cdot \pmb b = 0$ then either
i. The vectors are orthogonal
ii. One or both of the vectorse are zero vectors
- $\pmb a \cdot \pmb a = |\pmb a|^2 = a^2$
The base vectors are said to be *orthonormal* when $\pmb i^2 = \pmb j^2 = \pmb k^2 = 1$ and
$i\cdot j = i\cdot k = j\cdot k = 0$.
### The Vector Product (Cross Product)
The vector product between two vectors is defined by:
$$\pmb a \times \pmb b = |\pmb a||\pmb b|\sin\theta \hat{\pmb n}$$
where $0 \le \theta \le \pi$ is the angle between $\pmb a$ and $\pmb b$ and $\pmb n$ is a unit
vector such that the three vectors from a right handed system:
![](./images/vimscrot-2022-02-18T20:11:12,072203286+00:00.png)
- $\pmb a \times \pmb b = -\pmb b \times \pmb a$ (the vector product is anti-commutative[^d_commutative])
- If $\pmb a \times \pmb b = 0$ then either
i. The vectors are parallel
ii. One or both of the vectors are a zero vector
- $(k_1\pmb a)\times(k_2\pmb b) = (k_1k_2)(\pmb a \times \pmb b)$ where $k_1$, $k_2$ are scalars
- If $\pmb a = (a_1, a_2, a_3)$ and $\pmb b = (b_1, b_2, b_3)$ then
$$\pmb a \times \pmb b = (a_2b_3 - a_3b_2, a_1b_3-a_3b_1, a_1b_2-a_2b_1)$$
- In the notation of determinants, provided we **expand by row 1**:
$$\pmb a \times \pmb b = \begin{vmatrix} \pmb i & \pmb j & \pmb k \\ a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \end{vmatrix}$$
This is technically not a determinant because not all the elements are numbers but shhhhhh...
### Scalar Triple Product (and co-planar vectors)
\begin{align*}
[ \pmb a, \pmb b, \pmb c ] &= \pmb a \cdot (\pmb b \times \pmb c) \\
&= \pmb b \cdot (\pmb c \times \pmb a) \\
&= \pmb c \cdot (\pmb a \times \pmb b) \\
&= (\pmb b \times \pmb c) \cdot \pmb a \\
&= (\pmb c \times \pmb a) \cdot \pmb b \\
&= (\pmb a \times \pmb b) \cdot \pmb c
\end{align*}
In terms of determinants:
$$
[ \pmb a, \pmb b, \pmb c ] = \begin{vmatrix}
a_1 & a_2 & a_3 \\
b_1 & b_2 & b_3 \\
c_1 & c_2 & c_3
\end{vmatrix}
$$
If $[\pmb a, \pmb b, \pmb c] = 0$ then the vectors are coplanar.
The absolute value of the scalar triple product reperesents the volume of the parallelepiped defined
by those vectors:
![](./images/vimscrot-2022-02-18T20:27:53,322534334+00:00.png)
## The Unit Vector
$$\hat{\pmb a}= \frac{\pmb a}{|\pmb a|}$$
## Components of a Vector
The component of a vector $\pmb a$ in the direction of the **unit vector** $\hat{\pmb n}$ is
$$\pmb a \cdot \hat{\pmb n}$$
![](./images/vimscrot-2022-02-18T20:34:50,128465689+00:00.png)
Vectors are often written in terms of base vectors, such as the Cartesian system's $\pmb i$,
$\pmb j$, and $\pmb k$ in three dimensions.
![](./images/vimscrot-2022-02-18T19:31:50,686289623+00:00.png)
These vectors have unit magnitude, are perpendicular to each other, and are right handed.
If $\pmb a = a_1\pmb i + a_2\pmb j + a_3\pmb k$ then the scalars $a_1$, $a_2$, and $a_3$ are the
*components* of the vector (relative to the base vectors).
### Vector Projections
The *vector projection* of $\pmb a$ onto $\hat{\pmb n}$ is given by
$$(\pmb a \cdot \hat{\pmb n})\hat{\pmb n}$$
![](./images/vimscrot-2022-02-18T21:40:15,724449945+00:00.png)
They look like the same as [vector components](#components-of-a-vector) to me...
no idea what the difference is but uh StackExchange says
([permalink](https://physics.stackexchange.com/a/537690)):
> As pointed out, the projection and component actually refers to the same thing.
> To solve a problem like this it useful to introduce a coordinate system, as you mentioned yourself
> you project onto the x-axis.
> As soon as you introduce a coordinate system you can talk about the components of some vector.
## Position Vectors
If an origin $O$ is fixed, then any point $P$ in space may be represented by the vector $\pmb r$
which has a magnitude and direction given by the line $\overrightarrow{OP}$.
A point $(x, y, z)$ in Cartesian space has the position vector $r = x\pmb i + y\pmb j + z\pmb k$.
## Angle Between Vectors
By rearranging the [dot product equation](#the-scalar-product-inner-product-dot-product) you can get
an equation to find the angle, $\theta$, between two vectors:
$$\cos\theta = \frac{\pmb a \cdot \pmb b}{|\pmb a||\pmb b|} = \frac{a_1b_1 + a_2b_2 + a_3b_3}{|\pmb a ||\pmb b|}$$
# Applications of Vectors
## Application of Vectors to Geometry
### Area of a Parallelogram
$$area = |\pmb a||\pmb b|\sin\theta = |\pmb a \times \pmb b|$$
### Volume of a Parallelepiped
$$volume = | [ \pmb a, \pmb, b, \pmb c ] |$$
### Equation of a Straight Line
A straight line can be specified by
- two points it passes
- one point it passes and a direction
If $\pmb a$ and $\pmb b$ are the position vectors of two distinct points, then the position vectors
of an arbitrary point on the line joining these points is:
$$\pmb r = \pmb a + \lambda(\pmb b - \pmb a)$$
where $\lambda \in \Re$ is a parameter.
![](./images/vimscrot-2022-02-18T21:55:30,367159917+00:00.png)
Suppose $O$ is an origin and $\pmb a$, $\pmb b$, and $\pmb r$ are position vectors on the line such
that
\begin{align*}
\pmb a &= (x_0, y_0, z_0) \\
\pmb b &= (x_1, y_1, z_1) \\
\pmb r &= (x, y, z)\\
\\
(x, y, z) &= (x_0, y_0, z_0) + \lambda((x_1, y_1, z_1) - (x_0, y_0, z_0)) \\
\\
x &= x_0 + \lambda(x_1-x_0) \\
y &= y_0 + \lambda(y_1-y_0) \\
z &= z_0 + \lambda(z_1-z_0) \\
\\
\lambda &= \frac{x-x_0}{x_1-x_0} = \frac{y-y_0}{y_1-y_0} = \frac{z-z_0}{z_1-z_0}
\end{align*}
In the above, the vector $\pmb b - \pmb a$ is in the direction of the line.
Thus the equation of a line can be specified by giving a point it passes through ($\pmb a$, say) and
the direction of the line ($\pmb d = (d_1, d_2, d_3)$, say).
The vector equation is then
$$\pmb r = \pmb a + \lambda\pmb d$$
#### The Cartesian Equation
$$\frac{x-x_0}{d_1} = \frac{y-y_0}{d_2} = \frac{z-z_0}{d_3}$$
### Equation of a Plane
A *plane* can be defined by specifying either:
- three points (as long as they're not in a straight line)
- a point on the plane and two directions (useful for a parametric form)
- specifying a point on the plane and the normal vector to the plane
#### Specifying a Point and a Normal Vector
Let $\pmb a$ be the position vector of a point on the plane, and $\pmb n$ a normal vector to the
plane.
If $\pmb r$ is the position vector of an arbitrary point on the plane, then $\pmb r - \pmb a$ is a
vector lying *in* the plane, so
$$(\pmb r - \pmb a) \cdot \pmb n = 0$$
So the *vector equation* of the plane is
$$\pmb r \cdot \pmb n = \pmb a \cdot \pmb n = D$$
where $\pmb r = (x, y, z)$ and the vectors $\pmb a$ and $\pmb n$ are known.
Suppose $\pmb a$, $\pmb n$, and $\pmb r$ are given by
\begin{align*}
\pmb a &= (x_0, y_0, z_0) \\
\pmb n &= (l, m, p) \\
\pmb r &= (x, y, z)\\
\text{then } 0 &= ((x, y, z) - (x_0, y_0, z_0))\cdot(l, m, p)
\end{align*}
#### Specifying Three Points on a Plane
If we specify three points on a plane with position vectors $\pmb a$, $\pmb b$, and $\pmb c$ the
vectors $\pmb c - \pmb a$ and $\pmb c - \pmb b$ lie *in* the plane.
(The vectors $\pmb a$, $\pmb b$, and $\pmb c$ do not necessarily lie *in* the plane;
rather they take you from $O$ **to** the plane.)
The normal to the plane, $\pmb n$, is then parallel to
$$(\pmb c - \pmb a)\times(\pmb c - \pmb b)$$
and so the equation of the plane is
$$(\pmb r - \pmb a)\cdot((\pmb c - \pmb a)\times(\pmb c - \pmb b)) = 0$$
#### The Angle Between Two Planes
... is the same as the angle between their normal vectors
[^d_associative]: The grouping of elements in in an operation do not matter (e.g. scalar addition: $a+(b+c) = (a+b)+c$)
[^d_commutative]: The order of elements in an operation do not matter (e.g. scalar addition: $a+b = b+a$)
[^d_distributive]: Easiest to explain with examples. Scalar multiplication is said to be distributive because $(a+b)c = ac + bc$

View File

@@ -0,0 +1,72 @@
---
author: Akbar Rahman
date: \today
title: MMME1028 // Dynamics
tags: [ uni, mmme1028, dynamics ]
uuid: e6d3a307-b2e6-40e3-83bb-ef73512d69ad
---
# Circular Motion
$$a_c = r\omega^2$$
$$a = r\alpha \hat{e}_\theta - r\omega^2\hat{e}_r$$
## Moment of Inertia
$$J = mr^2 = \frac{M}{\ddot\theta}$$
The unit of $J$ is kgm$^2$.
Consider a particle of mass $m$ attached to one end of a rigid rod of length $r$.
The rod is pivoting at its other end about point $O$, and experiences a torque $M$.
This torque will cause the mass and the rod to rotate about $O$ with angular velocity
$\dot{\theta}$ an angular acceleration $\ddot{\theta}$.
![](./images/vimscrot-2022-03-10T14:40:59,716300890+00:00.png)
What is the expression for $M$?
Well if break down the moment $M$ into a force, $F$, acting on the mass, we know that the
moment $M = Fr$.
We know $F = ma$, and this case $a = r\ddot{\theta}$ so $M = mr^2\ddot\theta$.
The moment of inertia is $J = mr^2$ so $M = J\ddot\theta$.
If multiple torques are applied to a body the *rotational equation* of the motion is
$$\overrightarrow{M} = \sum_i \overrightarrow{M}_i = J \overrightarrow{\ddot\theta} = J \overrightarrow{\alpha}$$
The moment of inertia of any object is found by considering the object to be made up of lots of
small particles and adding the moments of inertia for each small particle.
The moments of inertia for a body depends on the mass and its distribution about the axis in
consideration.
$$J = \sum_i m_ir^2_i \rightarrow \int\! r^2 \mathrm{d}m$$
### Perpendicular Axis Rule
The perpendicular axis rule states that, for lamina object:
$$J_z = J_x + J_y$$
where $J_x$, $J_y$, and $J_z$ are the moments of inertia along their respective axes.
### Parallel Axes Rule (Huygens-Steiner Theorem)
The parallel axes rule states that:
$$J_A = J_G = md^2$$
where $d$ is the perpendicular distance between the two axes.
![](./images/vimscrot-2022-03-10T15:06:48,355133323+00:00.png)
### Moment of a Compound Object
The moment of inertia for any compound object can be calculated by adding and subtracting the
moments of inertia for its 'standard' components.
### Moment of Inertia of Standard Objects
// TODO

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,583 @@
---
author: Alvie Rahman
date: \today
tags:
- uni
- nottingham
- mechanical
- engineering
- mmme1028
- maths
- statics
- dynamics
title: MMME1028 // Statics
uuid: 2ddad9d0-b085-4602-aca9-c573351558ba
---
# Lecture L1.1, L1.2
### Lecture L1.1 Exercises
Can be found [here](./lecture_exercises/mmme1028_l1.1_exercises_2021-09-30.pdf).
### Lecture L1.2 Exercises
Can be found here [here](./lecture_exercises/mmme1028_l1.2_exercises_2021-10-04.pdf)
## Newton's Laws
1. Remains at constant velocity unless acted on by external force
2. Sum of forces on body is equal to mass of body multiplied by
acceleration
> 1st Law is a special case of 2nd
3. When one body exerts a force on another, 2nd body exerts force
simultaneously of equal magnitude and opposite direction
## Equilibrium
- Body is in equilibrium if sum of all forces and moments acting on
body are 0
<details>
<summary>
### Example
Determine force $F$ and $x$ so that the body is in equilibrium.
</summary>
![](./images/vimscrot-2021-10-04T09:14:41,378027532+01:00.png)
1. Check horizontal equilibrium
$\sum{F_x} = 0$
2. Check vertical equilibrium
$\sum{F_y} = 8 - 8 + F = 0$
$F = 2$
3. Take moments about any point
$\sum{M(A)} = 8\times{}2 - F(2+x) = 0$
$F(2+x) = 16)$
$x = 6$
</details>
## Free Body Diagrams
A free body diagram is a diagram of a single (free) body which shows all
the external forces acting on the body.
Where there are several bodies or subcomponents interacting as a complex
system, each body is drawn separately:
![](./images/vimscrot-2021-10-04T09:23:03,892292648+01:00.png)
## Friction
- Arises between rough surfaces and always acts at right angles to the
normal reaction force ($R$) in the direction to resist motion.
- The maximum value of friction $F$ is $F_{max} = \mu{}R$, where
$\mu{}$ is the friction coefficient
- $F_{max}$ is also known as the point of slip
## Reactions at Supports
There are three kinds of supports frequently encountered in engineering
problems:
![](./images/vimscrot-2021-10-04T09:41:56,080077960+01:00.png)
## Principle of Force Transmissibility
A force can be move dalong line of action without affecting equilibrium
of the body which it acts on:
![](./images/vimscrot-2021-10-04T09:43:04,689667620+01:00.png)
This principle can be useful in determining moments.
## Two-Force Bodies
- If a body has only 2 forces, then the forces must be collinear,
equal, and opposite:
![](./images/vimscrot-2021-10-04T09:44:05,581697277+01:00.png)
> The forces must be collinear so a moment is not created
## Three-Force Bodies
- If a body in equilibrium has only three forces acting on it, then
the lines of actions must go through one point:
![](./images/vimscrot-2021-10-04T09:55:59,773394306+01:00.png)
> This is also to not create a moment
- The forces must form a closed triangle ($\sum{F} = 0$)
## Naming Conventions
<div class="tableWrapper">
| Term | Meaning |
|----------------------|----------------------------------------------------------|
| light | no mass |
| heavy | body has mass |
| smooth | there is no friction |
| rough | contact has friction |
| at the point of slip | one tangential reaction is $F_{max}$ |
| roller | a support only creating normal reaction |
| rigid pin | a support only providing normal and tangential reactions |
| built-in | a support proviting two reaction components and a moment |
</div>
## Tips to Solve (Difficult) Problems
1. Make good quality clear and big sketches
2. Label all forces, dimensions, relevant points
3. Explain and show your thought process---write complete equations
4. Follow standard conventions in equations and sketches
5. Solve everything symbolically (algebraicly) until the end
6. Check your answers make sense
7. Don't forget the units
# Lecture L1.4
## Tension and Compression
- The convention in standard mechanical engineering problems is that positive values are for
tension and negative values for compression
- Members in tension can be replaces by cables, which can support tension but not compression
- Resisting compression is harder as members in compression can buckle
## What is a Pin Joint?
- Pin jointed structures are structures where joints are pinned (free to rotate)
- Pin joints are represented by a circle (pin) about which members are free to rotate:
![](./images/vimscrot-2021-10-18T09:14:14,289274419+01:00.png)
- A pin joint transmits force but cannot carry a moment
## What is a Truss?
- Trusses are an assembly of many bars, which are pin jointed in design but do not rotate due to
the geometry of the design. A pylon is a good example of this
- Trusses are used in engineering to transfer forces through a structure
- When pin jointed trusses are loaded at the pins, the bars are subjected to pure tensile or
compressive forces.
These bars are two force members
## Equilibrium at the Joints
![](./images/vimscrot-2021-10-18T09:19:44,218728293+01:00.png)
![](./images/vimscrot-2021-10-18T09:20:55,909323283+01:00.png)
### Forces at A
$$\sum F_y(A) = \frac P 2 + T_{AB}\sin{\frac \pi 4} = 0 \rightarrow T_{AB} = -\frac P 2$$
\begin{align*}
\sum F_x(A) &= T_{AB}\cos{\frac pi 4} + T_{AC} = 0 \\
T_AC &= -\frac{-P} 2 \times \frac{\sqrt{2}} 2 = \frac P 2
\end{align*}
### Forces at B
Add the information we just obtained from calculating forces at A:
![](./images/vimscrot-2021-10-18T09:30:57,113760253+01:00.png)
And draw a free body diagram for the forces at B:
![](./images/vimscrot-2021-10-18T09:31:09,513726429+01:00.png)
$$
\sum F_y(B) = -\frac{-P} 2 \sin{\frac \pi 4} - T_{BC} = 0 \rightarrow
T_{BC} = \frac P {\sqrt 2} \times \frac {\sqrt 2} 2 = \frac P 2
$$
\begin{align*}
\sum F_x(B) &= -\frac{-P}{\sqrt2}\cos{\frac \pi 4} + T_{BD} = 0 \\
T_{BD} &= -\frac P 2
\end{align*}
## Symmetry in Stuctures
Symmetry of bar forces in a pin jointed frame depends on to aspects:
1. Symmetry of the stucture
2. Symmetry of the loading (forces applied)
Both conditions must be met to exploit symmetry.
# Lecture L1.5, L1.6
## Method of Sections
The method of sections is very useful to find a few forces inside a complex structure.
If an entire section is in equilibrium, so are discrete parts of the same structure.
This means we an isolate substructures and draws free body diagrams for them.
We must add all the forces acting on the substructure.
Then we make a virtua cut through some of the members, replacing them with forces.
Then we can write 3 equilibrium equations for the substructure:
1. 1 Horizontal, 1 vertical, and 1 moment equation
2. Either horizonal or vertical and 2 moment equations
3. 3 moment equations
<details>
<summary>
### Example 1
</summary>
Draw a virtual cut through the structure, making sure to cut through all the bars whose forces
you are trying to find:
![](./images/vimscrot-2021-10-18T09:54:16,538381701+01:00.png)
Draw the free body diagram, substituting cut bars by forces:
![](./images/vimscrot-2021-10-18T09:54:44,339423030+01:00.png)
As there are three unknown forces, we need three equilibrium equations.
#### First Equation: Moments about E
\begin{align*}
\sum M(E) &= \frac P 2 \times 2L + T_{DF}L = 0 \\
T_{DF} &= -P
\end{align*}
#### Second Equation: Vertical Equilibrium
\begin{align*}
\sum F_y &= \frac P 2 + T_{EF}\sin{\frac \pi 4} = 0 \\
T_{EF} &= -\frac P {\sqrt2}
\end{align*}
#### Third Equation: Horizontal Equilibrium
\begin{align*}
\sum F_x = T_{DF} + T_{EF}\cos{\frac \pi 4} + T_{EG} = 0 \\
T_{EG} = \frac {3P} 2
\end{align*}
#### Taking Moments from Outside the Structure
If we only needed EG, we could have taken moments about point F, outside our substructure:
![](./images/vimscrot-2021-10-18T10:03:11,111898958+01:00.png)
\begin{align*}
\sum M(F) &= \frac P 2 \times 3L -T_{EG}L = 0 \\
T_{EG} &= \frac {3P} 2
\end{align*}
</details>
## Zero-Force Members
![](./images/vimscrot-2021-10-18T10:24:40,832835425+01:00.png)
Consider the free body diagram for the joint at G:
![](./images/vimscrot-2021-10-18T10:25:19,289848899+01:00.png)
$$\sum F_y(G) = T_{FG} = 0$$
$$\sum F_x(G) = -T_{EG} + T_{GJ} = 0 \rightarrow T_{EG} = T_{GJ}$$
Meaning that the structure is effecively the same as this one:
![](./images/vimscrot-2021-10-18T10:28:27,972396634+01:00.png)
Why was it there?
- The structure may be designed for other loading patterns
- The bar may prevent the struture from becoming a mechanism
- A zero force member may also be there to prevent buckling
## Externally Applied Moments
Externally applied moments are dealt with in the same way as external forces, but they only
contribute to moment equations and not force equilibrium equations.
## Distributed Load
A distriuted load is applied uniformly to a bar or section of a bar.
It can be represented by a single force through the midpoint its midpoint.
![](./images/vimscrot-2021-10-18T10:40:12,204385456+01:00.png)
<details>
<summary>
### Example 1
</summary>
![](./images/vimscrot-2021-10-18T10:41:13,789765944+01:00.png)
Is equivalent to:
![](./images/vimscrot-2021-10-18T10:41:49,859420913+01:00.png)
</details>
## Equivalent Loads
When loads are applied within a bar, as far as support reactions and bar forces in *other* bars
are concered, we can determine *equivalent node forces* using equilibrium
![](./images/vimscrot-2021-10-18T10:44:51,867483875+01:00.png)
# Lecture L1.6
<details>
<summary>
### Example 1
The figure shows a light roof truss loaded by a force $F = 90$ kN at 45\textdegree to the horizontal
at point $B$.
</summary>
![](./images/vimscrot-2021-10-18T14:42:45,045976929+01:00.png)
a. Find the reaction forces at A and D using equilibrium applied to the whole structure.
> 1. Add unknown quantities to the diagram
>
> ![](./images/vimscrot-2021-10-18T14:44:02,679972841+01:00.png)
>
> 2. Consider the number of unknowns --- there are 3 therefore 3 equations are needed
> 3. Decide which equilibrium equation to start with
>
> Horizontal equilibrium:
>
> \begin{align*}
\sum F_x &= R_{Ax} - F\cos45 = 0 \\
R_{Ax} &= 63.6\text{ kN}
> \end{align*}
>
> Vertical equilibrium:
>
> \begin{align*}
\sum F_y &= R_{Ay} + R_{Dy} - F\sin = 0 \\
R_{Ay} + R_{Dy} &= \frac{\sqrt2 F} 2
> \end{align*}
>
> Moment equation:
>
> \begin{align*}
> \sum M_{xy}(B) &= 4.5R_{Ay} - 4.5R_{Dy} - L_{BC}R_{Ax} = 0 \\
> \frac{L_{BC}}{4.5} &= \tan30 = \frac 1 {\sqrt3} \rightarrow L_{BC} = 2.6 \\
> \end{align*}
>
> 4. Solve for $R_{Ay}$
>
> \begin{align*}
> 4.5R_{Ay} &= 4.5R_{Dy} + 2.6\times\frac{\sqrt2 F}{2} & R_{Dy} = \frac{\sqrt2 F}{2} - R_{Ay} \\
> 4.5R_{Ay} &= 4.5\left(\frac{\sqrt2 F}{2} - R_{Ay}\right) + 2.6\times\frac{\sqrt2 F}{2} \\
> R_{Ay} &= 0.56F = 50.2\text{ kN}
> \end{align*}
>
> 5. Substitute to find $R_{Dy}$
>
> \begin{align*}
> R_{Dy} = \frac{\sqrt2 F}{2} - R_{Ay} = (0.71-0.56)F = 13.3\text{ kN}\\
> \end{align*}
b. Use the graphical/trigonometric method o check your answer.
> Write the reaction at A as a single force with unknown direction:
>
> ![](./images/vimscrot-2021-10-18T15:13:15,369363473+01:00.png)
>
> When three forces act on an object in equilibrium, they must:
>
> 1. Make a triangle of forces
> 2. Go through a single point
>
> So we can figure out the angle of $R_{A}$ by drawing it such that all the lines of action of
> all forces go through the same point:
>
> ![](./images/vimscrot-2021-10-18T15:19:58,074989197+01:00.png)
>
> \begin{align*}
L_{DE} &= L_{BC} = 2.6 \\
L_{EG} &= \tan45\times L_{BE} = 4.5 \\
L_{DE} &= 2.6+4.5 = 7.1 \\
\\
\tan\theta &= \frac{L_{DG}}{L_{AD}} = 0.79 \\
\theta &= 38.27
> \end{align*}
>
> Now draw the force triangle:
>
> ![](./images/vimscrot-2021-10-18T15:30:35,135421357+01:00.png)
>
> Using the sine rule we find out $R_A$ and $R_{Dy}$, which are $81.1$ kN and $13.4$ kN,
> respectively.
>
> Now we can check our answers in part (a) and (b) are the same:
>
> - $R_{Dy} = 13.4$
> - $R_{Ax} = 81.1\cos38.27 = 63.6$
> - $R_{Ay} = 81.1\sin.27 = 50.2$
>
> The methods agree.
</details>
# Lecture L2.1
## Hooke's Law and Young's Modulus
Hooke's law states that the extension of an object experiencing a force is proportonal to the force.
We can generalize this to be more useful creating:
- Direct stress:
$$ \sigma = \frac F {A_0} $$
- Direct strain:
$$ \epsilon = \frac {\Delta L}{L_0} $$
Using these more generalized variables, Young defined Young's Modulus, $E$, which is a universal
constant of stiffness of a material.
$$ \sigma = E\epsilon $$
<details>
<summary>
#### Example 1
Calculating Young's Modulus of a Piece of Silicone
</summary>
\begin{align*}
L_0 &= 4.64 \\
w_0 &= 0.10 \\
t_0 &= 150\times10^{-6} \\
F &= 1.40\times9.81 \\
L &= 6.33 \\
w &= 0.086 \\
t &= 125\times10^{-6} \\
\\
\sigma &= \frac F {A_0} = \frac F {w_0t_0} = \frac{1.4\times9.81}{0.1\times150\times10^{-6}} = 915600 \\
\epsilon &= \frac{\Delta L}{L_0} = \frac{6.33 - 4.64}{4.64} = 0.36422...\\
E &= \frac \sigma \epsilon = 2513836.686 = 2.5\times10^6 \text{ Pa}
\end{align*}
</details>
## Stress Strain Curves
![](./images/vimscrot-2021-11-01T09:50:51,184232288+00:00.png)
## Poisson's Ratio
For most materials, their cross sectionts change when they are stretched or compressed.
This is to keep their volume constant.
$$ \epsilon_x = \frac {\Delta L}{L_0} $$
$$ \epsilon_y = \frac {\Delta w}{w_0} $$
$$ \epsilon_z = \frac {\Delta t}{t_0} $$
Poisson's ratio, $\nu$ (the greek letter _nu_, not v), is the ratio of lateral strain to axial
strain:
$$ \nu = \frac{\epsilon_y}{\epsilon_x} = \frac{\epsilon_z}{\epsilon_x} $$
<details>
<summary>
#### Example 1
Measuring Poisson's Ratio
</summary>
\begin{align*}
L_0 &= 4.64 \\
w_0 &= 0.10 \\
t_0 &= 150\times10^{-6} \\
\\
L &= 6.33 \\
w &= 0.086 \\
t &= 125\times10^{-6} \\
\\
\epsilon_x &= \frac {\Delta L}{L_0} = 0.364 \\
\epsilon_y &= \frac {\Delta w}{w_0} = -0.14 \\
\epsilon_z &= \frac {\Delta t}{t_0} = -0.167 \\
\\
\nu_y &= \frac{\epsilon_y}{\epsilon_x} = \frac{-0.14}{0.364} = -0.38 \\
\nu_z &= \frac{\epsilon_z}{\epsilon_x} = \frac{-0.167}{0.364} = -0.46 \\
\end{align*}
It's supposed to be that $\nu_y = \nu_z$ but I guess it's close enough right? lol
</details>
## Typical Values of Young's Modulus and Poisson's Ratio
Material | Young's Modulus / GPa | Poisson's Ratio
-------- | --------------------- | ---------------
Steel | 210 | 0.29
Aluminum | 69 | 0.34
Concrete | 14 | 0.1
Nylon | 3 | 0.4
Rubber | 0.01 | 0.495
## Direct Stresses and Shear Stresses
![](./images/vimscrot-2021-11-01T10:35:47,339443980+00:00.png)
- A direct stress acts normal to the surface
- A shear stress acts tangential to the surface
Shear stress is defined in the same way as direct stress but given the symbol $tau$ (tau):
$$ \tau = \frac F A $$
Shear strain is defined as the shear angle $\gamma$:
$$ \gamma \approx \tan\gamma = {\frac x {L_0}} $$
The shear modulus, $G$, is like Young's Modulus but for shear forces:
$$ \tau = G\gamma $$
## Relationship between Young's Modulus and Shear Modulus
$$ G = \frac E {2(1+\nu)} $$
$G \approx \frac E 3$ is a good approximation in a lot of engineering cases

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Some files were not shown because too many files have changed in this diff Show More