Unable to find explicit solution
146 次查看(过去 30 天)
显示 更早的评论
Hello,
I am trying to solve an equation for one variable but I get this error message:
Warning: Unable to find explicit solution. For options, see help.
> In sym/solve (line 317)
In untitled (line 15)
sol =
Empty sym: 0-by-1
>>
I searched but could'nt find any solution. I couldn't even understand what the problem is. You can see my code below.
Thanks in advance.
syms t
b=2*t+14.3;
w=3*t+21.45;
A=(w*b)-(w-t)*(b-2*t);
rc=(w*b)*450-(w-t)*(b-2*t)*(450+t/2)/A;
rn=A/(b*log((450-w/2+t)/(450-w/2))+2*w*log((450+w/2)/(450-w/2+t)));
E=rc-rn;
ro=450+w/2;
ri=450-w/2;
Ay=-40260.604300;
M1=56124.523326;
sol=solve((Ay/A)+(M1*(ro-rn))/(A*E*ro)==116, t)
1 个评论
回答(3 个)
Yongjian Feng
2022-1-19
This equation might not even have a solution. Try to plot it:
syms t
b=2*t+14.3;
w=3*t+21.45;
A=(w*b)-(w-t)*(b-2*t);
rc=(w*b)*450-(w-t)*(b-2*t)*(450+t/2)/A;
rn=A/(b*log((450-w/2+t)/(450-w/2))+2*w*log((450+w/2)/(450-w/2+t)));
E=rc-rn;
ro=450+w/2;
ri=450-w/2;
Ay=-40260.604300;
M1=56124.523326;
x = 1:100;
y = feval(matlabFunction((Ay/A)+(M1*(ro-rn))/(A*E*ro)), x);
plot(x, y)
It looks like when t goes up, (Ay/A)+(M1*(ro-rn))/(A*E*ro)) only goes up from negative to 0. Not sure it will ever reach 116.
2 个评论
Yongjian Feng
2022-1-19
Try vpasolve as recommended by Torsten above, your equation results in empty solution. Most likely there is not solution for it.
If you plot, you can see (Ay/A)+(M1*(ro-rn))/(A*E*ro)) is always negative. It might never reach 116 as you want.
sol=vpasolve((Ay/A)+(M1*(ro-rn))/(A*E*ro)==0, t) % this gives empty solution. This equation never reaches positive
sol=vpasolve((Ay/A)+(M1*(ro-rn))/(A*E*ro)==-1, t) % this gives 77.287
Yongjian Feng
2022-1-20
Walter is right. I forgot about t<0 range.
If you plot -100:100, you can see most likely there shall be only one solution.
Walter Roberson
2022-1-19
编辑:Walter Roberson
2022-1-19
If you look carefully at the graph, you can see a couple of discontinuities at negative t values.
At first I thought it was a simple case of the system having non-zero imaginary components in some ranges, but it turns out that there are some steep +/- infinities being generated -- and each of those is an opportunity for a solution.
I saw at least one other candidate stretch for a solution between t = 0 and t = -10
syms t
b=2*t+14.3;
w=3*t+21.45;
A=(w*b)-(w-t)*(b-2*t);
rc=(w*b)*450-(w-t)*(b-2*t)*(450+t/2)/A;
rn=A/(b*log((450-w/2+t)/(450-w/2))+2*w*log((450+w/2)/(450-w/2+t)));
E=rc-rn;
ro=450+w/2;
ri=450-w/2;
Ay=-40260.604300;
M1=56124.523326;
eqn = (Ay/A)+(M1*(ro-rn))/(A*E*ro) == 116
sol=solve(eqn, t)
string(lhs(eqn) - rhs(eqn))
vpasolve(eqn, [-7.985, -7.98])
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calculus 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!