新人求助 用FindRoot做微分方程的数值分析
mathematica吧
全部回复
仅看楼主
level 2
企鹅王🎄 楼主
代码如下,一直报错[泪]求大佬们指教
In[2377]:= a1 = 1;
a0 = 0.1;
a = 0.6;
UR = 1;
T = 1;
theta = 2;
NU = 1;
k = 0.01;
In[2385]:= (*Other conditions*)
ax = b/((1 - Sqrt[q]) T theta) + (k x)/(T theta);
NM = x - NU - NH;
G = ((a T theta -
k x) ((a1 - ax) b + (-a0 + a1) k x))/(-2 a0 k (NH + NU +
NM q) + 2 a1 k (NH + NU + NM q) + a a1 T theta -
a a0 q T theta - a1 k x + a0 k q x +
ax (-1 + q) (a T theta - k x));
In[2388]:= (*Equilibriums for analysis*)
In[2389]:=
y1 = Exp[a1]*(a1*theta*T - b -
k*x)^(1/(2*theta^2))*(ax*theta*T - k*x)^(1/(2*theta^2))/(Exp[
a0]*(a0*theta*T - k*x)^(1/(2*theta^2))*(ax*theta*T - b -
k*x)^(1/(2*theta^2))) - ( Exp[UR*(a1 - a0)]);
In[2390]:= y2 = NH + ((a1 - ax) NM)/(a0 - ax);
In[2391]:= y3 = 1/2*k*x^2 + NH*b - ((NU + NH)*G + NM*q*G);
In[2392]:=
y4 = 1/(G (NH + NU +
NM q)) - ((2 k^2 (ax^2 k^2 (-2 b + (-a0 + a1) T theta) +
2 ax k (b (-b + a1 T theta) +
T theta (b + (a0 - a1) T theta) x) +
T theta (a0 b (b - a1 T theta) +
b (b + (a0 - a1) T theta) x -
T theta (b + (a0 - a1) T theta) x^2)))/((-1 + Sqrt[
q])^2 Sqrt[q]
T^2 theta^2 (-ax k + a0 T theta) (b + ax k -
a1 T theta) (a T theta -
k x) (-2 G NM + ((a0 - a1) b G NH)/((a1 - ax)^2 (-1 + Sqrt[
q])^2 Sqrt[q]
T theta) + ((a0 - a1) b (b - G) NM)/((a0 - ax)^2 (-1 +
Sqrt[q])^2 Sqrt[q]
T theta) + (k^2 x (ax^2 k^2 (-2 b + (-a0 + a1) T theta) +
2 ax k (b (-b + a1 T theta) +
T theta (b + (a0 - a1) T theta) x) +
T theta (a0 b (b - a1 T theta) +
b (b + (a0 - a1) T theta) x -
T theta (b + (a0 - a1) T theta) x^2)))/((-1 + Sqrt[
q])^2 Sqrt[q]
T^2 theta^2 (-ax k + a0 T theta) (b + ax k -
a1 T theta)))));
In[2393]:= (*assigned exogenous variables*)
a1 = 1;
a0 = 0.1;
a = 0.6;
UR = 1;
T = 1;
theta = 2;
NU = 1;
k = 0.01;
(*Conditions to be satisfied*)
a*T*theta - k*x > 0;
b/((1 - Sqrt[q])*theta*T) + k*x/(theta*T) < 1;
In[2403]:= FindRoot[{y1 == 0, y2 == 0, y3 == 0,
y4 == 0}, {NH, 1} {b, 0}, {q, 0.09}, {x, 10}]
\:6B63\:5728\:8BA1\:7B97In[2403]:= FindRoot::fdss: Search specification {NH,1} {b,0} should be a list with 1 to 5 elements.
Out[2403]= FindRoot[{y1 == 0, y2 == 0, y3 == 0,
y4 == 0}, {NH, 1} {b, 0}, {q, 0.09}, {x, 10}]
2022年10月16日 04点10分 1
吧务
level 10
FindRoot用法错误。
多个变量应把它们的specification放在一个列表里作为第二参数。
2022年10月16日 13点10分 3
1