Написание лямбды в MATLAB

#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 должна быть одинаковой.