亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的網(wǎng)頁版物理實驗快速建設(shè)技術(shù)

        2016-11-17 02:17:11宮薇薇祝繼常
        大學(xué)物理實驗 2016年5期
        關(guān)鍵詞:函數(shù)庫科學(xué)計算大學(xué)物理

        宮薇薇,祝繼常,韓 煦

        (中國鐵道科學(xué)研究院 運輸及經(jīng)濟研究所,北京 100081)

        ?

        基于Python的網(wǎng)頁版物理實驗快速建設(shè)技術(shù)

        宮薇薇,祝繼常,韓 煦

        (中國鐵道科學(xué)研究院 運輸及經(jīng)濟研究所,北京 100081)

        如何使用科學(xué)計算軟件自動與數(shù)據(jù)庫進行交互,實現(xiàn)網(wǎng)頁版實驗結(jié)果的快速輸出,共享實驗結(jié)果并應(yīng)用于教學(xué)工作是大學(xué)物理實驗領(lǐng)域核心和熱點的關(guān)注問題。一直探索使用Matlab解決上述問題,但是其Complier二十幾萬的商業(yè)使用費用,使得科學(xué)計算函數(shù)與數(shù)據(jù)庫通訊和基于Java的網(wǎng)頁開發(fā)方案有始無終。然而,Python多領(lǐng)域大規(guī)模的函數(shù)包、基于網(wǎng)頁開發(fā)的免費、公開、快捷的框架設(shè)計快速、有效并輕量級地解決了上述問題。本文在介紹Python科學(xué)計算語言,比較Matlab、Python進行網(wǎng)頁版實驗的技術(shù)框架的基礎(chǔ)上,完成實驗數(shù)據(jù)的數(shù)據(jù)讀取、科學(xué)計算函數(shù)庫的使用、網(wǎng)頁版實驗結(jié)果的生成,并以光學(xué)物理實驗劈尖的等厚干涉條紋實驗為例完成網(wǎng)頁版物理實驗的建設(shè)。通過本文可以幫助具備Matlab基礎(chǔ)的科學(xué)實驗者,快速實現(xiàn)物理實驗的網(wǎng)頁版輸出。

        實驗數(shù)據(jù);Python;網(wǎng)頁生成

        Python由Guido van Rossum于20世紀90年代編寫,是一種面向?qū)ο蟮慕忉屝驼Z言,功能強大、簡單易學(xué)、完全免費。2014年,已經(jīng)成為美國大學(xué)計算機科學(xué)系入門課程最受歡迎的編程語言[1],被著名的YouTube、Dropbox、美國銀行等諸多網(wǎng)站所使用。適合每個人甚至是青少年學(xué)習(xí)和使用。首先,Python具有豐富的擴展庫,能夠輕量級地完成各種高級任務(wù),例如C語言要寫1 000行代碼,Java只需要寫100行,而Python可能只要20行[2]。其次,在科學(xué)計算領(lǐng)域,擁有數(shù)據(jù)快速處理Numpy、Pandas,數(shù)值計算庫Scipy,符號運算庫Sympy擴展庫,圖表輸出庫Matplotlib,Web集成庫Ftplib、Httplib、Urllib,Web圖表庫Bokeh、Mpld[3]。最后,其安裝十分簡單,推薦Anaconda3,直接從其官網(wǎng)下載相應(yīng)的版本進行安裝即可,不需要配置任何環(huán)境變量。與Matlab相比Python科學(xué)計算庫基本能夠覆蓋其函數(shù),而且可以使用SMOP[4]進行Matlab與Python之間的代碼轉(zhuǎn)化。安裝開發(fā)環(huán)境Anaconda,并使用PyCharm開發(fā)工具進行編譯器Anaconda Python.exe的調(diào)用(圖1),即可進行網(wǎng)頁版物理實驗的快速搭建。

        圖1 編程環(huán)境安裝

        本文在比較Matlab、Python進行網(wǎng)頁版實驗的技術(shù)框架的基礎(chǔ)上,以光學(xué)物理實驗劈尖的等厚干涉條紋實驗為例,完成實驗數(shù)據(jù)的數(shù)據(jù)讀取、科學(xué)計算函數(shù)庫的使用、網(wǎng)頁版實驗結(jié)果的生成。

        1 技術(shù)構(gòu)架比較

        矩陣計算和多領(lǐng)域的算法庫是Matlab科學(xué)計算軟件的核心,它所提供的大量函數(shù)庫為科研工作者進行專業(yè)領(lǐng)域?qū)嶒炋峁┝司薮蟮姆奖?,但是如果與數(shù)據(jù)庫交互,實現(xiàn)網(wǎng)頁版的結(jié)果推送,需要實驗設(shè)計者掌握較多的計算機技能。兩者的開發(fā)框架差別如圖2所示,Matlab無法直接與數(shù)據(jù)庫或者網(wǎng)頁直接通訊,需要借助第三方語言,以Java為例,通過Matlab Complier與Java通訊然后通過JSP書寫Html代碼生成相應(yīng)的網(wǎng)頁,與Database數(shù)據(jù)庫的通訊也需要通過Java。

        圖2 Matlab開發(fā)技術(shù)框架

        Matlab方案存在兩個問題:其一、第三方語言Java對于非計算機專業(yè)人士很難入門,其二、Matlab JDK和Comlier的費用較高。然而,這兩個問題都可以通過基于Python的開發(fā)框架有效地解決(圖3),通過Python的自身擴展包即可完成所有的功能,通過Numpy/Pandas/Scipy替代Matlab矩陣科學(xué)計算,MySQLDB庫進行與數(shù)據(jù)庫的通訊,Matplotlib進行輸出結(jié)果的展示。最重要的一點是不需要書寫任何的Html代碼,通過調(diào)用Mpld3直接將Matplotlib數(shù)據(jù)結(jié)果轉(zhuǎn)化為網(wǎng)頁形式進行輸出。

        圖3 Python開發(fā)技術(shù)框架

        2 實驗數(shù)據(jù)的讀取

        實驗數(shù)據(jù)的讀入是物理實驗建立的第一步,在數(shù)據(jù)量較小的情況是,可以采用直接為變量賦值的方式。如果輸入的數(shù)據(jù)量超大,可以使用cx_Oracle、MySQLDB讀取Oracle或者Mysql數(shù)據(jù)庫方式。但是由于數(shù)據(jù)庫處理對計算機技能要求較高,推薦采用Excel進行數(shù)據(jù)存儲,通過xlrd函數(shù)進行讀取,可以吸取上述兩種方式的優(yōu)點,易于存儲、方便修改。

        以《Matlab可視化大學(xué)物流實驗》中的7.2劈尖的等厚干涉條紋實驗[5]為例進行網(wǎng)頁形式python實驗的編寫。首先引入需要使用的庫,變量賦值的代碼如下:

        importnumpy as np

        import math

        importmatplotlib.pyplot as plt,mpld3

        lamb=np.array([750*1e-9,540*1e-9,440*1e-9])

        n = 1.5

        k = 10

        dx = 0.002

        xm = k * dx

        x = np.linspace(0,xm,10)

        theta = lamb[0]/2/n/dx

        e = np.zeros(10,np.float)

        np.multiply(x,math.tan(theta),e)

        pi = 3.1416

        如果使用excel存儲和讀入,只需引入xlrd庫,然后用open函數(shù)進行打開,具體使用數(shù)據(jù)參看文獻[6]。

        importxlrd

        data= xlrd.open_workbook('文件名')

        3 科學(xué)計算函數(shù)庫的使用

        數(shù)據(jù)引入后,需要進行數(shù)據(jù)的處理,Matlab所使用的函數(shù),可以在Numpy、Pandas、Scipy、Sympy中進行查找,也可以通過smop[7]庫進行代碼的直接轉(zhuǎn)化。劈尖的等厚干涉條紋實驗實驗的轉(zhuǎn)換對應(yīng)的代碼如下:

        defgete(lamb):

        c = 2*n*e/lamb

        e1 = np.zeros(10,np.float)

        fori in range(0,10,1):

        e1[i] = math.cos(pi * (c[i] + 0.5))

        e1[i] = e1[i]*e1[i]

        return e1

        M3 = np.zeros((3,10),np.float)

        i1 = gete(lamb[0])

        M = np.zeros((3,10),np.float)

        M[0,:] = i1

        fig = plt.figure()

        ax = fig.add_subplot(221)

        ax.imshow(M)

        i2 = gete(lamb[1])

        M1= np.zeros((3,10),np.float)

        M1[1,:] = i2

        ax = fig.add_subplot(222)

        ax.imshow(M1)

        i3 = gete(lamb[2])

        M2= np.zeros((3,10),np.float)

        M2[2,:] = i3

        ax = fig.add_subplot(223)

        ax.imshow(M2)

        M2= np.zeros((3,10),np.float)

        M3[0,:] = i1

        M3[1,:] = i2

        M3[2,:] = i3

        ax = fig.add_subplot(224)

        ax.imshow(M3)

        4 網(wǎng)頁版實驗結(jié)果的生成

        關(guān)于結(jié)果的現(xiàn)實,Matlab和Python的圖表輸出函數(shù)比較相似,均使用subplot函數(shù)。然而,Python的mpld3[8]庫,為Matplotlib的網(wǎng)頁輸出提供了極大的方便,以基本的線性圖為例,代碼及運行結(jié)果如圖4所示。

        import matplotlib.pyplot as plt,mpld3

        plt.plot([3,1,4,1,5],'ks-',mec='w',mew=5,ms=20)

        mpld3.show()

        圖4 mpld3示例網(wǎng)頁輸出

        如果將結(jié)果使用mpld3.show()輸出,其圖標就會自動生成網(wǎng)頁。不許要實驗者了解任何關(guān)于網(wǎng)頁編程的知識。因此,在第三步的數(shù)據(jù)處理結(jié)束后加入該語句即可,運行結(jié)果如圖5所示[9-12]。

        圖5 mpld3實驗結(jié)果網(wǎng)頁輸出

        5 結(jié) 論

        Python是否能夠替代Matlab作為網(wǎng)絡(luò)的熱點話題爭論不休,就大量函數(shù)庫和長期的應(yīng)用積累來看,Python不能夠完全替代Matlab。但如果從擴展開發(fā)和簡便輕量來看Python有著免費、開源、輕量的先天優(yōu)勢。Python多樣的科學(xué)計算庫,基于網(wǎng)頁的圖表化輸出,為物理實驗的網(wǎng)頁編程,共享實驗結(jié)果提供了有效的工具。本文所編制的代碼雖然與Matlab輸出的圖表樣式有所不同,但能夠獲得源代碼相同的數(shù)據(jù)結(jié)果輸出。因此,Python是科學(xué)式樣工作者進行大學(xué)物理實驗Web擴展開發(fā)的更有效的利器。

        [1] http://cacm.acm.org/blogs/blog-cacm/176450-python -is-now-the-most-popular-introductory-teaching- language-at-top-us-universities/fulltext?utm_source=ourjs.com

        [2] http://www.liaoxuefeng.com/wiki/001374738125095c955

        c1e6d8bb493182103fac9270762a000.

        [3] https://docs.continuum.io/anaconda/index

        [4] https://pypi.python.org/pypi/smop

        [5] 周群益.Matlab可視化大學(xué)物理實驗.清華大學(xué)出版社,2010:259-260.

        [6] http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html

        [7] https://pypi.python.org/pypi/smop/0.22

        [8] http://mpld3.github.io/

        [9] 韓敬,鐘方川,李林.Matlab在大學(xué)物理實驗數(shù)據(jù)處理中的應(yīng)用[J].大學(xué)物理實驗,2008,21(1):88-90.

        [10] 姚琴芬.Matlab語言在物理實驗數(shù)據(jù)處理中的應(yīng)用[J].大學(xué)物理實驗,2011,24(6):52-54.

        [11] 岳鵬,程敏熙.用MatLab曲線擬合工具箱處理物理實驗數(shù)據(jù)[J].大學(xué)物理實驗,2014(5):93-96.

        [12] 宮薇薇.基于Matlab數(shù)據(jù)庫工具箱的實驗數(shù)據(jù)自動抽取及應(yīng)用[J].大學(xué)物理實驗,2015(2):96-99.

        Rapid Construction Technology of Web Page Physical Experiment Based on Python

        GONG Wei-wei,ZHU Ji-chang,HAN Xu

        (Transport and Economic Research Institute,China Academy of Railway Sciences,Beijing 100081)

        How to use scientific calculation software to interact with the data base automatically,apply the web version of the experimental results in a fast way,share the results and application is a core and hot problem gaining concerns in the university physics experiment field.It is tried hard to solve the problem via Matlab,but the complier,which costs tens of thousands commercially,makes the scientific computing function and database communication based on Java Web development scheme die.However,Python with multi domain large-scale packages,based on web development of free,open,fast design frame,effective and lightweight solves this problem.This paper introduced the python scientific calculation language,compare the framework between MATLAB and python,how to do the variable assignment,use the scientific computing function library and generate the web version results using the optical physics experimental split tip of the equal thickness interference fringe experiment as an example.So this paper can help the Matlab based science researchers to apply the rapid construction technology of web page physical experiment in Python.

        experimental data;Python;web page program

        2016-05-20

        中國鐵道科學(xué)研究院基金(2014YJ099)、(2015YJ080)

        1007-2934(2016)05-0114-04

        O 4-39

        A DOI:10.14139/j.cnki.cn22-1228.2016.005.029

        猜你喜歡
        函數(shù)庫科學(xué)計算大學(xué)物理
        高中物理科學(xué)計算工具的設(shè)計與實施研究
        玩具世界(2024年2期)2024-05-07 08:15:34
        用于優(yōu)化雷達信號處理的VSIPL函數(shù)庫
        基于Python的開源GIS應(yīng)用開發(fā)
        Scratch求最值和平均值
        電腦報(2020年34期)2020-09-12 14:03:42
        《計算機程序設(shè)計》課程中科學(xué)計算思維能力的培養(yǎng)
        基于BB60C的IQ數(shù)據(jù)采集與存儲系統(tǒng)設(shè)計
        現(xiàn)代信息技術(shù)在大學(xué)物理教學(xué)中的應(yīng)用探討
        大學(xué)物理教學(xué)中培養(yǎng)科學(xué)計算能力的研究
        物理與工程(2013年3期)2013-03-11 16:04:49
        大學(xué)物理與高中物理銜接教育的探討
        物理與工程(2012年1期)2012-03-25 10:04:59
        大學(xué)物理實驗教學(xué)創(chuàng)新模式的探索與實踐
        物理與工程(2012年1期)2012-03-25 10:04:51
        极品一区二区在线视频观看| 亚洲AV永久无码精品导航| 无码视频一区二区三区在线播放| 人妻无码在线免费| 国产喷白浆精品一区二区豆腐| 亚洲视频在线免费不卡| 肉体裸交137日本大胆摄影| a级毛片成人网站免费看| 六月丁香久久| 亚洲一区二区女优av| 24小时在线免费av| 亚洲熟妇少妇任你躁在线观看无码 | 亚洲中文字幕高清视频| 在线观看麻豆精品视频| 天堂av在线美女免费| 爽爽精品dvd蜜桃成熟时电影院 | 亚洲av精二区三区日韩| 男人激烈吮乳吃奶视频免费| 老少交欧美另类| 久久精品国产只有精品96| 久久成人精品国产免费网站| 激情综合五月| 曰韩亚洲av人人夜夜澡人人爽| 亚洲精品日韩自慰喷水白浆| 国产精品一级av一区二区| 美女被男人插得高潮的网站| 真人做爰片免费观看播放| 欧美精品中文字幕亚洲专区| 久久久高清免费视频| 国产午夜精品av一区二区三| 人妻一区二区三区在线看| 内射合集对白在线| 色综合天天网| 中文字幕人妻一区色偷久久| 日本在线观看一二三区| 极品白嫩的小少妇| 亚洲综合网在线观看首页| 国产精品99久久精品女同| 国产精品毛片无遮挡高清| 久久久噜噜噜www成人网| 男人天堂av在线成人av|