mirror of
https://gitlab.rlp.net/mobitar/julia_course.git
synced 2024-11-16 13:28:10 +00:00
Done tasks of day 5
This commit is contained in:
parent
e3aa717353
commit
485aa0079c
1 changed files with 226 additions and 0 deletions
226
Day_5/Tasks_day_5.jl
Normal file
226
Day_5/Tasks_day_5.jl
Normal file
|
@ -0,0 +1,226 @@
|
||||||
|
### A Pluto.jl notebook ###
|
||||||
|
# v0.18.4
|
||||||
|
|
||||||
|
using Markdown
|
||||||
|
using InteractiveUtils
|
||||||
|
|
||||||
|
# ╔═╡ b11b2fda-b13e-11ec-0b00-13a7cf45371c
|
||||||
|
md"""
|
||||||
|
# Four vectors
|
||||||
|
We want to define our own struct in Julia to deal with four vectors in physics.
|
||||||
|
|
||||||
|
Implement the following four vector operators by completing the code in the next cell in the `begin` block:
|
||||||
|
|
||||||
|
$v =
|
||||||
|
\begin{pmatrix}
|
||||||
|
ct \\
|
||||||
|
x \\
|
||||||
|
y \\
|
||||||
|
z
|
||||||
|
\end{pmatrix}$
|
||||||
|
|
||||||
|
$u =
|
||||||
|
\begin{pmatrix}
|
||||||
|
ct' \\
|
||||||
|
x' \\
|
||||||
|
y' \\
|
||||||
|
z'
|
||||||
|
\end{pmatrix}$
|
||||||
|
|
||||||
|
$v + u =
|
||||||
|
\begin{pmatrix}
|
||||||
|
ct + ct' \\
|
||||||
|
x + x' \\
|
||||||
|
y + y' \\
|
||||||
|
z + z'
|
||||||
|
\end{pmatrix}$
|
||||||
|
|
||||||
|
$-v =
|
||||||
|
\begin{pmatrix}
|
||||||
|
-ct \\
|
||||||
|
-x \\
|
||||||
|
-y \\
|
||||||
|
-z
|
||||||
|
\end{pmatrix}$
|
||||||
|
|
||||||
|
$v - u =
|
||||||
|
\begin{pmatrix}
|
||||||
|
ct - ct' \\
|
||||||
|
x - x' \\
|
||||||
|
y - y' \\
|
||||||
|
z - z'
|
||||||
|
\end{pmatrix}$
|
||||||
|
|
||||||
|
$v * u = ct * ct' - x * x' - y * y' - z * z'$
|
||||||
|
|
||||||
|
$|v|^2 = ct^2 - x^2 - y^2 - z^2$
|
||||||
|
|
||||||
|
You should implement $|v|^2$ as a function called `length_squared`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ╔═╡ 04c7c619-e770-415b-ad52-37e0e0e2d2f4
|
||||||
|
begin
|
||||||
|
mutable struct FourVector
|
||||||
|
# Add fields here
|
||||||
|
end
|
||||||
|
|
||||||
|
# To override a predefined function of a package, the function has to be imported
|
||||||
|
# In this case, the functions are from the package `Base` which has Julia's builtin functions
|
||||||
|
import Base: +, -, *, ^
|
||||||
|
|
||||||
|
(+)(v::FourVector, u::FourVector) = FourVector(
|
||||||
|
v.ct + u.ct,
|
||||||
|
v.x + u.x,
|
||||||
|
v.y + u.y,
|
||||||
|
v.z + u.z
|
||||||
|
)
|
||||||
|
|
||||||
|
#(-)(v::FourVector) = ?
|
||||||
|
|
||||||
|
#(-)(v::FourVector, u::FourVector) = ?
|
||||||
|
|
||||||
|
#(*)(v::FourVector, u::FourVector) = ?
|
||||||
|
end
|
||||||
|
|
||||||
|
# ╔═╡ 4b8da4d9-c880-405e-859e-81f5884d29bf
|
||||||
|
md"""
|
||||||
|
After defining everything above successfully, the cells below would not give you any error.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ╔═╡ 22590bad-ff7e-4189-b816-cb5b6e7232c4
|
||||||
|
v = FourVector(1.0, 1.0, 1.0, 1.0)
|
||||||
|
|
||||||
|
# ╔═╡ e49637f2-e174-4c82-923d-7caf37e5e41a
|
||||||
|
u = FourVector(2.0, 3.0, 4.0, 5.0)
|
||||||
|
|
||||||
|
# ╔═╡ 3a89512a-30a8-4cf6-9d8a-b090cee2e8a7
|
||||||
|
v == u
|
||||||
|
|
||||||
|
# ╔═╡ ab360d3d-0ec4-4718-a3b3-a6b90a167f6b
|
||||||
|
v == FourVector(1.0, 1.0, 1.0, 1.0)
|
||||||
|
|
||||||
|
# ╔═╡ 7fa11520-93a4-48bf-96fa-0f6e134deb96
|
||||||
|
v + u
|
||||||
|
|
||||||
|
# ╔═╡ 0353376b-94d6-40cf-9b28-18287c75ec69
|
||||||
|
v * u
|
||||||
|
|
||||||
|
# ╔═╡ 83be3070-c556-4c3d-aaca-93063ac91c64
|
||||||
|
-v
|
||||||
|
|
||||||
|
# ╔═╡ 8c1ca9ef-6ca4-4a3a-9ffb-8d8f39c9ee48
|
||||||
|
v - u
|
||||||
|
|
||||||
|
# ╔═╡ 5bee57cf-9c34-4e5c-974f-fcd2636f1300
|
||||||
|
length_squared(v)
|
||||||
|
|
||||||
|
# ╔═╡ 4a69ccd4-576c-4d31-b75b-8caa9c7159fa
|
||||||
|
md"""
|
||||||
|
# Chess matrices
|
||||||
|
Implement a function that takes an integer `n` as an arguement and returns a `n × n` matrix with a chess pattern using `1` and `0`.
|
||||||
|
|
||||||
|
The matrix elements have to be integers.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
$n = 3 \rightarrow \begin{pmatrix}
|
||||||
|
0 & 1 & 0 \\
|
||||||
|
1 & 0 & 1 \\
|
||||||
|
0 & 1 & 0 \\
|
||||||
|
\end{pmatrix}$
|
||||||
|
|
||||||
|
If you want to have more fun, implement the function again, but this time with the emojies ⬜️ and ⬛️ instead of 0 and 1 😹
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ╔═╡ 070e9dc2-884c-4a3b-873a-9a9ebf40c7c6
|
||||||
|
# Your code starts here
|
||||||
|
|
||||||
|
|
||||||
|
# ╔═╡ 61970ee5-bb70-465a-a940-257a5437574a
|
||||||
|
md"""
|
||||||
|
# Parsing Pauli matrices
|
||||||
|
In the directory `resources`, there are three files:
|
||||||
|
- `Matrix_1.txt`
|
||||||
|
- `Matrix_2.txt`
|
||||||
|
- `Matrix_3.txt`
|
||||||
|
|
||||||
|
These are the pauli matrices.
|
||||||
|
|
||||||
|
Implement a function that parses these three files and returns the three matrices.
|
||||||
|
|
||||||
|
Verify that for all matrices the trace is 0 and the determinant is -1.
|
||||||
|
|
||||||
|
#### Hints:
|
||||||
|
- You don't need `CSV` or `DataFrames`!
|
||||||
|
|
||||||
|
- Instead of
|
||||||
|
|
||||||
|
```julia
|
||||||
|
lines = open(FILEPATH, "r") do io
|
||||||
|
return readlines(io)
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
you can just use this shortcut:
|
||||||
|
|
||||||
|
```julia
|
||||||
|
lines = readlines(FILEPATH)
|
||||||
|
```
|
||||||
|
|
||||||
|
- You should use
|
||||||
|
|
||||||
|
```julia
|
||||||
|
parse(Complex{Float64}, STRING)
|
||||||
|
```
|
||||||
|
|
||||||
|
for parsing a complex number with real and imaginary parts of type `Float64`.
|
||||||
|
|
||||||
|
- You should use
|
||||||
|
|
||||||
|
```julia
|
||||||
|
zeros(Complex{Float64}, (2, 2))
|
||||||
|
```
|
||||||
|
|
||||||
|
to generate a `2 × 2` matrix with complex numbers with real and imaginary parts as 0 with type `Float64`.
|
||||||
|
|
||||||
|
- The package `LinearAlgebra.jl` might be helpful.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ╔═╡ eccf0ed9-fe65-4872-8e11-e94a49e642d2
|
||||||
|
# Your code starts here
|
||||||
|
|
||||||
|
|
||||||
|
# ╔═╡ 00000000-0000-0000-0000-000000000001
|
||||||
|
PLUTO_PROJECT_TOML_CONTENTS = """
|
||||||
|
[deps]
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ╔═╡ 00000000-0000-0000-0000-000000000002
|
||||||
|
PLUTO_MANIFEST_TOML_CONTENTS = """
|
||||||
|
# This file is machine-generated - editing it directly is not advised
|
||||||
|
|
||||||
|
julia_version = "1.7.2"
|
||||||
|
manifest_format = "2.0"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
"""
|
||||||
|
|
||||||
|
# ╔═╡ Cell order:
|
||||||
|
# ╟─b11b2fda-b13e-11ec-0b00-13a7cf45371c
|
||||||
|
# ╠═04c7c619-e770-415b-ad52-37e0e0e2d2f4
|
||||||
|
# ╟─4b8da4d9-c880-405e-859e-81f5884d29bf
|
||||||
|
# ╠═22590bad-ff7e-4189-b816-cb5b6e7232c4
|
||||||
|
# ╠═e49637f2-e174-4c82-923d-7caf37e5e41a
|
||||||
|
# ╠═3a89512a-30a8-4cf6-9d8a-b090cee2e8a7
|
||||||
|
# ╠═ab360d3d-0ec4-4718-a3b3-a6b90a167f6b
|
||||||
|
# ╠═7fa11520-93a4-48bf-96fa-0f6e134deb96
|
||||||
|
# ╠═0353376b-94d6-40cf-9b28-18287c75ec69
|
||||||
|
# ╠═83be3070-c556-4c3d-aaca-93063ac91c64
|
||||||
|
# ╠═8c1ca9ef-6ca4-4a3a-9ffb-8d8f39c9ee48
|
||||||
|
# ╠═5bee57cf-9c34-4e5c-974f-fcd2636f1300
|
||||||
|
# ╟─4a69ccd4-576c-4d31-b75b-8caa9c7159fa
|
||||||
|
# ╠═070e9dc2-884c-4a3b-873a-9a9ebf40c7c6
|
||||||
|
# ╟─61970ee5-bb70-465a-a940-257a5437574a
|
||||||
|
# ╠═eccf0ed9-fe65-4872-8e11-e94a49e642d2
|
||||||
|
# ╟─00000000-0000-0000-0000-000000000001
|
||||||
|
# ╟─00000000-0000-0000-0000-000000000002
|
Loading…
Reference in a new issue