SciPy

我再次推荐这个http://www.scipy.org/Wiki/Documentation?action=AttachFile&do=get&target=scipy_教程.pdf. 特别是有许多有用的SciPy模块scipy.optimize公司, scipy.stats公司, 西皮·利纳格, 西皮·林索夫, 稀疏稀疏, 整合, scipy.fftpack公司, 化学信号, 西皮。特别. 其中大多数都有比较好的文档,通常您可以从函数名中找出事情的作用。我建议你去探索一下。例如,如果你这样做

sage: import scipy
sage: from scipy import optimize

然后

sage: optimize.[tab]

将显示可用函数的列表。你应该会看到一堆求函数最小值的例程。尤其是如果你这么做的话

sage: optimize.fmin_cg?

你会发现这是一个使用共轭梯度算法求函数最小值的程序。

sage: scipy.special.[tab]

将显示SciPy的所有特殊功能。花点时间四处看看是让自己熟悉SciPy的好方法。有一点让人恼火的是,如果你做的是神经病,那就经常发生:math:langle`tab :math:rangle` . 您不会看到可导入的模块。例如scipy.:math:langle`tab :math:rangle` 不会显示信号模块,但是

sage: from scipy import signal

然后

signal.[tab]

将向您展示大量用于信号处理和滤波器设计的函数。上面列出的所有模块都可以导入,即使您最初看不到它们。

scipy.integrate

这个模块有与数值求解常微分方程和数值积分有关的程序。让我们举一个使用ODE解算器的例子。假设你想解这首颂歌

\(x''(t) + ux'(t)(x(t)^2-1)+x(t)=0\)

作为一个系统

\(x'=y\)

\(y'=-x+\mu y(1-x^2).\)

我们要使用的模块是odeint整合. 我们可以解出这首颂歌,计算 \((y,y')\) ,在1000点之间 \(0\)\(100\) 使用以下代码。

sage: import numpy
sage: from scipy import integrate
sage: def f_1(y,t):
....:    return[y[1],-y[0]-10*y[1]*(y[0]**2-1)]
sage: def j_1(y,t):
....:    return [ [0, 1.0],[-2.0*10*y[0]*y[1]-1.0,-10*(y[0]*y[0]-1.0)] ]
sage: x= numpy.arange(0,100,.1)
sage: y=integrate.odeint(f_1,[1,0],x,Dfun=j_1)

如果我们愿意,我们可以通过

sage: pts = [(x[i],y[i][0]) for i in range(len(x))]
sage: point2d(pts).show()

优化

优化模块有与求根、最小二乘拟合和最小化相关的例程。 \(\langle\) 待编写 \(\rangle\)