error while solving non linear equation
Informazioni
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
Mostra commenti meno recenti
I have a equation that needs to be solved with respect to t. NOTE THAT t is in 3 different forms (t^a, b^t and exp (ct))
vz=1.5;
syms t;
syms x;
syms y;
here x and y represents co-ordinates in Cartesian plane.
a=((-0.075)*(2.510^t)*(vz^0.973))+1;
b=((0.006)*(1.2^t)*(vz^2.559))+1;
c=0.076*(t^1.677)*(vz^0.775);
rho= 1-(exp (-0.8*(t*0.2248)^(0.4488)));
Where,
RHS=rho^2;
LHS=((x- (vz*t)-c)^2/a^2)+(y^2/b^2);
In order to solve with respect to t,
eqn= RHS-LHS==0;
then i have tried to use the solve function
solx = solve(eqn,t)
i end up with the ERROR message
solx =
Empty sym: 0-by-1
does it mean there is no possible solution to this equation?? or am I making some mistake here?
Risposte (1)
Walter Roberson
il 9 Set 2018
0 voti
There is no usedfull closed form solution for what you posted. For example at (2,5) you need to solve
(1/625)*((-194400000000*2^(117/250)*3^(133/250)*753000^t-1968300000*2^(909/1000)*3^(91/1000)*903600^t+270000000000*2^(27/500)*3^(473/500)*1575025^t+10935000000*2^(99/200)*3^(101/200)*1890030^t+110716875*2^(117/125)*3^(8/125)*2268036^t+8748000000*2^(441/500)*3^(59/500)*360000^t-4800000000000*2^(27/1000)*3^(973/1000)*627500^t+864000000000*2^(441/1000)*3^(559/1000)*300000^t+64000000000000*250000^t)*exp(-(4/125)*5^(128/625)*2^(689/1250)*281^(561/1250)*(t^561)^(1/1250))+(388800000000*2^(117/250)*3^(133/250)*753000^t+3936600000*2^(909/1000)*3^(91/1000)*903600^t-540000000000*2^(27/500)*3^(473/500)*1575025^t-21870000000*2^(99/200)*3^(101/200)*1890030^t-221433750*2^(117/125)*3^(8/125)*2268036^t-17496000000*2^(441/500)*3^(59/500)*360000^t+9600000000000*2^(27/1000)*3^(973/1000)*627500^t-1728000000000*2^(441/1000)*3^(559/1000)*300000^t-128000000000000*250000^t)*exp(-(2/125)*5^(128/625)*2^(689/1250)*281^(561/1250)*(t^561)^(1/1250))+(9728000000000*2^(9/40)*3^(31/40)*250000^t+393984000000*2^(333/500)*3^(167/500)*300000^t+2659392000*2^(107/1000)*3^(893/1000)*360000^t)*t^(1677/1000)+(-7296000000000*2^(9/40)*3^(31/40)*250000^t-295488000000*2^(333/500)*3^(167/500)*300000^t-1994544000*2^(107/1000)*3^(893/1000)*360000^t)*t^(2677/1000)+(-277248000000*2^(9/20)*3^(11/20)*250000^t-75792672*2^(83/250)*3^(167/250)*360000^t-11228544000*2^(891/1000)*3^(109/1000)*300000^t)*t^(1677/500)+(-144000000000000*t^2+384000000000000*t-1792000000000000)*250000^t-1944000000000*(t-2)*(t-2/3)*2^(441/1000)*3^(559/1000)*300000^t-19683000000*(t-2)*(t-2/3)*2^(441/500)*3^(59/500)*360000^t-194400000000*2^(117/250)*3^(133/250)*753000^t-1968300000*2^(909/1000)*3^(91/1000)*903600^t-6480000000000*2^(27/500)*3^(473/500)*1575025^t+10935000000*2^(99/200)*3^(101/200)*1890030^t+110716875*2^(117/125)*3^(8/125)*2268036^t+115200000000000*2^(27/1000)*3^(973/1000)*627500^t)/((3*2^(27/1000)*251^t*3^(973/1000)-80*100^t)^2*(27*6^t*2^(441/1000)*3^(559/1000)+4000*5^t)^2)
The numeric solution is approximately 31.047-ish, at which point the expression involves intermediate values exceeding 10^800 and you probably are not going to get an semi-accurate solution unless you work at hundreds of digits of accuracy
With the many constant^t and some t^constants in there, your only hope of a closed-form solution would be if it happened to be expressible in terms of a LambertW, but it is too complicated for that.
3 Commenti
salman
il 9 Set 2018
Walter Roberson
il 9 Set 2018
No, I think your expression is too complicated to solve.
Sometimes when you have constant^x * x^constant = value then such a system can be solved with LambertW, such as
solve(3^x*x^5==10)
However, it takes very little to make the system something there is no closed form solution for, such as
solve(x+3^x*x^5==10)
You will not be able to get an expression like t = x^3+y^2 .... . The closest you will be able to get is RootOf(f(x,y,t),t) of a long expression, which just stands in for the set of t such that f(x,y,t) is 0, with there being no expression for what those roots are.
You can approximate, such as taylor degree 2 at t = 5, combine, simplify, solve, combine. I would not advise simplify() at that point as it will take a long time. You can get a closed form expression at taylor degree 2; I did not try higher degree.
The expression is pretty long even at taylor degree 2. If you take a floating point approximation, it comes out as roughly
.8333333333333333*(0.4924182573809876e61*x-0.2737073160317027e61*y^2-0.3025146162082962e60*x^2-0.1940418887480355e62)/(0.7386234910140785e60*x-0.3132071752908527e59*y^2-0.4588308630739825e59*x^2-0.3012491996979935e61)
You can see from these that the approximation would suffer badly from round-off error problems. I would not expect the approximation to be of much value at degree 2.
salman
il 9 Set 2018
Questa domanda è chiusa.
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!