Я новичок в python и только изучаю итерации с фиксированной запятой, так что я не совсем понимаю, как решить эту проблему. Это моя задача:
Простая формула traffi c для того, как автомобили должны быть расположены, учитывая, что они должны держать безопасное расстояние друг от друга, в то время как замедление может быть сформулировано следующим образом .:
Уравнения для x
Где M - автомобиль № 10, один перед всеми остальными. Верхний и нижний индексы связывают каждый x с указанным c автомобилем и шагом по времени, где h - наш временной шаг в секундах. Все позиции могут быть описаны с помощью матрицы nxM, и наша задача - найти x_i ^ {n + 1}, следующую машину для любой данной строки, используя формулу выше и итерацию с фиксированной точкой с обратным Эйлером. У меня уже есть точная матрица для позиций, использующих другой метод, но я не получаю нигде с итерацией. Это то, что у меня есть:
import numpy as np
from matplotlib import pyplot as plt
from functions_constants import * #Some constants and functions for velocity
h = 0.1 #Step size in seconds
iterations = 40 #Number of iterations
cars2 = np.zeros([n,M]) #A 400*10 matrix. 400 time-steps and 10 cars
lastcar=cars[0,9] #Initial value for last car
guess1 = cars[1,8] #Arbitrary guess for car n,i
for i in range(n): #Loop over all timesteps (400)
for iter in range(iterations): #Iterate for iterations=40
cars2[i,M-1]= lastcar+5*h #Determine position of last car for all timesteps
startguess = cars2[i,M-1] #Fixed point
for j in range(8,-1,-1): #Loop over cars 0-8
for iter in range(iterations): #Iterate for iterations=40
guess2=lastcar #Make an initial guess for car i+1,j+1
cars2[i,j] = (3*guess1+h*guess2)/(h+3) #See Equations for x
guess1 = cars2[i,j] #Fixed point
guess2 = cars2[i,j+1] #Fixed point
Я получаю правильное положение последней машины для всех временных шагов, но машины до этого заканчиваются только рядом с последней машиной. Это не то, что я хочу. Автомобили должны сохранять минимальное расстояние 75 друг к другу.
При нанесении с использованием другого метода в конечном итоге это выглядит следующим образом: Положение автомобиля в зависимости от времени . Мы хотим что-то похожее с методом итерации.
Более того, мне нужно отобразить ошибку этого метода по сравнению с точной матрицей, которую я имею, с количеством итераций. Тем не менее, это должно быть намного проще, когда я начну с метода. Любая помощь приветствуется.