#python #matlab #function
#python #matlab #функция
Вопрос:
Я пытаюсь преобразовать этот код в MATLAB, но я не уверен, как выполнять индексы ( Y[i] = Y[i-1]
), а также func
и f_exact
переменные вот код:
def Forward_Euler(y0,t0,T,dt,f):
t = np.arange(t0,T dt,dt)
Y = np.zeros(len(t))
Y[0] = y0
for i in range(1,len(t)):
Y[i] = Y[i-1] dt*f(Y[i-1], t[i-1])
return Y, t
func = lambda y,t: y-t
f_exact = lambda t: t 1-1/2*np.exp(t)
Комментарии:
1. лямбда-функция в MATLAB:
func = @(y,t) y - t
2. Спасибо вам и за индексы, использую ли я Y{i} = Y{i-1}? @Reza
3. вам нужно использовать круглые скобки
Y(i) = Y(i-1)
Ответ №1:
Вы можете использовать анонимные функции в matlab:
func = @(y,t)(y - t)
f_exact = @(t)(t 1 - exp(t)/2) % it works with any matrix t as well
И вы также можете использовать для матриц (они должны сохранять правила работы с матрицей). Например, в func
функции, поскольку в форме функции есть минус, размерность y
и t
должна быть одинаковой.