kittur
(Aslam Kittur)
April 10, 2021, 6:10pm
1
Why does my DSolve command does not solve the Non-linear ODEs?
Clear[“Global`*”]
(*Parameters*)
length = 1.5;
width = 0.25;
height = 0.25;
area = width*height;
cforce = -400;
dforce = (500*(X1^2));
stress = 10*displacement'[X1] + 100000*displacement'[X1]^3;
DE1 = D[stress*area, X1] + dforce;
DE2 = 10*displacement'[X1] + 100000*displacement'[X1]^3 + 6400;
(* Solving for the Exact Displacement Function *)
solution =
DSolve[{DE1 == 0, displacement[0] == 0, DE2 == 0 /. X1 -> length},
displacement[X1], X1];
displacement = displacement[X1] /. solution[[1]];
Print["The Exact Displacement Function of the Bar is"]
Print[displacement];
Print[Plot[{displacement}, {X1, 0, 1.5}, AspectRatio -> 0.4,
AxesLabel -> {"Bar Length (m)", "Axial Displacement (m)"},
PlotLegends -> {"Exact Displacement of the Bar"}]];
Print[" "]
I tried with numerics with NDSolve the kernel shutdown looks like a bug on Mathematica 12.2.0
Maybe you can try:
solution =
Block[{Integrate},
DSolve[Rationalize[{DE1 == 0, displacement[0] == 0,
DE2 == 0 /. X1 -> length}, 0],
displacement[X1], {X1, 0, 3/2}] /. {Integrate ->
Inactive[Integrate]}] // Simplify // Activate
but answer is very complicated solution by InverseFunction and Integrals.
I don’t have time to solve this problem.
Regards M.I.
kittur
(Aslam Kittur)
April 12, 2021, 7:24am
3
Thank for your help.
Yes, I had also tried changing the code, as there are two DEs with one BC associated with each. But both the DEs are related, in a way creates a non-solvable loop, at least this is what it seems.
There will be way to set up the problem differently, for it to be solved. I will work on this.
Thanks
danl
(Daniel Lichtblau)
April 12, 2021, 2:44pm
4
I reported the NDSolve crash as a bug.