0 svar
143 visningar
Arian02 behöver inte mer hjälp
Arian02 520
Postad: 10 nov 2022 17:52 Redigerad: 10 nov 2022 17:53

Fixpunktsmetoden (Bakåt euler)

 

 

Hej! Jag håller på med en labb i python som handlar om förarlösa bilar (Uppgiften finns i första bilden). Jag har hitills lyckats med alla del uppgifter fram tills g) och det är just den jag behöver hjälp med. Jag vet inte hur jag ska kunna applicera fixpunktsmetoden på bakåt euler. Jag vet definitionen av euler bakåt, samt hur fixpunktsmetoden fungerar, men kommer ingevart. Här är hur långt jag kommit hittils.

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    if t < 0:
        return 0
    elif 0 <= t < 75:           #Funktionen f i uppgiften
        return t/3
    elif t >= 75:
        return 25

def g(t):
    return 5                    #Funktionen g

M = 10    #Antal bilar
h = 0.1    #Steg
dt = 40    #Tid intervall
N = int(dt/h)
d = 75

A = np.zeros((N, M))
for i in range(0, 10):       #Skapa matris där rader är antal varje steg i euler och kolumnerna är bil 1 till M
    A[0][i] = (d*(i+1))      #Begynnelse villkoret


def t(x):
    return x0 + (h / 3) * (A[i + 1][k + 1] - x)      # Returnerar funktion som används till fixpunkt iteration



for i in range(0, N - 1):
            A[i + 1][9] = A[i][9] + h * g(A[i + 1][9])    # Fix punkt iteration för M:e bilen

for k in range(8, -1, -1):
        for i in range(0, N - 1):
            x0 = A[i][k]                     #Fix punkt iteration för alla bilar bakom.
            for s in range(0,30):
                x0 = t(A[i + 1][k])
            xny = x0














for i in range(0,10):
    plt.plot(np.linspace(0, 40, N), A[:, i], linewidth=4)

plt.xlabel('T (tid)', fontsize = 12)
plt.ylabel('S (Sträcka)', fontsize = 12)
plt.title('Acceleration', fontsize = 12)
plt.xticks(fontsize = 12)
plt.yticks(fontsize = 12)
plt.grid(True)
plt.axis([0, 40, 0, 1000])
plt.show()





Svara
Close