Как получить матричный вывод из функции? - PullRequest
0 голосов
/ 02 октября 2019

Я пытался выяснить, как использовать эту функцию, но не могу заставить x что-либо сделать. Всякий раз, когда я вводю числовое значение для x, оно говорит мне, что оно не может работать из-за проблемы с размером.

Что мне делать?

import numpy as np
from scipy.sparse import diags, kron, identity
from scipy.sparse.linalg import inv
import matplotlib.pyplot as plt

def laplacian_1D(x):
    """Construct the 1D Laplacian matrix on the domain defined by x. Note that
    we assume a constant spacing.

    Parameters
    ----------
    x : array-like, shape (nx, )
        One dimensional mesh.

    Returns
    -------
    A : scipy sparse matrix, shape (nx, nx)
        Laplacian matrix.

    """

    # -->
    n = x.size
    # -->
    dx = x[1]-x[0]

    # -->
    d2 = [np.ones(n-1), -2*np.ones(n), np.ones(n-1)]

    # -->
    A = diags(d2, [-1, 0, 1]) / dx**2

    return A


print(laplacian_1D(10))

Ошибка читает

Traceback (most recent call last):
  File "C:/Users/Andrew/PycharmProjects/ENSAM/Math/Exercise_1.py", line 52, in <module>
    print(laplacian_1D(10))
  File "C:/Users/Andrew/PycharmProjects/ENSAM/Math/Exercise_1.py", line 23, in laplacian_1D
    n = x.size
AttributeError: 'int' object has no attribute 'size'

1 Ответ

1 голос
/ 02 октября 2019

Как отмечено в описании параметра, функция ожидает получить в качестве аргумента пустой массив или список. Например, вызов laplacian_1D(x = np.arange(10)) вернет матрицу лапласовой формы (10,10). Обратите внимание, что единственный способ использования x в функции - это определить размер выходной матрицы и значение dx. Последний говорит вам, что x должен быть списком с возрастающими значениями его элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...