Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-VPA求解方程组时的解算误差_Matlab - Fatal编程技术网

Matlab-VPA求解方程组时的解算误差

Matlab-VPA求解方程组时的解算误差,matlab,Matlab,我目前正试图解一个方程组,其中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

我目前正试图解一个方程组,其中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试试运气:

这将导致以下错误:

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,在方程中替换了不同的值,但这些不会触发错误

我很确定这个错误是由在p_fun1=px0_bar==0调用中用x_bar替换x引起的,但是我不知道为什么,因此我也不知道如何解决它。有人知道我现在做错了什么吗?

是一个数值解算器事实上,vpa代表可变精度算术,等式中不能有符号参数


因此,您应该将数值替换为所有方程参数。

vpasolve是一个数值解算器,在方程中不能有符号参数;我应该用实数替换所有符号值,而不是将其他符号值留在等式中?除了x0、h0、h1、C2之外,这就是我的意思。你应该把它作为一个答案贴出来,这样我就可以接受它并结束这个问题了。我很困惑,vpasolve Matlab帮助下的所有示例都有符号参数。@Millemila不,它们没有。未知数是符号,但所有系数都是数字。
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])