2020-11-10 20:59:57 +0200 received badge ● Nice Question (source) 2020-11-06 18:25:28 +0200 received badge ● Good Answer (source) 2019-06-12 13:55:19 +0200 received badge ● Popular Question (source) 2019-04-25 18:51:17 +0200 received badge ● Nice Answer (source) 2019-03-14 17:37:47 +0200 received badge ● Good Question (source) 2019-02-24 20:45:19 +0200 received badge ● Famous Question (source) 2019-02-24 20:45:19 +0200 received badge ● Notable Question (source) 2018-01-23 17:16:37 +0200 received badge ● Famous Question (source) 2017-09-17 23:12:25 +0200 received badge ● Popular Question (source) 2016-02-06 19:50:43 +0200 received badge ● Notable Question (source) 2015-08-27 00:10:47 +0200 received badge ● Famous Question (source) 2015-08-25 12:29:42 +0200 received badge ● Famous Question (source) 2014-11-13 19:08:19 +0200 received badge ● Notable Question (source) 2014-06-29 03:15:17 +0200 marked best answer Save 3d plot as vector format Is there a way to export a 3d plot as a pdf file? I know you can't do p.save('filename.extension') because 3dplot doesn't create a graphics item. But is there a way to do this? 2014-06-29 03:15:16 +0200 marked best answer creating a group of similar functions with similar names namelist = ['f'+str(i) for i in range(10)]; namelist for i in range(len(namelist)): namelist[i] = lambda x: 1/x^i  1 - create a list of function names (f0, f1, f2, ...) 2 - for each item in namelist 3 - take that that item and make it a function that raises x to a negative power equal to the position of that item (f0(x) = 1/x^0, f1(x) = 1/x^1, ...) Is this possible? EDIT: Made some progress by changing the type of namelist[i] to Expression by var(i)... 2014-06-29 03:15:16 +0200 marked best answer plotting multiple functions from a for loop Here I link to a worksheet with which I'm having the darnedest trouble... PlotTest The code in the worksheet makes it easy to plot many similar plots, and this is a pretty organized way to do it. I got it to work once, but I changed something and made too many changes afterward to get it working again to undo back to my original code. The problem is in the third cell, obviously. I want to assign to 'a' "plot all of the functions in the list funclist." I realize that they aren't functions, really (they aren't assigned names such as f0,f1,f2, etc), but I'll try to solve that another day. But anyway, how can I set this loop up to add all of these plots and dump them into an object? I need to be able to input 'a' and get a plot containing all of these. As is evident from the worksheet, I can't use the operator += (though I swear I did the first time). I would rather not to do it like this: a = plotlist for i in range(1,len(plotlist)): a += plotlist[i]  Because that requires that I spread out the definition of 'a' and has an unnecessary amount of code. However, that seems to be the easiest way to do it. But I would like to be able to do it in two lines of code --- for i in plotlist, add all these plots to this object. Or three lines, if I have to initialize 'a' beforehand (give it a type or whatever.) 2014-06-29 03:15:15 +0200 marked best answer use output of solve() without 'var == ' Is there a way to use the values of solve() without having that pesky 'var == ' in front of it? in h = x^2-9; h out x |--> x^2 - 9 in sols = solve(h == 0, x); sols out [x == -3, x == 3] in sols out x == -3 in h(sols) out (x == -3)^2 - 9  What the heck is that last line?! Is there a way to extract the value of sols for use without needing to copy/paste the value? 2014-04-09 07:24:36 +0200 received badge ● Popular Question (source) 2014-01-04 21:28:19 +0200 received badge ● Nice Question (source) 2013-12-11 16:05:34 +0200 received badge ● Popular Question (source) 2013-12-05 08:52:13 +0200 received badge ● Notable Question (source) 2013-11-22 07:38:56 +0200 received badge ● Famous Question (source) 2013-09-22 13:42:55 +0200 received badge ● Popular Question (source) 2013-09-13 16:51:25 +0200 marked best answer Save 3d plot as vector format The Sage 3D plots don't support output in a 2D vector format (like PDF), at least not for now. You can do it by calling matplotlib directly: PDF version of the image below from mpl_toolkits.mplot3d import axes3d from mpl_toolkits.mplot3d.art3d import Poly3DCollection import matplotlib.pyplot as plt import numpy as np from matplotlib import rc rc('text', usetex=True) rays = [(-3, -2, 4), (0, 1, 0), (1, 0, 0), (2, 1, -4)] extrapoints = [(-1, -1, 2), (1, 1, -2)] cones = [[0,1,2],[0,1,3],[0,2,3],[1,2,3]] poly3d = [] for cone in cones: verts = [ rays[i] for i in cone ] poly3d.append(verts) polygons = Poly3DCollection(poly3d, facecolor='green', linewidths=2, alpha=0.1) polygons.set_alpha(0.3) fig = plt.figure() fig.set_figwidth(13.0/2.54) fig.set_figheight(9.0/2.54) ax = axes3d.Axes3D(fig) ax.scatter3D(*zip(*rays), s=50, c='red') ax.scatter3D(*zip(*extrapoints), s=50, c='blue') ax.scatter3D(,,, s=20, c='black') ax.add_collection3d(polygons) ax.set_xlabel(r'$X$') ax.set_ylabel(r'$Y$') ax.set_zlabel(r'$Z$') ax.set_xlim3d(-3, 2) ax.set_ylim3d(-2, 1) ax.set_zlim3d(-4, 4) r = rays ax.text(r-0.2,r,r, r'${}^{'+str(r)+'}$', horizontalalignment='right', verticalalignment='top', color='red') r = rays ax.text(r-0.2,r,r, r'${}^{'+str(r)+'}$', horizontalalignment='right', verticalalignment='top', color='red') r = rays ax.text(r,r,r+0.3, r'${}^{'+str(r)+'}$', horizontalalignment='center', verticalalignment='bottom', color='red') r = rays ax.text(r,r,r-0.3, r'${}^{'+str(r)+'}$', horizontalalignment='center', verticalalignment='top', color='red') r = extrapoints ax.text(r,r,r-0.3, r'${}^{'+str(r)+'}$', horizontalalignment='center', verticalalignment='top', color='blue') r = extrapoints ax.text(r+0.2,r,r, r'${}^{'+str(r)+'}$', horizontalalignment='left', verticalalignment='bottom', color='blue') ax.text(-0.2,0,0, r'${}^0$', horizontalalignment='right', verticalalignment='top', color='black') # plt.show() for axis in [ax.w_xaxis, ax.w_yaxis, ax.w_zaxis]: axis.get_major_locator()._integer = True for t in axis.get_ticklabels(): t.set_fontsize(6) plt.savefig('fig_NablaBsing.pdf', bbox_inches='tight')  2013-07-19 05:10:14 +0200 received badge ● Taxonomist 2013-04-30 07:07:02 +0200 received badge ● Popular Question (source) 2013-03-28 12:08:10 +0200 received badge ● Self-Learner (source) 2013-03-28 12:08:10 +0200 received badge ● Teacher (source) 2013-02-21 11:32:49 +0200 received badge ● Notable Question (source) 2012-10-23 16:19:47 +0200 asked a question Map a function to each element of a matrix? Is there a direct way to apply a function to each entry of a matrix and return the resulting matrix? A = matrix([[1,2],[3,4]]) B = matrix([[j^2 for j in i] for i in A])  Not terribly hard, but it's not ideal. 2012-10-22 17:26:34 +0200 commented answer How do I make functional substitutions? *Exactly* what I was looking for! Thanks! EDIT: Good question though. Why doesn't it work if you specify the variable of the function? 2012-10-22 17:26:04 +0200 marked best answer How do I make functional substitutions? I think you want v = function('v') for the first line; the first argument is the name of the function. Here's the full code: v = function('v') u(x) = (v(x) + v(-x))/2 delta = 10^(-90) u(delta).substitute_function(v, gamma)  I'm puzzled as to why it doesn't work if v is defined as v = function('v', x). Anyone know? 2012-10-22 16:16:35 +0200 asked a question How do I make functional substitutions? I want to substitute one function for another. Consider this: v = function('x') u(x) = (v(x)+v(-x))/2 delta = 10^(-90) u(delta).subs(v=gamma(x))  The very last line is what I'm trying to accomplish. I know it's the wrong command, but I'm wanting to make the substitution $v(x)\to\Gamma(x)$. Is there a way along these lines to do such a functional substitution? 2012-10-14 14:19:07 +0200 received badge ● Popular Question (source) 2012-09-30 11:59:14 +0200 marked best answer plotting multiple functions from a for loop I think you're going to be interested in list comprehensions and generator expressions. Using listcomps, your code compresses to: sage: funclist = [1/x^i for i in range(10)] sage: plotlist = [f.plot((x, 1, 10)) for f in funclist] sage: plot(plotlist)  (Note that I changed the x lower limit to make it look better.) [BTW, as for your ability to use "a += something", that was almost certainly because you already had an "a" floating around from before.] If you want to one-line it: plot([(1/x^i).plot((x, 1, 10)) for i in range(10)])  2012-06-23 23:57:02 +0200 commented answer Sagetex and windows 7? Done. (insert extra characters here to reach 10 character minimum)