Dsolve giving implicit solution
古いコメントを表示
Hello,
I am new to Matlab and am trying to solve a heat transfer problem between two heated bodies. I wrote the commands as below, where A,B,C,D and E are all constant values which are already defined and caluclated. On attempting to solve the diff eqn though I am getting this kind of message. Is there something I am doing wrong or should use a different solver or is there a way to make sense out of the solution. My aim would be to get a plot of T vs t. The Diff eqn itself is not implicit so not sure why the solution is coming out implicit.
>> syms A B C D E T(t);
>> ode = diff(T,t) == B + C - A*(T^4) - D*T;
>> cond = T(0) == 673;
>> Tsol(t) = dsolve(ode,cond)
Warning: Unable to find explicit solution. Returning implicit solution instead.
> In dsolve (line 208)
Tsol(t) =
solve(t + symsum(root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k)*(log(T - 4*B*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k) - 4*C*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k) + 3*D*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k)*T) + 3*log(A) + log(root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k)) + log(12*D*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k) + 4) + pi*1i), k, 1, 4) - symsum(root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k)*(log(2019*D*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k) - 4*C*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k) - 4*B*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k) + 673) + 3*log(A) + log(root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k)) + log(12*D*root(8*D*b + 18*D^2*b^2 - 27*D^4*b^4 - 256*A*B^3*b^4 - 256*A*C^3*b^4 - 768*A*B*C^2*b^4 - 768*A*B^2*C*b^4 + 1, b, k) + 4) + pi*1i), k, 1, 4) == 0, T)
2 件のコメント
Walter Roberson
2020 年 10 月 2 日
Which release are you using? R2020a is returning empty for me.
Walter Roberson
2020 年 10 月 2 日
I do not recall ever having seen solve() introduce a variable named b . Especially not within root() -- the variable that it takes the root() of is almost always z, except in cases where z already occurs inside the expression, in which case root() uses numbered z variables such as z1 .... At least in my experience.
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Numerical Integration and Differential Equations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!