0
svar
143
visningar
Arian02 behöver inte mer hjälp
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()