Wrong solution of differential equation using symbolic lambda
Afficher commentaires plus anciens

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 commentaires
John D'Errico
le 23 Nov 2021
Modifié(e) : John D'Errico
le 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
le 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)
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Symbolic Math Toolbox dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!