Любой возможный шаг, когда MATLAB не может найти явное решение? - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь решить проблему с помощью MATLAB, где у меня есть 9 неизвестных и 8 уравнений, и моя цель состоит в том, чтобы записать значение F как функцию x2: F=f(x2), чтобы я мог дать разные значениядо x2 и получим F.Реализованный код:

%-------- Variables description -------
%3 constants: P, h and c
%9 unknowns: F, x1,...,x8

syms F P h c x1 x2 x3 x4 x5 x6 x7 x8

%--------System of 8 Equations---------
Eq1 = F == P/(x1*x2/x3);
Eq2 = x1 == x3 - h;
Eq3 = x4 == x2 - x1;
Eq4 = x5 == sqrt(x4^2+(h-c)^2);
Eq5 = x6 == sqrt(x3^2+(x1+x4)^2);
Eq6 = x6 == 3*x5;
Eq7 = x7 == atan((h-c)/x4);
Eq8 = x8 == atan(x3/(x1+x4));

%----------------Solver----------------
Solution = solve([Eq1, Eq2, Eq3, Eq4, Eq5, Eq6, Eq7, Eq8],...
[F P c h x1 x3 x4 x5 x6 x7 x8]);

%----- Solution desired: F=f(x2) ------
Solution.F

Тем не менее, этот код выдает:

«Невозможно найти явное решение».

Я не уверен, почему у меня была эта проблема.Возможно ли получить решение?

1 Ответ

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

Следующий код решает это для меня.Вы можете генерировать различные решения, варьируя x2 в уравнении (9).Ваша проблема в том, что вы передаете P, c, h решателю.Таким образом, он не обрабатывает их как заданные константы.

syms F P h c x1 x2 x3 x4 x5 x6 x7 x8

%--------System of 8 Equations---------
Eq1 = F == P/(x1*x2/x3);
Eq2 = x1 == x3 - h;
Eq3 = x4 == x2 - x1;
Eq4 = x5 == sqrt(x4^2+(h-c)^2);
Eq5 = x6 == sqrt(x3^2+(x1+x4)^2);
Eq6 = x6 == 3*x5;
Eq7 = x7 == atan((h-c)/x4);
Eq8 = x8 == atan(x3/(x1+x4));
Eq9 = x2 == 5;

%----------------Solver----------------
Solution = solve([Eq1, Eq2, Eq3, Eq4, Eq5, Eq6, Eq7, Eq8, Eq9],...
[F x1 x2 x3 x4 x5 x6 x7 x8]);

%----- Solution desired: F=f(x2) ------
Solution.F

Кроме того, вы можете использовать fsolve в качестве числового решателя для нелинейных уравнений

Ссылка на документацию Документация Matlab дляFSolve

...