Maven_015 - itnett/FTD02H-N GitHub Wiki

La oss dykke enda dypere inn i mer avanserte temaer, inkludert Markovkjeder og stokastiske prosesser, differensialligninger, lineær programmering, og avansert programmering. Disse emnene er avgjørende for forståelse i både teoretiske og anvendte matematiske og datavitenskapelige områder.


📈 Markovkjeder og Stokastiske Prosesser

1️⃣ Markovkjeder

En Markovkjede er en type stokastisk prosess hvor fremtidige tilstander bare avhenger av nåværende tilstand, ikke av tidligere hendelser. Dette er kjent som Markov-egenskapen.

📘 Diskrete Markovkjeder

For en diskret Markovkjede, la $P_{ij}$ være sannsynligheten for å gå fra tilstand $i$ til tilstand $j$. Overgangsmatrisen $P$ samler alle disse sannsynlighetene:

$$P = \begin{pmatrix} P_{11} & P_{12} & \cdots & P_{1n} \ P_{21} & P_{22} & \cdots & P_{2n} \ \vdots & \vdots & \ddots & \vdots \ P_{n1} & P_{n2} & \cdots & P_{nn} \end{pmatrix}$$

📘 Eksempel:

Hvis en prosess kan være i tre tilstander, med følgende overgangsmatrise:

$$P = \begin{pmatrix} 0.5 & 0.3 & 0.2 \ 0.1 & 0.6 & 0.3 \ 0.2 & 0.4 & 0.4 \end{pmatrix}$$

Da er sannsynligheten for å gå fra tilstand 1 til tilstand 2 i ett steg $P_{12} = 0.3$.

2️⃣ Stokastiske Prosesser

En stokastisk prosess er en samling av tilfeldige variabler som representerer utviklingen av et system over tid.

📘 Poisson-prosess

En vanlig stokastisk prosess er Poisson-prosessen, som modellerer hendelser som skjer kontinuerlig og uavhengig av hverandre, med en kjent gjennomsnittshastighet.

  • Sannsynligheten for å observere $k$ hendelser i løpet av tiden $t$ er gitt av:

$$P(X(t) = k) = \frac{(\lambda t)^k e^{-\lambda t}}{k!}$$

  • $\lambda$ er gjennomsnittshastigheten for hendelser.

📘 Eksempel:

Hvis $\lambda = 5$ hendelser per time, og vi ønsker å finne sannsynligheten for å ha 3 hendelser på en time:

$$P(X(1) = 3) = \frac{(5 \times 1)^3 e^{-5}}{3!} = \frac{125 \times e^{-5}}{6} \approx 0.1404$$


🔢 Differensialligninger

Differensialligninger beskriver forholdet mellom en funksjon og dens deriverte, og brukes ofte til å modellere kontinuerlige dynamiske systemer.

1️⃣ Ordinære Differensialligninger (ODE)

En ordinær differensialligning (ODE) involverer funksjoner av en enkelt variabel og deres deriverte. Generelt har en første ordens ODE formen:

$$\frac{dy}{dx} = f(x, y)$$

📘 Eksempel: Lineær Første Ordens ODE

Gitt en enkel ODE:

$$\frac{dy}{dx} + y = 0$$

Løsning:

$$y(x) = Ce^{-x}$$

Hvor $C$ er en integrasjonskonstant bestemt av initialbetingelser.

2️⃣ Partielle Differensialligninger (PDE)

En partiell differensialligning (PDE) involverer funksjoner av flere variabler og deres partielle deriverte. En av de mest kjente PDE-ene er varmeligningen:

$$\frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2}$$

Hvor $u(x,t)$ beskriver temperaturfordelingen over tid.

📘 Eksempel: Varmeligningen

Varmeligningen kan løses ved separasjon av variable, Fourier-serier, eller numeriske metoder.


📊 Lineær Programmering

Lineær programmering er en teknikk for å finne den beste løsningen (maksimering eller minimisering) av en lineær funksjon under gitte lineære begrensninger.

1️⃣ Standard Form for Lineær Programmering

Den generelle formen for et lineært programmeringsproblem er:

Maksimer eller minimer:

$$Z = c_1x_1 + c_2x_2 + \cdots + c_nx_n$$

Underlagt:

$$a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n \leq b_1$$ $$a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n \leq b_2$$ $$\vdots$$ $$a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n \leq b_m$$

og $x_i \geq 0$ for alle $i$.

2️⃣ Simplex Metoden

Simplex metoden er en algoritme som brukes til å løse lineære programmeringsproblemer ved å bevege seg fra ett hjørne av den tillatte regionen til et annet, på jakt etter den optimale løsningen.

📘 Eksempel:

Optimaliser funksjonen $Z = 3x_1 + 2x_2$ under begrensningene:

$$x_1 + x_2 \leq 4$$ $$2x_1 + x_2 \leq 5$$ $$x_1, x_2 \geq 0$$

Bruk Simplex-metoden til å finne den optimale løsningen, som kan være $(x_1, x_2) = (1, 3)$.


🖥️ Avansert Programmering

Avansert programmering involverer bruk av datastrukturer, algoritmer og programmeringskonsepter for å løse komplekse problemer.

1️⃣ Datastrukturer

📘 Vanlige Datastrukturer

  • Lister (Arrays): En samling av elementer lagret på påfølgende minneplasser.
  • Stakker (Stacks): En LIFO-struktur (Last In, First Out).
  • Køer (Queues): En FIFO-struktur (First In, First Out).
  • Trær (Trees): En hierarkisk datastruktur med noder.

2️⃣ Algoritmer

📘 Sorteringsalgoritmer

Eksempler inkluderer:

  • Quicksort: En effektiv, sammenligningsbasert sorteringsalgoritme som fungerer ved å dele og erobre.
  • Merge Sort: En stabil sorteringsalgoritme som deler listen i mindre lister og så kombinerer dem.

📘 Eksempel: Quicksort

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)

print(quicksort([3,6,8,10,1,2,1]))

3️⃣ Rekursjon

Rekursjon er en teknikk hvor en funksjon kaller seg selv for å løse mindre deler av et problem.

📘 Eksempel: Faktorisering

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5))  # Output: 120

🎯 Oppsummering

👩‍🏫 Hva har du lært?

  • Markovkjeder og stokastiske prosesser: Hvordan modellere og analysere systemer som utvikler seg over tid på en stokastisk måte.
  • Differensialligninger: Løsning og anvendelse av både ordinære og partielle differensialligninger.
  • Lineær programmering: Optimalisering under begrensninger ved hjelp av lineær programmering og simplex metoden.
  • Avansert programmering: Bruk av datastrukturer, algoritmer og rekursjon for å løse komplekse problemer.

🚀 Neste Læringsmål

  • Monte Carlo simuleringer: Bruk av stokastiske teknikker for å løse problemer som er deterministisk vanskelige å løse.
  • Fourier-analyse: