ex1: theory

This commit is contained in:
2025-09-04 15:08:07 +02:00
parent 1102f2cf58
commit 96c395311f
2 changed files with 74 additions and 0 deletions

View File

@@ -13,3 +13,7 @@ movie: ${IMAGES}
ffmpeg -y -an -i images/%5d.png -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3 -r 12 wave.mp4
clean:
-rm -fr ${TARGETS} data images wave.mp4
zip: theory.pdf Makefile wave_1d.c
zip handin.zip theory.pdf Makefile wave_1d.c
unzip: handin.zip
unzip handin.zip -d handin

70
exercise1/theory.typ Normal file
View File

@@ -0,0 +1,70 @@
#import "@preview/cetz:0.3.2";
#import "@preview/cetz-plot:0.1.1": plot
#import "@preview/physica:0.9.4": *
#import "@preview/plotsy-3d:0.1.0": plot-3d-parametric-surface
#import "@preview/fletcher:0.5.4" as fletcher: diagram, edge, node
#set page(paper: "a4", margin: (x: 2.6cm, y: 2.8cm), numbering: "1 : 1")
#set par(justify: true, leading: 0.52em)
#let FONT_SIZE = 18pt;
#set text(font: "FreeSerif", size: FONT_SIZE, lang: "us")
#show math.equation: set text(font: "Euler Math", size: (FONT_SIZE * 1.0), lang: "en")
#set heading(numbering: none)
#show heading.where(level: 1): it => {
rect(inset: FONT_SIZE / 2)[#it]
}
// Dracula palette
#let bg = rgb("#282a36")
#let fg = rgb("#f8f8f2")
#let sec = rgb("#44475a")
#align(center)[
#text(size: FONT_SIZE * 2, weight: "bold")[#underline[exercise 0]]
]
these are my solutions to exercise set 1 of TDT4200.
this document was created using
#link("https://typst.app/")[#text(blue.darken(5%))[typst]].
#v(42pt)
#outline(title: none)
#v(42pt)
= macros
macros define programmer-friendly syntax that is preprocessed at compile time,
thus incurring no performance penality. they constitute a fundamental part in
meta programming (see lisp). excessive use of macros may obfuscate semantics,
but can often be used to make the code clearer to read. in this case, it helps
simplify the indexing of the buffers for easier to read calculations.
= boundary conditions
the boundary condition could be changed from reflection to wrapping around. this
can be achieved by setting the left boundary to be the right-most point, and the
right boundary to be the left-most point.
= no memory
if you don't allocate memory in T1, the buffers will be unallocated and you will
get indexing errors as you try to access the buffers using the predefined
macros.
basically, you segfault.
= `float const *a` vs `float *const b`
- `float const *a` is a constant pointer to some memory address, assigned to the
constant name `a`. since `a` is constant, it cannot be reassigned.
- `float *const b` is a pointer to some constant value, assigned to the
variable `b`. since `b` points to a constant, the dereferenced value cannot be
changed.
these are not the same.