




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Phython科学计算,6.3Phython科学计算,4,matplotlib绘制图表,SciPy数值计算库,1、Python与科学计算,Python语言广泛应用于科学计算,下面介绍几个常用的Python科学计算工具包:NumPy是一个定义了数值数组和矩阵类型和它们的基本运算的语言扩展。Matplotlib是一个绘制科学图表的语言扩展。SciPy是另一种使用NumPy来做高等数学、信号处理、优化、统计和许多其它科学任务的语言扩展。,NumPy是高性能科学计算和数据分析的基础包。具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。用于对整组数据进行快速运算的标准数学函数(无需编写循环)。具有用于读写磁盘数据的工具以及用于操作内存映射文件的工具。具有线性代数、随机数生成以及傅里叶变换功能。安装Numpy的方法导入Numpy的方法NumPy处理数据实例,2、NumPy处理数据,利用NumPy包可以扩充Python的数据处理能力,安装Numpy的方法可以采用如下命令:,(1)NumPy数据导入,Pipinstallnumpy,利用NumPy包进行科学运算之前,采用如下命令导入numpy,其中,as保留字与import一起使用能够改变后续代码中库的命名空间,有助于提高代码可读性。简单说,在程序的后续部分中,np代替numpy:,importnumpyasnp,一维数组,importnumpyasnpnList=np.array(1.0,2.0,3.0,4.0)print(nList).print(type(nList),数组的类型是numpy.ndarray。使用numpy.array方法以list或tuple变量为参数产生一维数组。为命令行中输入的语句,其它的行是控制台显示的内容。,(2)NumPy处理数据实例:,二维数组,importnumpyasnpnList=np.array(1.0,2.0,3.0,4.0)print(nList).,以list或tuple变量为元素产生二维数组:,生成数组的时候,可以指定数据类型,例如32,16,andnumpy.float64等:,print(np.array(1.2,2,3,4,dtype=32)1234,序列数组,importnumpyasnpnList1=np.arange(15)print(nList1)012.,121314nList2=np.arange(15).reshape(3,5)print(nList2)01234567891011121314print(type(nList1),type(nList2),使用numpy.arange方法可以产生一个序列,对于一个生成的numpy.ndarray变量,还可以使用它自身的reshare方法变成多维数组:,等差序列数组,importnumpyasnpprint(np.linspace(1,3,9)1.72.753.,使用numpy.linspace方法可以产生具有一定间隔的数列。例如,在从1到3中产生9个数:,特定的矩阵,print(np.zeros(3,4)...print(np.ones(3,4)...printnp(eye(3)..1.,使用numpy.zeros,numpy.ones,numpy.eye等方法可以构造特定的矩阵。zeros产生零矩阵,ones产生全为1的矩阵,eye产生单位阵。,获取数组的属性,importnumpyasnpa=np.zeros(2,2,2)print(a.ndim)#数组的维数3print(a.shape)#数组每一维的大小(2,2,2)print(a.size)#数组的元素数8print(a.dtype)#元素类型float64print(a.itemsize)#每个元素所占的字节数8,数组索引,切片和替换元素,importnumpyasnpa=np.array(2,3,4,5,6,7)print(a)234567print(a1,2)#访问第2行第3列的元素7print(a1,:)#访问第2行的所有元素567printa1,1:3#访问第2行1,3)列的元素,即1,2列67a1,:=8,9,10#替换第2行的所有元素printa2348910,importnumpyasnpa=np.ones(2,2)b=np.eye(2)print(a).print(b).,基本的数组运算,先构造数组a、b,a是2*2的全1数组,b是单位阵:,演示对数组的加减乘除运算:,print(a2)FalseFalseFalseFalseprint(a+b).print(a-b).print(b*2).print(a*2)*(b*2).,print(b/(a*2).5print(a*2)*4)6.print(a.sum()4.0print(b.min()0.0print(b.max()1.0,print(np.dot(a,b).,基本的矩阵运算,矩阵的点乘:,矩阵的转置运算:,a=np.array(1,0,2,3)print(a)1023print(a.transpose()1203,矩阵的叉乘:,print(np.cross(a,b)-1.1.,计算矩阵的迹:,print(np.cross(a,b)-1.1.,importnumpyasnpimportnumpy.linalgasnplga=np.array(1,0,2,3)print(a)1023print(nplg.eig(a)(array(3.,1.),array(0.,0.70710678,1.,-0.70710678),计算矩阵的特征值和特征向量。numpy.linalg模块中有很多关于矩阵运算的方法,比如特征值和特征向量就是使用numpy.linalg.eig方法:,基本的矩阵运算,适合交互式地进行制图。而且也可以将它作为绘图控件,嵌入GUI应用程序中利用。安装matplotlib的方法导入matplotlib的方法matplotlib常用的函数matplotlib绘制图表例子,3、matplotlib绘制图表,适合交互式地进行制图。而且也可以将它作为绘图控件,嵌入GUI应用程序中利用。安装matplotlib的方法可以采用如下命令:,matplotlib绘制图表,Pipinstallmatplotlib,利用matplotlib包进行科学运算之前,采用如下命令导入matplotlib,其中,as保留字与import一起使用能够改变后续代码中库的命名空间,有助于提高代码可读性。简单说,在程序的后续部分中,plt代替matplotlib.pyplot:,importmatplotlib.pyplotasplt,matplotlib常用的函数,(1)figure(plt.figure(figsize=(width,height)):作用新建绘画窗口,独立显示绘画的图表。调用figure创建一个绘图对象,并且使它成为当前的绘图对象。figsize参数:指定绘图对象的宽度和高度,单位为英寸;dpi参数指定绘图对象的分辨率,缺省值为80。因此本例中所创建的图表窗口的宽度为8*80=640像素。,plt.figure(figsize=(8,4),matplotlib常用的函数,(2)plot(x,y,format_string,*kwargs):用于在Figure中显示图形,参数的x为横轴数据,可为列表或数组。y是纵轴数据,也是列表或者数组。format_string为控制曲线的格式字符串,是可选项。*kwargs为第二组数据或更多的(x,y,format_string)。format_string:控制曲线的格式,是由颜色字符、风格字符和标记字符组成。,plt.plot(1,2,3,4,1,4,9,16,ro),matplotlib常用的函数,(2)plot(x,y,format_string,*kwargs)中formatstring为控制曲线的格式,格式包括颜色、线条类型等。颜色字符风格字符标记字符,matplotlib常用的函数plot的格式控制字符颜色字符,matplotlib常用的函数plot的格式控制字符风格字符,matplotlib常用的函数plot的格式控制字符标记字符,matplotlib常用的函数,(3)subplot(numRows,numCols,plotNum):一个Figure对象可以包含多个子图,可以使用subplot()快速绘制,主要作用是将多个图表绘在同一个窗口中。图表的整个绘图区域被分成numRows行和numCols列。然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。plotNum参数指定创建的图对象所在的区域。,plt.subplot(2,3,2),(4)show():这个函数是显示绘画的图表。,plt.show(),importnumpyasnpa=np.ones(2,2)b=np.eye(2)print(a)importmatplotlib.pyplotaspltfrommatplotlibimportfont_managerzh_font=font_manager.FontProperties(fname=c:WindowsFontssimhei.ttf,size=14)plt.figure(figsize=(10,9)plt.plot(1,2,3)plt.xlabel(横坐标说明,fontproperties=zh_font)plt.ylabel(纵坐标说明,fontproperties=zh_font)plt.show().print(b).,Matplotlib绘图实例,例1.绘制简单的数据图表:,运行结果,例2指定红色圆点的图表,运行结果,例3.绘制子图,运行结果,例4.图表标注文字,运行结果,SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。最小二乘拟合函数最小值非线性方程组求解雅可比矩阵B-Spline样条曲线数值积分,4、SciPy数值计算库,最小二乘法,最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。,最小二乘法实例曲线拟合,运行结果,真实参数:10,0.34,0.5235987755982988拟合参数-9.816772840.339335513.69031748,求函数最小值程序,求函数最小值运行结果,运行结果,fmin-errorofy:0.00215423136494errorofh:0.0940355093353Optimizationterminatedsuccessfully.Currentfunctionvalue:0.207532Iterations:41Functionevaluations:7644fmin_powell-errorofy:0.000141560690383errorofh:0.000212378358534,续:Optimizationterminatedsuccessfully.Currentfunctionvalue:0.207529Iterations:24Functionevaluations:1100Gradientevaluations:50fmin_cg-errorofy:0.000141659918392errorofh:0.000213318921195Optimizationterminatedsuccessfully.Currentfunctionvalue:0.207529Iterations:31Functionevaluations:946Gradientevaluations:43fmin_bfgs-errorofy:0.00014165992857errorofh:0.000213319218804,非线性方程组求解,optimize库中的fsolve函数可以用来对非线性方程组进行求解。它的基本调用形式如下:fsolve(func,x0)func(x)是计算方程组误差的函数,它的参数x是一个矢量,表示方程组的各个未知数的一组可能解,func返回将x代入方程组之后得到的误差;x0为未知数矢量的初始值。如果要对如下方程组进行求解的话:f1(u1,u2,u3)=0f2(u1,u2,u3)=0f3(u1,u2,u3)=0那么func可以如下定义:,deffunc(x):u1,u2,u3=xreturnf1(u1,u2,u3),f2(u1,u2,u3),f3(u1,u2,u3),非线性方程组求解实例,求解如下方程组的解:5*x1+3=04*x0*x0-2*sin(x1*x2)=0 x1*x2-1.5=0,-0.70622057-0.6-2.50.0,-9.1260332624187868e-14,5.3290705182007514e-15,运行结果,雅可比矩阵,雅可比矩阵是一阶偏导数以一定方式排列的矩阵,它给出了可微分方程与给定点的最优线性逼近,因此类似于多元函数的导数。例如前面的函数f1,f2,f3和未知数u1,u2,u3的雅可比矩阵如下:使用fsolve计算雅可比矩阵,计算雅可比矩阵的函数j通过fprime参数传递给fsolve,函数j和函数f一样,有一个未知数的解矢量参数x,函数j计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行塔城地区沙湾县2025秋招笔试综合模拟题库及答案
- 农发行张家口市崇礼区2025秋招英文面试题库及高分回答
- 国家能源黄山市屯溪区2025秋招笔试思维策略题专练及答案
- 国家能源恩施岳麓区2025秋招笔试逻辑推理题专练及答案
- 国家能源济南市槐荫区2025秋招面试典型题目及答案
- 2025年上海歌剧院第二季度工作人员公开招聘模拟试卷及答案详解(考点梳理)
- 冬季校园安全演讲稿15篇
- 国家能源怒江自治州2025秋招机械工程类面试追问及参考回答
- 西宁市中石油2025秋招面试半结构化模拟题及答案炼油设备技术岗
- 2025年芜湖繁昌区教育高层次人才招引25人模拟试卷及一套完整答案详解
- 混合型脑性瘫痪的护理课件
- 眼科专业视野培训教材
- 乳房疾病的诊断与治疗
- 青蓝工程教师成长档案
- 中建室内中庭墙面铝板、玻璃安装施工方案(改)
- 中秋佳节给客户的一封信(10篇)
- 二维码见证取样操作手册广西
- 学生心理健康档案表格
- 雨污水管道专项工程施工组织设计方案
- 毕业论文-线路二次电弧熄灭时刻扑捉方法研究及仿真分析
- GB/T 18029.2-2022轮椅车第2部分:电动轮椅车动态稳定性的测定
评论
0/150
提交评论