Конечно-разностное решение уравнения теплопроводности - PullRequest
0 голосов
/ 21 июня 2020

Практикуя конечно-разностную реализацию, я не могу понять, почему мое решение выглядит так странно. Код взят из: http://people.bu.edu/andasari/courses/numericalpython/Week9Lecture15/PythonFiles/FTCS_DirichletBCs.py.

Примечание: я использую этот пример лекции для уравнения теплопроводности, а не для уравнения реакции-диффузии!

Я не изучил соответствующую математику, так что это может быть причиной!

1 Ответ

2 голосов
/ 21 июня 2020

Основная проблема - это длина временного шага. Если вы посмотрите на дифференциальное уравнение, цифры станут нестабильными для a>0.5. В переводе для вас это означает, что примерно N > 190. Я получу красивую картинку, если увеличу ваше N до такого значения.

Однако я думаю, что где-то меняются местами оси времени и пространства (если вы попытаетесь интерпретировать график, то, то есть граничные условия и ожидаемое затухание профиля с течением времени). Я не могу сейчас понять, почему.

Изменить : Фактически, вы меняете местами T и X, когда вы делаете meshgrid. Это должно работать:

    N = 200

...
...

    T, X = np.meshgrid(tspan, xspan)

...

    surf = ax.plot_surface(T, X, U, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

...

    ax.set_xlabel('Time')
    ax.set_ylabel('Space')
...