Решатель системы уравнений Matlab возвращает неправильные ответы - PullRequest
0 голосов
/ 10 февраля 2019

Непонятно, как работает решатель системы уравнений.Я посмотрел на документацию и попытался повторить ее, чтобы получить решение проблемы физики, но получил неправильный ответ.

Проблема, которую я пытаюсь решить, - это проблема физики статики.F1 и F3 - векторы, которые направлены вверх и вправо в первом квадранте.45 градусов представляет угол от оси x до F1, а g представляет угол от оси x до F3.F2 - вектор, направленный вниз и влево в третьем квадранте.45 градусов также представляет угол от оси x до F2.

Проблема состоит в том, чтобы найти значения F3 и g, чтобы сделать систему стабильной.

после получения неправильного ответа я проверил, может ли ответ matlab был просто другим ответом, который такжерешает систему, но после проверки она не работает.

theta = 45;
F1 = 8;
F2 = 16;

syms F3 g;
eq1 = F1*cosd(theta) + F3*cosd(g) == F2*cosd(theta);
eq1 = F1*sind(theta) + F3*sind(g) == F2*sind(theta);

sol = solve([eq1,eq2],[F3,g]);
double(sol.F3)
double(sol.g)

Вывод был F3 = 45 и g = -135

ответ должен быть F3 = 8 и g = 45 градусов.

Я уверен, что уравнения, которые я использовал, верны, потому что, когда я помещал их в десмос и представлял их, я получал правильный ответ.Так что проблема, должно быть, заключалась в моем синтаксисе в скрипте.

1 Ответ

0 голосов
/ 11 февраля 2019

Опечатка здесь:

syms F3 g;
eq1 = F1*cosd(theta) + F3*cosd(g) == F2*cosd(theta);
eq1 = F1*sind(theta) + F3*sind(g) == F2*sind(theta); % HERE

Второе уравнение должно быть eq2, а не eq1.eq2, вероятно, кэшируется из предыдущих вычислений, и вы использовали это вместо этого.

Запустив это сейчас, я получаю:

>> double(sol.F3)

ans =

     8
    -8

>> double(sol.g)

ans =

    45
  -135

Вы можете отказаться от отрицательных решений, поскольку они не имеют физического смыслаТаким образом, вы действительно получаете 8 и 45 в соответствии с вашими ожиданиями.

Советы

Используйте clearvars в вашем скрипте MATLAB перед началом любой работы.Это предотвращает проблемы с кэшированием, такие как указано выше.

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