#python #vector #sympy
#python #вектор #симпатичный
Вопрос:
Итак, я пытаюсь решить проблему для класса, и я пытаюсь выполнить curl, но это в переменных. В итоге я получаю ошибку типа: объект ‘type’ не подлежит подписке. Я не знаю, что я делаю не так, поэтому, если кто-нибудь сможет сделать эту работу, я был бы очень признателен. Кроме того, как бы вы создали массив [частичный x, частичный y, частичный z]?
Я установил символы так, чтобы при этом не было ошибки, и я использую sympy.
import sympy
import math
from sympy import Symbol, diff, Matrix, sin, cos
alpha = Symbol('a')
B0 = Symbol('B0')
x = Symbol('x')
print ('Symbols: ', alpha, B0, x)
A = Matrix[0, (B0)*sin(alpha*x), (B0)*cos(alpha*x)]
print ('Matrix: ', A)
Я ожидаю, что curl (alpha)(0, B0sin(alpha x), B0cos(alpha x) . Это в значительной степени доказательство.
Комментарии:
1. Попробуйте добавить () вокруг аргументов матрицы.
A = Matrix( [...] )
Поскольку вы правы, вы пытаетесь ввести индекс в класс Matrix, поэтому вы получаете объект ‘type’, который не поддается подписке.2. Это не очевидно из
Matrix
документации, но когда вы предоставляете 3 аргумента, он интерпретирует их как(number_of_row, number_of_columns, flat_list_of_values)
. Обычно, хотя он ожидаетlist of row vectors
, напримерMatrix([[1,2,3]])
, илиMatrix([[1],[2],[3]])
илиMatrix([[1,2],[3,4]])
.3. Хорошо, добавление круглой скобки сработало! Спасибо!