Упростите выражение eigensolution с помощью wxmaxima - PullRequest
0 голосов
/ 11 июня 2018

Случайно я встретил эту странную ситуацию, описанную ниже.

Матрица жесткости K и матрица масс M имеют вид:

K: матрица ([141, -39,9], [- 39,21,9], [9,9,21]);

M: матрица ([1,5,0,0], [0,0.5,0], [0,0,0.5]);

Собственные значения затем определяются следующим образом:

eig: собственные значения (инвертировать (M) .K);

Все они реальны.

Однако, если я изменю матрицу масс M на что-то вроде:

M: матрица ([2,0,0], [0,0,5,0], [0,0,0,5]);

или даже:

M: матрица ([1.51,0,0], [0,0,5,0], [0,0,0,5]);

или, иначе:

M: матрица ([1,499,0,0], [0,0,5,0], [0,0,0,5]);

затем полученные собственные значениябольше не являются реальными (странная вещь).

Я также пытался упростить полученные результаты (используя simp, ratsimp, fullratsimp, demoivre), но мне не удалось преобразовать полученные собственные значения (выражения со сложнымицифры) в реальные.

Не могли бы вы помочь мне?Заранее спасибо.

1 Ответ

0 голосов
/ 18 июня 2018

Что происходит, так это то, что результаты содержат мнимую единицу %i, но на самом деле они не являются сложными.Я думаю float(rectform(eig)) покажет воображаемые части, которые имеют порядок эпсилона с плавающей точкой.Вы можете очистить вывод через rectform (т.е. вернуть прямоугольную форму rp + i times ip) и radcan (т.е. вернуть "каноническое" представление радикалов).Например, radcan(rectform(eig)).

Если вам нужны только числовые значения собственных значений, рассмотрите возможность использования dgeev из пакета дополнений lapack.Например, load(lapack); dgeev(somematrix); Вы можете увидеть больше информации об этом через ? dgeev.

Наконец, обратите внимание также, что Maxima довольно сильно предпочитает точные числа (целые и рациональные числа) в символьных вычислениях.Поэтому подумайте о применении ratsimp к выражениям с плавающей запятой перед вызовом символических алгоритмов, таких как eigenvalues.Maxima будет рационализировать поплавки автоматически, но это может прояснить ситуацию, если вы увидите рациональную форму, которая является фактическим входом.

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