我目前正在尝试解决方程组,其中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
造成的,但我不知道为什么,因此我也不知道如何解决它。有谁看到我现在做错了什么?