Уравнения Python Симпи в матрицу - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь преобразовать 4 уравнения в матричную форму следующим образом, но 4-я строка в выходных данных неверна . Любая помощь будет оценена:

from sympy import linear_eq_to_matrix, symbols, simplify, sin, cos, Eq, pprint

A, B, C, D, z, L, k = symbols('A, B, C, D, z, L, k')

fnc = A + B*z + C*sin(k*z) + D*cos(k*z)

bc1 = Eq(0, fnc.subs(z,0))
bc2 = Eq(0, fnc.subs(z,L))
bc3 = Eq(0, fnc.diff(z,2).subs(z,0))
bc4 = Eq(0, fnc.diff(z,2).subs(z,L))

a, b = linear_eq_to_matrix([bc1, bc2, bc3, bc4], [A, B, C, D])

pprint(bc1)
pprint(bc2)
pprint(bc3)
pprint(bc4)

pprint(a)

Я получаю следующий вывод:

enter image description here

Ожидаемый результат:

enter image description here

1 Ответ

0 голосов
/ 16 мая 2018

Похоже, что если вы просто развернете bc4, используя следующую строку кода перед преобразованием системы в матричную форму, вы получите правильный результат:

bc4 = sympy.expand(Eq(0, fnc.diff(z,2).subs(z,L)))

Если остальная часть кода не изменится, этопроизводит следующий вывод:

0 = A + D
0 = A + B⋅L + C⋅sin(L⋅k) + D⋅cos(L⋅k)
        2
0 = -D⋅k 
         2               2         
0 = - C⋅k ⋅sin(L⋅k) - D⋅k ⋅cos(L⋅k)
⎡-1  0        0           -1     ⎤
⎢                                ⎥
⎢-1  -L   -sin(L⋅k)    -cos(L⋅k) ⎥
⎢                                ⎥
⎢                          2     ⎥
⎢0   0        0           k      ⎥
⎢                                ⎥
⎢         2            2         ⎥
⎣0   0   k ⋅sin(L⋅k)  k ⋅cos(L⋅k)⎦
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...