Wrong solution of differential equation using symbolic lambda
Ältere Kommentare anzeigen

As can be seen in the screenshot I have a problem with the symbol lambda in matlab R2021B. If lambda is used instead of the variable L, a wrong solution for the differential equation is obtained. What can be the cause for this problem? Many thanks in advance!
clear all
syms R(r) L
assume(L, "real")
assume(L > 0)
vgl = r*diff(R(r),2,r) + diff(R(r),1,r) == L*r*R(r)
dsolve(vgl)
clear all
syms R(r) lambda
assume(lambda, "real")
assume(lambda > 0)
vgl = r*diff(R(r),2,r) + diff(R(r),1,r) == lambda*r*R(r)
dsolve(vgl)
3 Kommentare
John D'Errico
am 23 Nov. 2021
Bearbeitet: John D'Errico
am 23 Nov. 2021
It is so much easier for someone to help you, if you just pasted in text showing the problem. Now someone needs to rewrite your code to show what is happening, or even to test out your assertions of what happened. As well, to be able to test out your assertions, you need to tell people which release of MATLAB you see this happen in, as otherwise we cannot help you. Could this be some strange bug in an old release, that got fixed since? Maybe. (It cannot be too old a release, since you used " quotes on "real".)
Another possibility is, these are the same solution, merely using different Bessel functions. One would need to verify they are not both valid solutions.
Is there a good reason why you would want to make it more difficult to get help?
Kevin Oyen
am 23 Nov. 2021
I don't have an answer, but the result seems (strangely) to depend on the case (upper or lower) of the first character of the variable. Is there way you can check if the solutions are equivalent? I wasn't sure how to choose the Ci.
syms R(r) L
assume(L, "real")
assume(L > 0)
vgl = r*diff(R(r),2,r) + diff(R(r),1,r) == L*r*R(r);
dsolve(vgl)
syms R(r) lambda
assume(lambda, "real")
assume(lambda > 0)
vgl = r*diff(R(r),2,r) + diff(R(r),1,r) == lambda*r*R(r);
dsolve(vgl)
syms R(r) Lambda
assume(Lambda, "real")
assume(Lambda > 0)
vgl = r*diff(R(r),2,r) + diff(R(r),1,r) == Lambda*r*R(r);
dsolve(vgl)
syms R(r) AAA
assume(AAA, "real")
assume(AAA > 0)
vgl = r*diff(R(r),2,r) + diff(R(r),1,r) == AAA*r*R(r);
dsolve(vgl)
syms R(r) aAA
assume(aAA, "real")
assume(aAA > 0)
vgl = r*diff(R(r),2,r) + diff(R(r),1,r) == aAA*r*R(r);
dsolve(vgl)
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Symbolic Math Toolbox finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!