《Python科学计算》Part1 WinPython之mayavi画图-显式函数与隐式函数

《Python科学计算》Part1 WinPython之mayavi画图-显函数与隐式函数

一、显式函数

1、典型的双峰值三维高斯模型

import numpy as np
from mayavi import mlab

x, y = np.ogrid[-2:2:20j, -2:2:20j]
z = x * np.exp( - x**2 - y**2)

pl = mlab.surf(x, y, z, warp_scale="auto")
mlab.axes(xlabel='x', ylabel='y', zlabel='z')
mlab.outline(pl)

当然上述式子中的np可以在表达式中省略掉,具体的写法和导入库的方式有关:

#import numpy as np
from numpy import *
from mayavi import mlab

x, y = ogrid[-2:2:20j, -2:2:20j]
z = x * exp( - x**2 - y**2)
#z = np.abs(x) * np.exp( - x**2 - y**2)


pl = mlab.surf(x, y, z, warp_scale="auto")
mlab.axes(xlabel='x', ylabel='y', zlabel='z')
mlab.outline(pl)
此时代码中的np.orgid、np.exp、np.abs全部可以省掉

稍作更改,给函数中的x取绝对值:

import numpy as np
from mayavi import mlab

x, y = np.ogrid[-2:2:20j, -2:2:20j]
#z = x * np.exp( - x**2 - y**2)
z = np.abs(x) * np.exp( - x**2 - y**2)

pl = mlab.surf(x, y, z, warp_scale="auto")
mlab.axes(xlabel='x', ylabel='y', zlabel='z')
mlab.outline(pl)


或者:

from numpy import *
from mayavi import mlab
x,y = ogrid[-2:2:160j,-2:2:160j]
z=abs(x)*exp(-x**2-(y/0.75)**2)
pl = mlab.surf(x,y,z,warp_scale=2)

mlab.axes(xlabel='x',ylabel='y',zlabel='z')
mlab.outline(pl)
mlab.show()


2、mayavi中的示例:

from numpy import *
from mayavi import mlab


# Create the data.
dphi, dtheta = pi/20.0, pi/20.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)

# View it.
s = mlab.mesh(x, y, z,representation="surface", line_width=1.0 )
#s = mlab.mesh(x, y, z, representation="wireframe", line_width=1.0 )
mlab.show()
注释的一行是线框模型。运行结果:



二、隐式函数

1、一个椭球形

import numpy
from mayavi.mlab import *

x,y,z = numpy.ogrid[-50:50:100j,-50:50:100j,-50:50:100j ]
s = 0.5*x**2 + y**2 + 2.0*z**2
obj = contour3d(s, contours=4)



2、同样的一个椭球形,用不同的生成函数渲染

import numpy as np
from mayavi import mlab

x,y,z = np.ogrid[-5:5:200j,-5:5:200j,-5:5:200j]
s = 0.5*x**2 + y**2 + 2.0*z**2

src = mlab.pipeline.scalar_field(s)
mlab.pipeline.iso_surface(src,contours=[1. , ],)
mlab.show()


3、心形函数,画出来怎么看都不像,不过确实是画出来了,将就着看看

from numpy import *
from mayavi import mlab

x, y ,z= ogrid[-3:3:200j, -3:3:200j, -3:3:200j]

#心形函数
s = (x**2 + (9/4)*(y**2) + z**2 - 1)**3 - (x**2)*(z**3) - (9/80)*(y**2)*(z**3)

src = mlab.pipeline.scalar_field(s)

mlab.pipeline.iso_surface(src,contours=[1., ],)
mlab.show()


3、附加一个二维的心形曲线

from numpy import *
from mayavi import mlab
from sympy.parsing.sympy_parser import parse_expr
from sympy import plot_implicit
ezplot = lambda expr: plot_implicit(parse_expr(expr))

#笛卡尔心形函数  
ezplot('17*x**2 - 16*Abs(x)*y+17*y**2-256')



______________________________________________________________________________________________________________________________

1、安装离线的pip包,然后利用pip安装其它离线包:

pip的安装

1、从https://pypi.python.org/pypi/pip#downloads下载所需的.whl文件


2、将下载的文件放入Python的根目录

我的根目录是D:\Python27,所以将文件放入此目录下


3、打开cmd,进入Python所在目录并执行以下语句

D:\Python27> python.exe pip-9.0.1-py2-py3-none-any.whl \pip  install  pip-9.0.1-py2-py3-none-any.whl

稍等一会就可以完成安装


4、验证pip安装成功

安装easy_install(仍然是在python的安装根目录下)

D:\Python27> pip install setuptools

安装成功后会提示Requirement already satisfied……

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值