Collect does not do the job

5 visualizaciones (últimos 30 días)
Mohammad Shojaei Arani
Mohammad Shojaei Arani el 23 de Nov. de 2021
Comentada: Mohammad Shojaei Arani el 24 de Nov. de 2021
Dear friends,
I have a simple question but after spending an hour I could not figur out how to fix it. So, apologies if this is a simple problem for you. As you see in bellow, I would like to write the following expression in a more compact way:
syms y y0 muY(y) dt
f=(y*diff(muY(y), y, y) - y0*diff(muY(y), y, y) + 2*muY(y)^2 + 2*diff(muY(y), y) + 2*y*muY(y)*diff(muY(y), y) - 2*y0*muY(y)*diff(muY(y), y))/dt;
More clearly, I need to re-write f in terms of (y-y0). As you see, we can do it as bellow (the command collect(f,y-y0) does not work, unfortuantely. Also, the rewrite command is limitted to soem special target functions):
f=((y-y0)*diff(muY(y), y, y) + 2*muY(y)^2 + 2*diff(muY(y), y) + 2*(y-y0)*muY(y)*diff(muY(y), y) )/dt;
which is a much nicer representation for the calculations I need to do.
Any idea?
Thanks in advance!
Babak

Respuesta aceptada

Paul
Paul el 23 de Nov. de 2021
Here is one approach showing step-by-step. Many could be combined. Maybe there is a simpler way?
syms y y0 muY(y) dt
f=(y*diff(muY(y), y, y) - y0*diff(muY(y), y, y) + 2*muY(y)^2 + 2*diff(muY(y), y) + 2*y*muY(y)*diff(muY(y), y) - 2*y0*muY(y)*diff(muY(y), y))/dt
f = 
syms D2Y DY
f = subs(f,diff(muY,y,2),D2Y)
f = 
f =subs(f,diff(muY,y),DY)
f = 
[numf,denf] = numden(f)
numf = 
denf = 
dt
syms dely
numf = subs(numf,y,dely + y0)
numf = 
numf = simplify(numf)
numf = 
numf = subs(numf,dely+y0,y)
numf = 
numf = subs(numf,DY,diff(muY))
numf = 
numf = subs(numf,D2Y,diff(muY,y,2))
numf = 
numf = subs(numf,dely,y-y0)
numf = 
f = numf/denf
f = 
  1 comentario
Mohammad Shojaei Arani
Mohammad Shojaei Arani el 24 de Nov. de 2021
Hi Paul,
That was clever!
Since my intention for such a simplification was to reduce computational time for what I had in mind, I wonder if your recepie is suitable since it also needs quite
a lot of substitutions (given the fact that subs is slow, unfortunately, for very long
algebraic expressions I have. So, this was just a tiny part of my symbolic expressions and I just showed the tip of ice burg!). However, your idea is a good starting point for me to work on and see if I can improve it.
Thanks a lot for your precious time!
Babak

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by