I ran into some problems trying to do some symbolic manipulations in the standard sage interface versus maxima. I wan't to ask is there some way to get sage to behave the same, or do I have rely on maxima to get this substitution to work.
here my code for the sage notebook gui directly calling maxima:
x = maxima('x')
y = maxima('y:(t0*s+a0*t0)/((s^2+s*a)*(s+r1)+s0*s+s1)');
dyds0= maxima('dyds0: diff(y,s0)');
ans = maxima.ratsubst(x,y,dyds0);
the answer as expected is:
ans = -s*x/(s1+s*s0+s^3+(r1+a)*s^2+a*r1*s)
Here is the sage code from the sage notebook not calling maxima directly:
s,r1,s1,s0,t0,a,a0,y,deds0,x = var('s,r1,s1,s0,t0,a,a0,y,deds0,x')
y = (t0*s+a0*t0)/((s^2+s*a)*(s+r1)+s0*s+s1); y
d = (t0*s+a0*t0)
dyds0 = diff(y,s0);
ans = dyds0.substitute(y == x);
ans1 = dyds0.substitute(d == x);
trying to substitute in x for the expression y in the result doesn't work as the result is:
ans = (-(a0*t0 + s*t0)*s/((a*s + s^2)*(r1 + s) + s*s0 + s1)^2
However I try to substitute x for only the numerator in the y expressions (d), it works and the correct result is:
ans1 = -s*x/((a*s + s^2)*(r1 + s) + s*s0 + s1)^2)
as another example:
This works as expected
Q,q,w,e = var('Q,q,w,e')
Q = q/(q+w)
Q.substitute(1/(q+w)==e)
But this doesn't
Q,q,w,e = var('Q,q,w,e')
Q = q/(q+w)^2
Q.substitute(1/(q+w)==e)
again maxima has no problem doing the substitution using ratsubst