#6756: [with patch, needs review] Implement ``diff`` format symbolic derivative
in
new symbolics
-------------------------+--------------------------------------------------
Reporter: gmhossain | Owner:
Type: enhancement | Status: new
Priority: major | Milestone:
Component: symbolics | Keywords:
Reviewer: | Author: Golam Mortuza Hossain
Merged: |
-------------------------+--------------------------------------------------
Comment(by ncalexan):
I am interested in reviewing this, but I'm not sure that I can at this
time. I have a heavily modified {{{Sage Version 4.1.rc1, Release Date:
2009-07-07}}} tree that I can't really upgrade right now. I have applied
this patch and installed your modified spkg. I am getting the following
doctest failures
{{{
-*- mode: sage-test; default-directory: "~/sage-4.1-OSX-10.5-Intel-
64bit-i386-Darwin/devel/sage-main/sage/symbolic/" -*-
sage-test started at Fri Aug 21 10:18:46
/Users/ncalexan/bin/sage -b >/dev/null && /Users/ncalexan/bin/sage -tp 4
/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel/sage-
main/sage/symbolic/derivative.py
real 0m2.361s
user 0m1.297s
sys 0m0.591s
Global iterations: 1
File iterations: 1
Using cached timings to run longest doctests first.
Doctesting 1 files doing 4 jobs in parallel
sage -t derivative.py
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 51:
sage: f(x).diff(x)
Expected:
diff(f(x), x, 1)
Got:
D[0](f)(x)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 53:
sage: diff(f(x), x, 1)
Expected:
diff(f(x), x, 1)
Got:
D[0](f)(x)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 68:
sage: h.diff(x)
Expected:
diff(f(x), x, n + 1)
Got:
D[0](diff)(f(x), x, n)*D[0](f)(x) + D[1](diff)(f(x), x, n)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 112:
sage: f(x^2).diff(x)
Expected:
diff(f(x^2), x, 1)
Got:
2*x*D[0](f)(x^2)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 118:
sage: f(x^2).diff(x)
Expected:
2*x*diff(f(x^2), x^2, 1)
Got:
2*x*D[0](f)(x^2)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 121:
sage: f(sin(x^2)).diff(x)
Expected:
2*x*cos(x^2)*diff(f(sin(x^2)), sin(x^2), 1)
Got:
2*x*D[0](f)(sin(x^2))*cos(x^2)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 124:
sage: g(x,f(x)).diff(x)
Expected:
diff(f(x), x, 1)*diff(g(x, f(x)), f(x), 1) + diff(g(x, f(x)), x, 1)
Got:
D[0](f)(x)*D[1](g)(x, f(x)) + D[0](g)(x, f(x))
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 129:
sage: symbolic_diff(f(x^2), x, 1)
Expected:
diff(f(x^2), x, 1)
Got:
2*x*D[0](f)(x^2)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 138:
sage: g(x,x).diff(x)
Expected:
2*diff(g(x, x), x, 1)
Got:
D[0](g)(x, x) + D[1](g)(x, x)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 147:
sage: h = f(x).diff(x); h
Expected:
diff(f(x), x, 1)
Got:
D[0](f)(x)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 149:
sage: h.subs(f(x)==x^4)
Expected:
4*x^3
Got:
D[0](f)(x)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 155:
sage: h = f(x^2).diff(x); h
Expected:
2*x*diff(f(x^2), x^2, 1)
Got:
2*x*D[0](f)(x^2)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 157:
sage: h.subs(f(x^2)==x^4)
Expected:
4*x^3
Got:
2*x*D[0](f)(x^2)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 159:
sage: symbolic_diff(f(x)^2, f(x), 1)
Expected:
2*f(x)
Got:
diff(f(x)^2, f(x), 1)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 186:
sage: h = f(x).diff(x) + f(x^2).diff(x); h
Expected:
2*x*diff(f(x^2), x^2, 1) + diff(f(x), x, 1)
Got:
2*x*D[0](f)(x^2) + D[0](f)(x)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 217:
sage: f(x,y).diff(x,y)
Expected:
diff(f(x, y), x, 1, y, 1)
Got:
D[0, 1](f)(x, y)
**********************************************************************
File "/Users/ncalexan/sage-4.1-OSX-10.5-Intel-64bit-i386-Darwin/devel
/sage-main/sage/symbolic/derivative.py", line 219:
sage: f(x,y).diff(x,2)
Expected:
diff(f(x, y), x, 2)
Got:
D[0, 0](f)(x, y)
**********************************************************************
2 items had failures:
15 of 40 in __main__.example_1
2 of 10 in __main__.example_2
***Test Failed*** 17 failures.
For whitespace errors, see the file /Users/ncalexan/sage-4.1-OSX-10.5
-Intel-64bit-i386-Darwin/tmp/.doctest_derivative.py
[3.8 s]
----------------------------------------------------------------------
The following tests failed:
sage -t devel/sage-main/sage/symbolic/derivative.py # 17 doctests
failed
----------------------------------------------------------------------
Total time for all tests: 4.1 seconds
sage-test finished with failing tests at Fri Aug 21 10:18:53
}}}
When I work from the command line, I get things like
{{{
sage: default_level=set_diff_derivative_level()
sage: set_diff_derivative_level(1)
sage: f(x) = function('f', x)
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
/Users/ncalexan/.sage/temp/mero.local/93112/_Users_ncalexan__sage_init_sage_1.py
in <module>()
/Users/ncalexan/sage-4.1-OSX-10.5-Intel-
64bit-i386-Darwin/local/lib/python2.6/site-packages/sage/calculus/var.so
in sage.calculus.var.function (sage/calculus/var.c:709)()
/Users/ncalexan/sage-4.1-OSX-10.5-Intel-
64bit-i386-Darwin/local/lib/python2.6/site-
packages/sage/symbolic/function.so in
sage.symbolic.function.SFunction.__call__
(sage/symbolic/function.cpp:4655)()
TypeError: Symbolic function f takes exactly 2 arguments (1 given)
}}}
So there must be some calculus or symbolic patches that I'm missing. Any
suggestions?
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6756#comment:2>
Sage <http://sagemath.org/>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---