Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagelib
Path: blob/master/sage/calculus/test_sympy.py
4078 views
1
r"""
2
A Sample Session using SymPy
3
4
In this first part, we do all of the examples in the SymPy tutorial
5
(http://code.google.com/p/sympy/wiki/Tutorial), but using Sage
6
instead of SymPy.
7
8
::
9
10
sage: a = Rational((1,2))
11
sage: a
12
1/2
13
sage: a*2
14
1
15
sage: Rational(2)^50 / Rational(10)^50
16
1/88817841970012523233890533447265625
17
sage: 1.0/2
18
0.500000000000000
19
sage: 1/2
20
1/2
21
sage: pi^2
22
pi^2
23
sage: float(pi)
24
3.141592653589793
25
sage: RealField(200)(pi)
26
3.1415926535897932384626433832795028841971693993751058209749
27
sage: float(pi + exp(1))
28
5.85987448204883...
29
sage: oo != 2
30
True
31
32
::
33
34
sage: var('x y')
35
(x, y)
36
sage: x + y + x - y
37
2*x
38
sage: (x+y)^2
39
(x + y)^2
40
sage: ((x+y)^2).expand()
41
x^2 + 2*x*y + y^2
42
sage: ((x+y)^2).subs(x=1)
43
(y + 1)^2
44
sage: ((x+y)^2).subs(x=y)
45
4*y^2
46
47
::
48
49
sage: limit(sin(x)/x, x=0)
50
1
51
sage: limit(x, x=oo)
52
+Infinity
53
sage: limit((5^x + 3^x)^(1/x), x=oo)
54
5
55
56
::
57
58
sage: diff(sin(x), x)
59
cos(x)
60
sage: diff(sin(2*x), x)
61
2*cos(2*x)
62
sage: diff(tan(x), x)
63
tan(x)^2 + 1
64
sage: limit((tan(x+y) - tan(x))/y, y=0)
65
cos(x)^(-2)
66
sage: diff(sin(2*x), x, 1)
67
2*cos(2*x)
68
sage: diff(sin(2*x), x, 2)
69
-4*sin(2*x)
70
sage: diff(sin(2*x), x, 3)
71
-8*cos(2*x)
72
73
::
74
75
sage: cos(x).taylor(x,0,10)
76
-1/3628800*x^10 + 1/40320*x^8 - 1/720*x^6 + 1/24*x^4 - 1/2*x^2 + 1
77
sage: (1/cos(x)).taylor(x,0,10)
78
50521/3628800*x^10 + 277/8064*x^8 + 61/720*x^6 + 5/24*x^4 + 1/2*x^2 + 1
79
80
::
81
82
sage: matrix([[1,0], [0,1]])
83
[1 0]
84
[0 1]
85
sage: var('x y')
86
(x, y)
87
sage: A = matrix([[1,x], [y,1]])
88
sage: A
89
[1 x]
90
[y 1]
91
sage: A^2
92
[x*y + 1 2*x]
93
[ 2*y x*y + 1]
94
sage: R.<x,y> = QQ[]
95
sage: A = matrix([[1,x], [y,1]])
96
sage: print A^10
97
[x^5*y^5 + 45*x^4*y^4 + 210*x^3*y^3 + 210*x^2*y^2 + 45*x*y + 1 10*x^5*y^4 + 120*x^4*y^3 + 252*x^3*y^2 + 120*x^2*y + 10*x]
98
[ 10*x^4*y^5 + 120*x^3*y^4 + 252*x^2*y^3 + 120*x*y^2 + 10*y x^5*y^5 + 45*x^4*y^4 + 210*x^3*y^3 + 210*x^2*y^2 + 45*x*y + 1]
99
sage: var('x y')
100
(x, y)
101
102
And here are some actual tests of sympy::
103
104
sage: from sympy import Symbol, cos, sympify, pprint
105
sage: from sympy.abc import x
106
107
::
108
109
sage: e = sympify(1)/cos(x)**3; e
110
cos(x)**(-3)
111
sage: f = e.series(x, 0, 10); f
112
1 + 3*x**2/2 + 11*x**4/8 + 241*x**6/240 + 8651*x**8/13440 + O(x**10)
113
114
And the pretty-printer::
115
116
sage: pprint(e)
117
1
118
-------
119
3
120
cos (x)
121
sage: pprint(f)
122
2 4 6 8
123
3*x 11*x 241*x 8651*x
124
1 + ---- + ----- + ------ + ------- + O(x**10)
125
2 8 240 13440
126
127
And the functionality to convert from sympy format to Sage format::
128
129
sage: e._sage_()
130
cos(x)^(-3)
131
sage: e._sage_().taylor(x._sage_(), 0, 8)
132
8651/13440*x^8 + 241/240*x^6 + 11/8*x^4 + 3/2*x^2 + 1
133
sage: f._sage_()
134
8651/13440*x^8 + 241/240*x^6 + 11/8*x^4 + 3/2*x^2 + 1
135
136
Mixing SymPy with Sage::
137
138
sage: import sympy
139
sage: sympy.sympify(var("y"))+sympy.Symbol("x")
140
x + y
141
sage: o = var("omega")
142
sage: s = sympy.Symbol("x")
143
sage: t1 = s + o
144
sage: t2 = o + s
145
sage: type(t1)
146
<class 'sympy.core.add.Add'>
147
sage: type(t2)
148
<type 'sage.symbolic.expression.Expression'>
149
sage: t1, t2
150
(omega + x, omega + x)
151
sage: e=sympy.sin(var("y"))+sage.all.cos(sympy.Symbol("x"))
152
sage: type(e)
153
<class 'sympy.core.add.Add'>
154
sage: e
155
sin(y) + cos(x)
156
sage: e=e._sage_()
157
sage: type(e)
158
<type 'sage.symbolic.expression.Expression'>
159
sage: e
160
sin(y) + cos(x)
161
sage: e = sage.all.cos(var("y")**3)**4+var("x")**2
162
sage: e = e._sympy_()
163
sage: e
164
x**2 + cos(y**3)**4
165
166
::
167
168
sage: a = sympy.Matrix([1, 2, 3])
169
sage: a[1]
170
2
171
172
::
173
174
sage: sympify(1.5)
175
1.50000000000000
176
sage: sympify(2)
177
2
178
sage: sympify(-2)
179
-2
180
"""
181
182