В настоящее время я пытаюсь решить систему уравнений, в которой известны h2, eta, B, U
, но пока я оставил их в качестве символических переменных:
clearvars
clc
syms x x0 h0 h1 h2 C2 eta B U
h(x) = h0 + h2*(x/(B/2))^2;
h_bar(x) = h(x)/h0;
hc_bar = 1+(h2/h0)*(x0/(B/2))^2;
x_bar(x) = x/(B/2);
x0_bar = x_bar(x0);
integration = int(((h_bar^2-hc_bar^2)/(h_bar^3)),x);
p(x) = ((3*eta*U*B)/(h0^2))*integration+C2;
p_d(x) = diff(p(x),x);
p_fun1 = p(x0_bar) == 0;
p_fun2 = p_d(x0_bar) == 0;
p_fun3 = p(-1) == 0;
p_fun4 = h1-h0 == h2;
Четыре уравнения, четыре неизвестных, поэтому я смогу решить это. Однако система уравнений немного перегружена, поэтому я решил попытать счастья с vpasolve
:
vpasolve([p_fun1, p_fun2, p_fun3, p_fun4],[x0, h0, h1, C2])
Это приводит к следующей ошибке:
Error using mupadengine/feval (line 166)
Symbolic parameters are not allowed in nonpolynomial equations.
Error in sym/vpasolve (line 172)
sol = eng.feval('symobj::vpasolve',eqns,vars,X0);
Error in Yke (line 35)
vpasolve([p_fun1, p_fun2, p_fun3, p_fun4],[x0, h0, h1, C2])
Я специально отследил ошибку до p_fun1
, но не могу понять, почему эта конкретная функция вызвала ошибку. Это сложно, но p_fun2
является производной от p_fun1
, а p_fun3
- это просто p_fun1
с другим значением, подставленным в уравнение, но они не вызывают ошибку.
Я почти уверен, что ошибка вызвана заменой x
на x_bar
в вызове p_fun1 = p(x0_bar) == 0
, но я не знаю почему, и поэтому я также не знаю, как ее решить. Кто-нибудь видит, что я делаю не так в данный момент?