Как правильно присвоить значение элементам матрицы Sympy, исправив TypeError: 'Zero' object is not iterable или 'Float' object is not subscriptable

Выделяется матрица для производной

dydx = zeros(Size,1)

Аналогично, аргументы, к примеру:

Size = 2
k = 3
xstartswitchpoint = Matrix([[5.], [5.]])  # y,Vy
Aklinnonlin = Matrix([[k,1],[0,-0.5]])
b2x2 = Matrix([[5.], [-3.]])

Применяется функция для расчёта значения производной по поданным аргументам:

    def dxdt_y(Aklinnonlin, xstartswitchpoint, b2x2):  # система уравнений для проверки поиска точки переключения
        print(type(dydx[0,0]),'Тип производной')
        dydx[0,0] += xstartswitchpoint[1,0] ##y' = Vy
        dydx[1,0] += -1 * Aklinnonlin[0,0] * (xstartswitchpoint[1,0]) - 9.81  ##Vy' = -k*Vy-g
        return dydx

На выходе получаем ошибку, из-за того, что элементы матрицы хранятся в особом типе,

dydx[0,0] += xstartswitchpoint[1,0] ##y' = Vy
TypeError: 'Float' object is not subscriptable 

или

dydx[0,0] += sum(dydx[0,0],xstartswitchpoint[1,0]) ##y' = Vy
TypeError: 'Zero' object is not iterable

Выделение матриц для стадий метода:

    k1 = zeros(Size,1)
    k2 = zeros(Size,1)

Внутри метода также применяется присваивание для стадий:

                # обновлённый код расчёта первой и второй стадии метода
                for i, number in enumerate(range(Size)):
                    k1[i,0] = hn * dxdt(A, x, b)[i] 

                for i, number in enumerate(range(Size)): 
                    k2[i,0] = hn * dxdt(A, sum(x,k1[i,0]), b)[i]  

Ответы (0 шт):