Bulletin of JSSAC(2012) Vol. 18, No. 2, pp. 161-171 : Sage 1 Sage Mathematica Sage (William Stein) 2005 2 2006 2 UCSD Sage Days 1 Sage 1.0 4.7.2 1) Sage Maxima, R 2 Sage Firefox Internet Explorer Sage Notebook Server 2) Sage 2.1 Sage Sage 3) 1 2.2 New Worksheet take@pwv.co.jp 1) William Stein 2007 UW CSE 2) Linux, Mac OSX, Windows 3) Sage URL http://www.sagenb.org/ http://www.pwv.co.jp:8000/ c 2012 Japan Society for Symbolic and Algebraic Computation
162 18 2 2012 1: Shift-Return evaluate 2.3 Sage? Shift-Return abs 2 abs? 2: abs 3: fac
Bulletin of JSSACVol. 18, No. 2, 2012 163 2.4 Python fac factor factor factorial 2 3 2.5 4 L A TEX 4: 2.6 Python Sage Python Python Python (#) (;) 1 Sage 5 1 Sage 5 2 N 5 3 5: Sage
164 18 2 2012 2.7 Sage var var 6 1 Sage 3 Python lambda f(x) = Python def Python lambda 3 Python lamba 6 3 6: Sage 2.8 Sage 1 π e i Sage pi e I ( i) oo (o 2 ) 1: Sage 2.9 Sage Sin + Sin 7 1
Bulletin of JSSACVol. 18, No. 2, 2012 165 1. Sin sin_plt 2. data_plt 3. sin_plt data_plt show 7: Sin + 100 Sin 2.10 @interact @interact def_( ) slider( ) selector( ) 8 Sin M 0 9 2.11 [1] 4) 4) http://www.pwv.co.jp:8000/home/pub/16/
166 18 2 2012 8: Sin M Download Upload 3 Sage Sage Python 2 2 f (x) = 3 2 x2 1 + x 1x 2 + x2 2 6x 1 7x 2 (1) x 0 f t
Bulletin of JSSACVol. 18, No. 2, 2012 167 d n d d 0 = f (x 0 ) d n = f (x n ) + β n d n 1, β n = ( f (x n)) T f (x n ) ( f (x n 1 )) T f (x n 1 ) (2) x n+1 α n H f (x) 3.1 Sage x n+1 = x n + α n d n, α n = dt n f (x n ) d T n Hd n (3) Sage v x1, x2 v f # vars = var( x1 x2 ) v = vector([x1, x2]) # f def f(v): return 3/2 * v[0]^2 + v[0]*v[1] + v[1]^2-6*v[0] - 7*v[1] f nabla_f f dfs vx # f dfs = [diff(f(v), x_i) for x_i in v] # f (dfs vx ) def nabla_f(vx): # vx v s = dict(zip(v, vx)) # s return vector([df.subs(s) for df in dfs]) Sage Python diff f(v) x_i, x_j 2 matrix jsmath(h) # H = matrix([[diff(diff(f(v),x_i), x_j) for x_i in v] for x_j in v]) print jsmath(h) 3 1 1 2 α n 3
168 18 2 2012 # _n def alpha_n(x, d): return -d.dot_product(nabla_f(x)) / (d * H * d) eps = 0.001 x0 = vector([2, 1]) d = - nabla_f(vx=x0) x = x0 k = 1 while (true): o_nabla_f_sqr = nabla_f(x).dot_product(nabla_f(x)) o_x = x x += alpha_n(x, d)*d if ((x - o_x).norm() < eps): break beta = nabla_f(x).dot_product(nabla_f(x)) / o_nabla_f_sqr d = -nabla_f(x) + beta*d if (d.norm() == 0): # 0 break k += 1 print "x=", x print "k=", k x= (1, 3) k= 2 Sage # Sage g = 3/2*x1^2 + x1*x2 + x2^2-6*x1-7*x2 minimize(g, [2, 1], algorithm="cg") Optimization terminated successfully. Current function value: -13.500000 Iterations: 2 Function evaluations: 5 Gradient evaluations: 5 (1.0, 3.0) 9
Bulletin of JSSACVol. 18, No. 2, 2012 169 # p3d = plot3d(g, [x1, -1, 4], [x2, -1, 4]) pt = point([1, 3, f(x)], color= red ) (p3d+pt).show() Sage 9: f 4 Sage Sage R Sage 5) Oil Flow DataTrn.txt DataTrnLbls.txt DATA Sage R R r R result 5) http://www.pwv.co.jp:8000/home/pub/14/
170 18 2 2012 # R PCA filename = DATA + DataTrn.txt oilflow = r("oilflow <- read.table( %s )" %filename) result = r("result <- prcomp(oilflow)") R Sage 10 html pca.pdf HTML # filename = DATA + DataTrnLbls.txt labels = r("oilflow.labels <- read.table( %s )" %filename) # filename = DATA+ pca.pdf r.pdf(file= "%s" %filename) # r("col <- colsums(t(oilflow.labels) * c(4,3,2))") r("pch <- colsums(t(oilflow.labels) * c(3,1,4))") r("plot(result$x[,1:2], col=col, pch=pch, xlim=c(-3,3), ylim=c(-3,3))") r.dev_off() # html( <img src="pca.pdf"> ) 10: Sage 11: R Sage
Bulletin of JSSACVol. 18, No. 2, 2012 171 4.1 R Sage R Sage Sageobj _save_ R Sage 3 11 #R Sage # DATA V1, V2 lb = Sageobj(labels) # zip lbs = zip(lb[ DATA ][ V1 ],lb[ DATA ][ V2 ],lb[ DATA ][ V3 ]) # point3d N = len(lbs) plt = Graphics() for n in range(n): [x, y, z] = rs[n] if lbs[n][0] == 1: plt += point3d([x, y, z], rgbcolor= blue ) elif lbs[n][1] == 1: plt += point3d([x, y, z], rgbcolor= green ) else: plt += point3d([x, y, z], rgbcolor= red ) plt.show() 5 Sage Sage Sage Sage 6) ( ) L A TEX [1] : OSS Sage Software Design 2010 6 pp. 89 94 6) http://www.stat.t.u-tokyo.ac.jp/~numata/nora/sage-doc/