Неверный вывод символьной формулы
13.10.2021
Привет. Я выполняю вычисления с использованием символьных вычислений. Результат меня удовлетворяет. Однако окончательная формула выводится с ошибкой. Переменные, следующие за уравнением, ссылаются дру...
Привет. Я выполняю вычисления с использованием символьных вычислений. Результат меня удовлетворяет. Однако окончательная формула выводится с ошибкой. Переменные, следующие за уравнением, ссылаются друг на друга. На изображении я отметил один из примеров стрелками.
Формула верна, и при подстановке значений расчет также верен. Только отображение формулы неверно.
clear;
syms S [2 2] matrix
syms F_rad [2 2] matrix
syms V1 V2 [2 1] matrix
F_col1 = symmatrix(F_rad([1 2]).');
F_col2 = symmatrix(F_rad([3 4]).');
syms J [2 2] matrix
% 1
Erad1 =F_rad*V1;
Eref1 = S*J*Erad1;
Ecol1_d1 = F_col1.'*J*Eref1;
Ecol1_d2 = F_col2.'*J*Eref1;
% 2
Erad2 =F_rad*V2;
Eref2 = S*J*Erad2;
Ecol2_d1 = F_col1.'*J*Eref2;
Ecol2_d2 = F_col2.'*J*Eref2;
Eref1_HV = J\([F_col1 F_col2].'\[Ecol1_d1; Ecol1_d2]); % при J=J.'
Eref2_HV = J\([F_col1 F_col2].'\[Ecol2_d1; Ecol2_d2]); % при J=J.'
Eref_HV = [Eref1_HV Eref2_HV];
Erad_HV = [J*Erad1 J*Erad2];
% Final formula
S_calc = (Eref_HV/Erad_HV)
%%%% Result %%%
simplify(symmatrix2sym(S_calc))
Комментарии
Привет. В последней строчке у вас где-то ошибка
Там нет ошибки. Код работает и ответ правильный. Вы же видите, что матлаб зацикливает формулу.
Да, действительно, извините, у меня не стоял Symbolic Math Toolbox, поэтому ошибку выдавало.
Можно задать syms J [2 2], тогда итоговое выражение получится не таким компактным, но при этом не будет закольцованных ссылок
Можно задать по разному. Я написал об ошибке в ТП mathworks в раздел "bug reports", они направили в "Экспоненту". Я написал об ошибке в ТП "Экспоненты", они направили на форум. Я написал об ошибке на форум, мне ответили, что можно воспользоваться другим инструментом). Ну классно)
Это действительно баг, спасибо, что не пожалели времени, чтобы сообщить о нем! В мафворкс об этом написал. Ждем когда поправят, а пока можно обходить тем способом, что я изложил выше.
спасибо
Вы же видите, что матлаб зацикливает формулy
backrooms game