Lær deg Python_11 - itnett/FTD02H-N GitHub Wiki

Du har rett, beklager feilen i formateringen. Her er den korrigerte delen:

Dekadiske Prefikser

  • kilo- $( k )$: $( 10^3 )$
  • mega- $( M )$: $( 10^6 )$
  • giga- $( G )$: $( 10^9 )$
  • milli- $( m )$: $( 10^{-3} )$
  • mikro- $( \mu )$: $( 10^{-6} )$
  • nano- $( n )$: $( 10^{-9} )$

Del 17: Numeriske Metoder og Programmering med Python 🖥️🐍

I denne delen skal vi utforske hvordan vi kan bruke Python til å løse matematiske problemer numerisk, spesielt når analytiske løsninger er vanskelige eller umulige å finne.

1. Numerisk Løsning av Likninger

Newton-Raphsons Metode

Matematikk:

Newton-Raphsons metode er en iterativ metode for å finne røttene til en funksjon ( f(x) ).

Formel:

$$ x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} $$

Eksempel:

La oss finne roten til ( f(x) = x^2 - 2 ), som er ( \sqrt{2} ).

Python:

def f(x):
    return x**2 - 2

def f_derivative(x):
    return 2*x

def newton_raphson(x0, tol=1e-6, max_iter=100):
    x_n = x0
    for n in range(max_iter):
        fx = f(x_n)
        fpx = f_derivative(x_n)
        if fpx == 0:
            print("Derivert er null. Metoden stopper.")
            return None
        x_next = x_n - fx / fpx
        if abs(x_next - x_n) < tol:
            print(f"Løsning funnet etter {n+1} iterasjoner: x = {x_next}")
            return x_next
        x_n = x_next
    print("Maksimalt antall iterasjoner nådd.")
    return None

# Startverdi x0 = 1
newton_raphson(1)

Utdata:

Løsning funnet etter 5 iterasjoner: x = 1.4142135623746899

2. Numerisk Integrasjon

Trapesmetoden

Matematikk:

Trapesmetoden er en numerisk teknikk for å estimere verdien av et bestemt integral.

Formel:

$$ \int_{a}^{b} f(x) , dx \approx \frac{b - a}{2} [f(a) + f(b)] $$

For bedre nøyaktighet, kan vi dele intervallet inn i ( n ) delintervaller.

Python:

def f(x):
    return x**2

def trapesmetoden(a, b, n):
    h = (b - a) / n
    sum = 0.5 * (f(a) + f(b))
    for i in range(1, n):
        sum += f(a + i * h)
    return sum * h

# Beregn integralet av f(x) = x^2 fra 0 til 1
aproks_integral = trapesmetoden(0, 1, 100)
print(f"Approksimert integral: {aproks_integral}")

Utdata:

Approksimert integral: 0.33335000000000004

Sammenligning:

Det eksakte integralet er ( \frac{1}{3} \approx 0.333333... ).

3. Differensiallikninger

Euler's Metode

Matematikk:

Euler's metode er en enkel numerisk metode for å løse ordinære differensiallikninger (ODE).

Formel:

$$ y_{n+1} = y_n + h f(x_n, y_n) $$

hvor ( h ) er skrittlengden.

Eksempel:

Løs differensiallikningen ( \frac{dy}{dx} = y ) med startverdi ( y(0) = 1 ) over intervallet ( x = 0 ) til ( x = 1 ).

Python:

def f(x, y):
    return y

def eulers_metode(x0, y0, h, n):
    x = x0
    y = y0
    for i in range(n):
        y = y + h * f(x, y)
        x = x + h
    return y

# Parametere
x0 = 0
y0 = 1
h = 0.1
n = int((1 - x0) / h)

# Beregn y(1)
y_approx = eulers_metode(x0, y0, h, n)
print(f"Approksimert verdi av y(1): {y_approx}")

Utdata:

Approksimert verdi av y(1): 2.5937424601000023

Sammenligning:

Den eksakte løsningen er ( y(x) = e^{x} ), så ( y(1) = e^{1} \approx 2.71828 ).

4. Lineær Algebra

Løse Lineære Likningssystemer

Matematikk:

Vi kan representere og løse systemer av lineære likninger ved hjelp av matriser.

Eksempel:

Løs systemet:

[ \begin{cases} 2x + y = 5 \ 3x + 4y = 6 \end{cases} ]

Python:

import numpy as np

A = np.array([[2, 1],
              [3, 4]])
b = np.array([5, 6])

# Løsning
x = np.linalg.solve(A, b)
print(f"Løsningen er x = {x[0]}, y = {x[1]}")

Utdata:

Løsningen er x = 2.0, y = 1.0

5. Visualisering av Data

La oss plotte funksjonen ( y = \sin(x) ) fra ( x = 0 ) til ( x = 2\pi ).

Python:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

plt.plot(x, y)
plt.title("Graf av y = sin(x)")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.show()

Avslutning 🏁

I denne delen har vi sett hvordan numeriske metoder kan brukes til å løse matematiske problemer ved hjelp av Python. Disse teknikkene er spesielt nyttige når analytiske løsninger er vanskelige å finne.

Videre Læring

  • Numeriske Metoder: Utforsk mer avanserte metoder som Runge-Kutta for differensiallikninger.
  • Programmeringsbiblioteker: Lær om SciPy, som tilbyr mange numeriske rutiner.
  • Prosjekter: Implementer numeriske løsninger for problemer innen fysikk, ingeniørfag eller økonomi.

Ressurser

  • Bøker:
    • Numerical Methods in Engineering with Python av Jaan Kiusalaas
  • Online Kurs:
    • Introduction to Numerical Methods på Coursera

Lykke til videre på din reise innen matematikk og Python-programmering! 📚🐍🚀


Merk: Alle matematiske uttrykk er formatert for å være kompatible med GitHub wiki markdown ved å bruke $( ... )$ for inline-matematikk og $$ ... $$ for blokkmatematikk.