482 lines
13 KiB
Typst
482 lines
13 KiB
Typst
#import "@local/dtu-template:0.6.0":*
|
|
#import "@preview/physica:0.9.8": *
|
|
|
|
#show: dtu-note.with(
|
|
course: "01002",
|
|
author: "Rasmus Rosendahl-Kaa",
|
|
course-name: "Matematik 1b",
|
|
title: "Funktioner 1 - Opgaver",
|
|
date: datetime(year: 2026, month: 02, day: 03),
|
|
semester: "Spring 2026"
|
|
)
|
|
|
|
#set math.mat(delim: "[")
|
|
#set math.vec(delim: "[")
|
|
|
|
= Exercises
|
|
=== 1: Funktion eller ej?
|
|
|
|
Betragt følger korrespondance mellem $a$ og $b$ værdier:
|
|
|
|
#align(center)[
|
|
#table(
|
|
columns: 2,
|
|
align: center,
|
|
[$a$], [$b$],
|
|
[1], [0],
|
|
[2], [1],
|
|
[0], [3],
|
|
[1], [2],
|
|
)
|
|
]
|
|
|
|
Vi betragter funktioner hvis definitionsmængde (domain) er en delmængde af ${0, 1, 2, 3}$ og hvis dispositionsmængde (co-domain) er ${0, 1, 2, 3}$.
|
|
|
|
Vi skal bestemme om $f$ og $g$ definerer funktioner, hvis vi lader $f$ følge reglen at første søjle ($a$-værdierne) er input og anden søjle ($b$-værdierne) skal være output af funktionen $f$ og definitionsmængden er ${0, 1, 2}$; og vi lader $g$ følge reglen om at anden søjle er input og første søjle skal være output af funktionen $g$ med definitionsmængde ${0, 1, 2, 3}$.
|
|
|
|
Definerer $f$ en funktion? Gør $g$? I bekræftende fald: bestem værdimængden/billedmængden (engelsk: range/image) for funktionen, og afgør om funktionen er injektiv og surjektiv.
|
|
|
|
#solution[
|
|
$f$ er ikke en funktion, fordi $a=1$ giver to forskellige værdier.
|
|
|
|
$g$ er en funktion. Værdimængden må være $a$'s værdier, så ${0,1,2}$. $G$ er ikke surjektiv da $3$ i dispositionsmængden ikke rammes. Den er heller ikke injektiv, da $1$ rammes 2 gange i dispositionsmængden.
|
|
]
|
|
|
|
=== 2: Ens funktionsforskrifter?
|
|
|
|
Vi betragter funktioner $f_i: RR -> RR$ givet ved:
|
|
|
|
$
|
|
f_1(x) &= abs(x) \
|
|
f_2(x) &= cases(x quad & x > 0, -x quad & x <= 0) \
|
|
f_3(x) &= max(x, 0) \
|
|
f_4(x) &= "ReLU"(x) + "ReLU"(-x)
|
|
$
|
|
|
|
hvor $x in RR$.
|
|
|
|
Nogle af funktionerne er samme funktion. Find dem alle!
|
|
|
|
#solution[
|
|
$f_1 (x)$, $f_2 (x)$ og $f_3(x)$ er ens
|
|
]
|
|
|
|
=== 3: Funktion med ukendt forskrift
|
|
|
|
Betragt en funktion $f: RR -> RR$ hvorom der gælder $lim_(x -> 2) f(x) = 5$ og $f(2) = 3$. Hvad kan vi sige om $f$ i punktet $x = 2$? Vælg det korrekte svar:
|
|
|
|
+ Funktionen er kontinuert i punktet $x = 2$.
|
|
+ Funktionen er differentiabel i punktet $x = 2$.
|
|
+ Funktionen er diskontinuert i punktet $x = 2$.
|
|
+ Funktionen er ikke veldefineret i punktet $x = 2$.
|
|
+ Man kan ikke afgøre ovenstående, da funktionsforskriften ikke er angivet!
|
|
|
|
#solution[
|
|
Funktionen er diskontinuert i punktet $x=2$.
|
|
]
|
|
|
|
=== 4: Ikke-linearitet af ReLU
|
|
|
|
Betragt ReLU-funktionen, $"ReLU": RR^n -> RR^n$. Forklar hvorfor funktionen ikke er lineær.
|
|
|
|
#solution[
|
|
Funktionen er ikke lineær da når $x<0$ kan man ikke differentiere den.
|
|
]
|
|
|
|
=== 5: Mulige visualiseringer
|
|
|
|
Diskuter om man kan visualisere nedenstående funktioner -- i givet fald plot dem med SymPy/dtumathtools:
|
|
|
|
+ En skalarfunktion af to variable $f: RR^2 -> RR, quad f(x_1, x_2) = sqrt(abs(x_1 x_2))$
|
|
+ En skalarfunktion af fire variable $f: RR^4 -> RR, quad f(x_1, x_2, x_3, x_4) = sqrt(abs(x_1 x_2 x_3 x_4))$
|
|
+ En kompleks skalarfunktion af to variable $f: RR^2 -> CC, quad f(x_1, x_2) = sqrt(abs(x_1 x_2)) + i cos(x_1 + x_2)$
|
|
+ Et vektorfelt i 2D $bold(f): RR^2 -> RR^2, quad bold(f)(x_1, x_2) = (-x_2 / 3, x_1 / 3)$
|
|
+ Et vektorfelt i 3D $bold(f): RR^3 -> RR^3, quad bold(f)(x, y, z) = (x^3 + y z^2, y^3 - x z^2, z^3)$
|
|
+ En funktion af formen $bold(r): [0, 10] -> RR^3, quad bold(r)(t) = (cos(t), sin(t), t)$
|
|
|
|
#note-box(title: "Python kommandoer")[
|
|
Følgende kan være nyttige: `dtuplot.plot3d`, `dtuplot.plot_vector`, `dtuplot.plot3d_parametric_line`.
|
|
]
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
=== 6: Evaluering af et Neuralt Netværk
|
|
|
|
Betragt et simpelt "shallow" neuralt netværk $bold(Phi): RR^2 -> RR$ med ét skjult lag ($L = 2$). Netværket er defineret ved parametrene:
|
|
|
|
$
|
|
A_1 = mat(2, 0; -1, 1), quad bold(b)_1 = vec(-1, 0), quad A_2 = mat(-1, 2), quad b_2 = 0
|
|
$
|
|
|
|
hvor aktiveringsfunktionen i det *skjulte lag* er ReLU-funktionen, $bold(sigma)(bold(z)) = "ReLU"(bold(z))$, men aktiveringsfunktionen i det *sidste lag* er identitetsafbildningen $bold(sigma)(bold(z)) = bold(z)$. Netværksfunktionen er altså givet ved:
|
|
|
|
$
|
|
bold(Phi)(bold(x)) = A_2 "ReLU"(A_1 bold(x) + bold(b)_1) + b_2
|
|
$
|
|
|
|
==== Spørgsmål a
|
|
|
|
Beregn værdien af netværket i punktet $bold(x) = vec(0.5, 1)$.
|
|
|
|
#solution[
|
|
$
|
|
mat(-1,2) dot "ReLU"(mat(2,0;-1,1) dot vec(0.5,1)+vec(-1,0)) = \
|
|
mat(-1,2) dot "ReLU"(vec(1,0.5)+vec(-1,0)) = \
|
|
mat(-1,2) dot "ReLU"(vec(0,0.5)) =\
|
|
mat(-1,2) dot vec(0,0.5) = -1 dot 0 + 2 dot 0.5 = 1\
|
|
$
|
|
$Phi(vec(0.5,1))=1$
|
|
]
|
|
|
|
==== Spørgsmål b
|
|
|
|
Find et punkt $bold(x)$, hvor netværkets output $bold(Phi)(bold(x))$ er negativt. Begrund dit svar.
|
|
|
|
#solution[
|
|
Punkt $vec(1,1)$ giver:
|
|
$
|
|
mat(2,0;-1,1) dot vec(1,1)+vec(-1,0) =\
|
|
vec(2,0) + vec(-1,0) = vec(1,0)\
|
|
"ReLU"(vec(1,0)) = vec(1,0) =\
|
|
mat(-1,2) dot vec(1,0) = -1 dot 1 + 2 dot 0 = -1
|
|
$
|
|
]
|
|
|
|
==== Spørgsmål c
|
|
|
|
Hvor mange justerbare parametre (vægte og bias-værdier) har dette netværk totalt?
|
|
|
|
#solution[
|
|
Tæller antal værdier i dens parametre: 9
|
|
|
|
]
|
|
|
|
==== Spørgsmål d
|
|
|
|
Vi erstatter nu aktiveringsfunktionen (ReLU) med en "hard limiter" funktion (en variant af signum-funktionen), som vi kalder $sigma_("step")$.
|
|
|
|
Som *skalar*-funktion $sigma_("step"): RR -> RR$ er den defineret ved:
|
|
|
|
$
|
|
sigma_("step")(x) = cases(1 quad & "hvis" x >= 0, -1 quad & "hvis" x < 0)
|
|
$
|
|
|
|
Som *vektorfunktion* $bold(sigma)_("step"): RR^n -> RR^n$ defineres den ved at anvende skalarfunktionen på hver koordinat:
|
|
|
|
$
|
|
bold(sigma)_("step")(bold(z)) = vec(sigma_("step")(z_1), dots.v, sigma_("step")(z_n))
|
|
$
|
|
|
|
Betragt nu netværket med denne nye aktiveringsfunktion: $bold(Phi)(bold(x)) = A_2 bold(sigma)_("step")(A_1 bold(x) + bold(b)_1) + b_2$.
|
|
|
|
Angiv den delmængde af definitionsmængden, hvor netværksfunktionen $bold(Phi)(bold(x))$ er *diskontinuert*.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
=== 7: Visualisering af Netværket
|
|
|
|
I denne opgave skal du bruge Python til at visualisere funktionen $bold(Phi)(bold(x))$ fra forrige opgave (med ReLU som aktiveringsfunktion).
|
|
|
|
Du skal plotte grafen for netværket over området $x_1, x_2 in [-2, 2]$.
|
|
|
|
#note-box[
|
|
Læg mærke til, at grafen består af plane flader, der er "knækket" og sat sammen. Dette skyldes ReLU-funktionen, som er stykkevis lineær. I store netværk der anvendes i praksis sættes millioner af sådanne lineære underrum sammen.
|
|
]
|
|
|
|
Kan du plotte grafen af det samme neurale netværk hvor $bold(sigma)_("step")$ bruges i stedet for ReLU? Planerne i den nye graf bør ikke "hænge sammen" (hvorfor?).
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
=== 8: Lineær vektorfunktion
|
|
|
|
Lad $A in bold(M)_(3 times 5)(RR)$ være givet ved
|
|
|
|
$
|
|
A = mat(
|
|
1, 0, 2, 3, 4;
|
|
0, -1, 5, 6, 7;
|
|
0, 0, -3, 8, 9
|
|
)
|
|
$
|
|
|
|
Betragt vektorfunktionen $bold(f): RR^5 -> RR^3$ givet ved $bold(f) = bold(x) |-> A bold(x)$, hvor $bold(x)$ er en søjlevektor i $RR^5$.
|
|
|
|
==== Spørgsmål a
|
|
|
|
Angiv de 3 koordinatfunktioner for $bold(f)$.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål b
|
|
|
|
Angiv billedmængden $"im"(bold(f))$ for $bold(f)$.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål c
|
|
|
|
Er vektorfunktionen $bold(f)$ surjektiv og/eller injektiv?
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
=== 9: Næste primtal-funktion (frivillig)
|
|
|
|
#note-box[Dette er en valgfri ekstraopgave.]
|
|
|
|
Lad $f: NN -> NN$ være en funktion, der returnerer det næste primtal (strengt) større end et givet naturligt tal $n$. I denne opgave skal du først vurdere værdien af funktionen for to specifikke input og derefter vise, at funktionen er veldefineret, før du implementerer den i Python.
|
|
|
|
==== Spørgsmål a
|
|
|
|
Find ved simple overvejelser $f(10)$ og $f(13)$.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål b
|
|
|
|
Argumenter for, at funktionen $f(n)$ er veldefineret.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål c
|
|
|
|
Kan man finde et funktionsudtryk for $f(n)$? Argumenter for, hvorfor det er eller ikke er muligt.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål d
|
|
|
|
Implementer funktionen $f(n)$ i Python, som tager et heltal $n$ som input og returnerer det næste primtal større end $n$. Definer en hjælpefunktion `er_primtal(x)` til at afgøre, om et tal er primtal.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål e
|
|
|
|
Kan du opdatere din Python-funktion fra forrige opgave, så $f$'s definitionsmængde udvides fra $NN$ til $RR$?
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
#pagebreak()
|
|
|
|
== Opgaver -- Lille Dag
|
|
|
|
=== 1: Størrelse af vektorer
|
|
|
|
Betragt følgende tre vektorer i $RR^3$:
|
|
|
|
$
|
|
bold(v)_1 = vec(-10, -10, -10), quad
|
|
bold(v)_2 = vec(-10, -4, 14), quad
|
|
bold(v)_3 = vec(-10, -8, -12)
|
|
$
|
|
|
|
Hvilken vektor er længst? Hvilke vektorer er ortogonale på hinanden? Hvilke to vektorer er tættest på hinanden?
|
|
|
|
#note-box[
|
|
Vi kan forestille os vektorerne som (geometriske) stedvektorer med begyndelsespunkt i $bold(0) = [0, 0, 0]^T$ og slutpunkt $bold(v)_i$ for hhv $i = 1, 2, 3$. Under tiden skriver man dette som $arrow(bold(0) bold(v)_i)$.
|
|
]
|
|
|
|
#solution[
|
|
Længder:
|
|
$
|
|
norm(arrow(v)_1)=sqrt((-10)^2 + (-10)^2 + (-10)^2) = #calc.norm(-10,-10,-10)\
|
|
norm(arrow(v)_2)=sqrt((-10)^2 + (-4)^2 + 14^2) = #calc.norm(-10,-4,14)\
|
|
norm(arrow(v)_3)=sqrt((-10)^2 + (-8)^2 + (-12)^2) = #calc.norm(-10,-8,-12)\
|
|
$
|
|
$v_2$ er længst
|
|
|
|
Ortogonale ($v_x dot v_y = 0$):
|
|
$
|
|
<arrow(v)_1, arrow(v)_2> &= (-10) dot (-10) + (-10) dot (-4) + (-10) dot 14\
|
|
&= 100 + 40 - 140 = 0\
|
|
<arrow(v)_1, arrow(v)_3> &= (-10) dot (-10) + (-10) dot (-8) + (-10) dot (-12)\
|
|
&= 100 + 80 + 120 = 300\
|
|
<arrow(v)_2, arrow(v)_3> &= (-10) dot (-10) + (-4) dot (-8) + 14 dot (-12)\
|
|
&= 100 + 32 - 168 = -36
|
|
$
|
|
$arrow(v)_1$ og $arrow(v)_2$ er ortogonale.
|
|
|
|
$arrow(v)_1)$ og $arrow(v)_3)$ må være tættest på hinanden, da $arrow(v)_2$ har et positivt koordinat, mens de andre kun har negative.
|
|
]
|
|
|
|
=== 2: Partielle afledede af simpel skalar-funktion
|
|
|
|
Find de partielle afledte $(partial f)/(partial x_1)$ og $(partial f)/(partial x_2)$ for $f(x_1, x_2) = x_1^3 + 3 x_1 x_2 + x_2^3$. Bestem værdien af de partielle afledte i punktet $(x_1, x_2) = (1, 2)$.
|
|
|
|
#solution[
|
|
$(partial f)/(partial x_1)$:
|
|
$
|
|
h(x_1)=x_1^3 + 3 x_1 c_1 + c_2, c_1=x_2, c_2 = x_2^3\
|
|
h'(x)=3x_1^2+3c_1 + 0\
|
|
(partial f)/(partial x_1) = 3x_1^2 + 3x_2
|
|
$
|
|
I punkt $(x_1, x_2) = (1, 2))$: $3 dot 1^2 + 3 dot 2 = 9$
|
|
|
|
$(partial f)/(partial x_2)$:
|
|
$
|
|
g(x_2)=c_3 + 3 dot c_4 dot x_2 + x_2^3, quad c_3 = x_1^3, c_4 = x_1\
|
|
g'(x_2) = 0 + 3 dot c_4 + 3x_2^2\
|
|
(partial f)/(partial x_2) = 3x_1 + 3x_2^2
|
|
$
|
|
I punkt $(x_1, x_2) = (1, 2))$: $3 dot 1 + 3 dot 2^2 = 15$
|
|
|
|
|
|
]
|
|
|
|
=== 3: Forskellige(?) kvadratiske former
|
|
|
|
Lad $bold(x) = [x_1, x_2]^T$ være en søjlevektor i $RR^2$. Definer:
|
|
|
|
$
|
|
A_1 = mat(11, -12; -12, 4), quad
|
|
A_2 = mat(11, 0; -24, 4), quad
|
|
A_3 = mat(73/5, -36/5; -36/5, 52/5)
|
|
$
|
|
|
|
og
|
|
|
|
$
|
|
bold(b)_1 = vec(-20, 40), quad
|
|
bold(b)_2 = bold(b)_1, quad
|
|
bold(b)_3 = vec(-44, 8), quad
|
|
c = -60
|
|
$
|
|
|
|
Lad $q_i: RR^2 -> RR$ være givet ved:
|
|
|
|
$
|
|
q_i (bold(x)) = bold(x)^T A_i bold(x) + bold(b)_i^T bold(x) + c
|
|
$
|
|
|
|
for $i = 1, 2, 3$. Sådanne funktioner kaldes kvadratiske former.
|
|
|
|
==== Spørgsmål a
|
|
|
|
Gang udtrykket for $q_1(x_1, x_2)$ ud. Først i hånden, så ved hjælp af Python. Gang også udtrykkene for $q_2(x_1, x_2)$ og $q_3(x_1, x_2)$ (i hånden eller Python) ud.
|
|
|
|
#solution[
|
|
$
|
|
q_1(x_1,x_2) &= mat(x_1,x_2) dot mat(11,-12;-12,4) dot vec(x_1,x_2) + mat(-20,40) dot vec(x_1,x_2) -60\
|
|
&= mat(x_1,x_2) dot vec(11 x_1 -12 x_2,4x_2-12x_1) -20x_1 + 40x_2 - 60\
|
|
&= 11 x_1^2 - 12x_1 x_2 + 4x_2^2 - 12x_1 x_2 - 20 x_1 + 40x_2 -60\
|
|
&= 11x_1^2 + 4x_2^2 - 24x_1x_2 - 20x_1 + 40x_2 - 60
|
|
$
|
|
|
|
Se Python fil for de andre q
|
|
]
|
|
|
|
==== Spørgsmål b
|
|
|
|
Er den kvadratiske matrix $A$ i en kvadratisk form (som fx $bold(x)^T A bold(x)$) entydig givet?
|
|
|
|
#solution[
|
|
Nej da $q_1(arrow(x))$ og $q_2(arrow(x))$ er ens men har forskellige $bold(A)$. Så forskellige $bold(A)$ kan godt give samme $q(arrow(x))$
|
|
]
|
|
|
|
==== Spørgsmål c
|
|
|
|
Plot grafen af funktionen $q_1$. Plot så nogle niveaukurver. Hvilken geometrisk form har niveaukurverne? Gør det samme for $q_3$.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål d
|
|
|
|
En af funktionerne har et minimum. Hvilken? Hvor ligger det cirka? Hvad kaldes det samme punkt for de funktioner der ikke har et minimum?
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
=== 4: Softmax-funktionen
|
|
|
|
I denne opgave ser vi på *softmax*-funktionen.
|
|
|
|
==== Spørgsmål a
|
|
|
|
Beregn *softmax* af følgende tre vektorer i $RR^3$. Du kan gøre det ved håndkraft (brug lommeregner til eksponentialfunktionen) eller ved hjælp af Python. Angiv svarene med ca. 3 decimaler.
|
|
|
|
+ $bold(x)_1 = [1, 2, -5]^T$
|
|
+ $bold(x)_2 = [10, 2, -5]^T$
|
|
+ $bold(x)_3 = [100, 2, -5]^T$
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål b
|
|
|
|
Hvad observerer du, når forskellen mellem den største værdi i inputtet og de andre værdier øges (som i skiftet fra $bold(x)_1$ til $bold(x)_2$ og $bold(x)_3$)? Hvorfor kaldes funktionen mon "soft"-max?
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål c
|
|
|
|
Er *softmax*-funktionen kontinuert?
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål d
|
|
|
|
Betragt *softmax* som en afbildning fra $RR^n$ til $RR^n$. Er funktionen *injektiv* (en-til-en)?
|
|
|
|
Er funktionen *surjektiv* (på) i forhold til dispositionsmængde $RR^n$?
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
=== 5: Kvadratiske former med symmetriske matricer
|
|
|
|
Lad $A$ være en vilkårlig $n times n$ matrix, og lad $bold(x)$ være en søjlevektor i $RR^n$. Definer $B$ ved $B = (A + A^T) / 2$.
|
|
|
|
==== Spørgsmål a
|
|
|
|
Vis at matricen $B$ er symmetrisk.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål b
|
|
|
|
Vis at $bold(x)^T A bold(x) = bold(x)^T B bold(x)$.
|
|
|
|
#solution[
|
|
|
|
]
|
|
|
|
==== Spørgsmål c
|
|
|
|
Konkludér at man altid kan antage at kvadratiske former af formen $q(bold(x)) = bold(x)^T A bold(x) + bold(b)^T bold(x) + c$ er givet ved en *symmetrisk* matrix $A$.
|
|
|
|
#solution[
|
|
|
|
]
|