Если вы знаете y
, вы можете решить для x
, и это даже безоговорочно как второе уравнение в монотонном в x
x = fsolve(@(x) y^2-1413.7*x-1095.2*cos(x)+2169, 0)
Затем, когда вы знаете x
, вы может решить для z
, используя известный обратный косинус
z = acos(0.20978-cos(x))
Это может фактически не дать результата, если cos(x)
приближается к -1
. Можно искусственно вырезать эту ошибку, введя, возможно, неправильное решение
z = acos(min(1,0.20978-cos(x)))
Для простоты соберите эти операции в вспомогательную функцию
function [x,z] = solve_xz(y)
x = fsolve(@(x) y^2-1413.7*x-1095.2*cos(x)+2169, 0);
z = acos(min(1,0.20978-cos(x)));
end
Теперь используйте это, чтобы получить ODE для y
function dy = ode_y(t,y)
[x,z] = solve_xz(y(1));
dy = [ y(2); y(3); 6666.6667*(z-x)-333.3333*y(1)-33.3333*y(2)-5*y(3) ];
end
и примените решатель ODE по вашему выбору. Вполне вероятно, что система жесткая, поэтому ode45
может быть не лучшим решением.