SymPy документации имеет этот пример для создания матрицы, используя правило:Создание SymPy матрицы с помощью функции
>>> def f(i,j):
if i == j:
return 1
else:
return 0
>>> Matrix(4, 4, f)
[1 0 0 0]
[ ]
[0 1 0 0]
[ ]
[0 0 1 0]
[ ]
[0 0 0 1]
Как бы я идти об использовании правила с аргументами? Например, используя функцию:
>>> def f(i,j,l=1):
if i == j:
return 1*l
else:
return 0
Я не знаю, как назвать такую функцию.
EDIT: Чтобы уточнить, я не ищу решение, которое решает этот конкретный пример. Я ищу более общее решение. Предположим, что функция, являющаяся правилом для создания матрицы, то есть f
в примере, является сколь угодно сложной. То есть, он не может просто/легко реплицироваться с помощью лямбда-функции. Иными словами, аргументы (l
в примере) должны быть включены в вызов функции (f
). Можно ли сделать это?
EDIT 2: В основном я хочу, чтобы иметь возможность указать f
в самостоятельной функции (я имею в виду не лямбда-функции), а затем вызвать его в качестве части Matrix
конструкции с любыми дополнительными аргументами (дополнительно к первому 2 обязательных аргументы). Я попытался вызова пример функции с кодом, как:
>>> Matrix(4,4,f,l=7)
в надежде, что он будет возвращать:
[7 0 0 0]
[ ]
[0 7 0 0]
[ ]
[0 0 7 0]
[ ]
[0 0 0 7]
Но это не работает.
>>> Matrix(4,4,f,{l=7})
Не работает. Можно ли сделать это?
См. Мое редактирование. – Charlie
@Charlie: Не могли бы вы также добавить более сложный пример 'f' i.e, пример того, что вы на самом деле пытаетесь выполнить? – Cleb
Хорошо, см. Второе редактирование. – Charlie