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

        ?

        計(jì)算物理教學(xué)中基于FORTRAN的結(jié)果可視化方法

        2017-06-22 14:49:22王圣軍
        物理通報(bào) 2017年6期
        關(guān)鍵詞:腳本繪圖命令

        王圣軍 金 濤

        (陜西師范大學(xué)物理學(xué)與信息技術(shù)學(xué)院 陜西 西安 710062)

        計(jì)算物理教學(xué)中基于FORTRAN的結(jié)果可視化方法

        王圣軍 金 濤

        (陜西師范大學(xué)物理學(xué)與信息技術(shù)學(xué)院 陜西 西安 710062)

        介紹在計(jì)算物理教學(xué)中配合Fortran語(yǔ)言進(jìn)行可視化輸出的一種高效的方法.以利薩如圖形的模擬和可視化輸出作為例子介紹了這種可視化方法.這種方法結(jié)合了Fortran的系統(tǒng)函數(shù)功能和gnuplot的腳本功能,可以自動(dòng)地把數(shù)據(jù)文件以圖形的方式顯示出來(lái)或者保存為圖片文件.整個(gè)可視化過(guò)程需要的繪圖代碼少,操作簡(jiǎn)潔,并且所用軟件都是在科學(xué)研究中常用的免費(fèi)軟件.通過(guò)這種方法能夠低成本高效地實(shí)現(xiàn)計(jì)算結(jié)果的可視化.

        計(jì)算物理學(xué) 可視化 Fortran Gnuplot

        隨著計(jì)算機(jī)在物理學(xué)中被廣泛地應(yīng)用,計(jì)算物理已經(jīng)成為一門(mén)重要的課程.在計(jì)算物理中將數(shù)據(jù)轉(zhuǎn)換為圖像進(jìn)行可視化輸出,可以使結(jié)果直觀、易于理解,是使用計(jì)算機(jī)處理數(shù)據(jù)的一大優(yōu)勢(shì).所以計(jì)算結(jié)果的可視化輸出是計(jì)算物理教學(xué)中的一個(gè)重要環(huán)節(jié)[1].對(duì)于計(jì)算物理中常用的編程語(yǔ)言來(lái)說(shuō),圖形化輸出是一件麻煩的事情.比如Fortran語(yǔ)言和C語(yǔ)言標(biāo)準(zhǔn)本身沒(méi)有圖形輸出功能.

        為了可視化輸出結(jié)果,有些教材采用了BASIC或者Java等有圖形功能的計(jì)算機(jī)語(yǔ)言,在程序中編寫(xiě)圖形輸出的代碼.例如文獻(xiàn)[2]中采用的計(jì)算機(jī)語(yǔ)言是BASIC.在分子振動(dòng)的半經(jīng)典量子化的例子中,作者提供的程序包含了可視化輸出.程序代碼總長(zhǎng)度是302行,而其中與圖形輸出相關(guān)的代碼子程序有172行.其中有大量的代碼被用來(lái)設(shè)定圖形輸出的環(huán)境和格式.這種可視化方式花費(fèi)的代價(jià)比較大.在教學(xué)中解釋這些代碼需要花費(fèi)比較多的時(shí)間.

        在傳統(tǒng)的編程語(yǔ)言之外,MatLab是一個(gè)非常強(qiáng)大的工具,在計(jì)算和數(shù)據(jù)可視化方面的功能都非常豐富并且使用方便輸出美觀[3].但是傳統(tǒng)的編程語(yǔ)言在科學(xué)計(jì)算中仍被廣泛使用.所以本文關(guān)注配合傳統(tǒng)編程語(yǔ)言使用的繪圖工具和可視化輸出方法.

        本文介紹了以Fortran語(yǔ)言作為教學(xué)語(yǔ)言的情況下計(jì)算結(jié)果可視化輸出的方法.我們選用的Fortran語(yǔ)言編譯器是Gfortran.這是一個(gè)性能良好的免費(fèi)軟件,它既支持Fortran77也支持最新的Fortran語(yǔ)言標(biāo)準(zhǔn).

        我們選用的繪圖軟件是Gnuplot.這是一種比較常用的免費(fèi)科學(xué)繪圖軟件,可以繪制函數(shù)和數(shù)據(jù)的2維以及3維圖.它常被用于科學(xué)出版物的繪圖,能在各種主流操作系統(tǒng)上運(yùn)行,包括Windows,Linux等.Gnuplot可以把圖形直接輸出到屏幕上,也可以保存為多種格式的圖像文件,包括EPS,PDF,JPEG等.它可以通過(guò)命令行以交互的方式使用,也可以通過(guò)腳本以批處理模式使用.

        我們通過(guò)一個(gè)例子來(lái)說(shuō)明使用這些軟件進(jìn)行可視化輸出的方法.這個(gè)例子是用Fortran語(yǔ)言寫(xiě)程序輸出利薩如曲線.我們以腳本方式使用Gnuplot進(jìn)行繪圖.首先建立一個(gè)Fortran源程序prog.f90.具體內(nèi)容如下:

        program main

        implicit none

        real :: x,y,omx,omy,phix,t,h

        open(10,file=′x-y.txt′)

        t=0;h=0.01

        omx=3.0;omy=4.0;phix=3.1415926/2

        do while(t<100)

        x=sin(omx*t+phix)

        y=sin(omy*t)

        write(10,*)x,y

        t=t+h

        enddo

        close(10)

        call system("gnuplot pl.txt")

        endprogram

        然后,建立一個(gè)Gnuplot的腳本文件pl.txt.把這個(gè)文件和Fortran源程序文件prog.f90放在同一個(gè)文件夾里面.這個(gè)腳本文件是一個(gè)純文本文件.文件的內(nèi)容只有兩行.具體內(nèi)容如下:

        plot ′x-y.txt′ with lines

        pause-1

        在Windows的命令窗口中,使用Gfortran編譯源程序的命令為:

        gfortran prog.f90

        編譯以后得到的可執(zhí)行程序是a.exe.這個(gè)程序首先完成計(jì)算過(guò)程,把數(shù)據(jù)保存到文件”x-y.txt”中.然后當(dāng)程序運(yùn)行到call system("gnuplot pl.txt")的時(shí)候,它調(diào)用Gnuplot軟件.此時(shí)彈出如圖1所示的圖形輸出窗口.

        圖1 Gnuplot的圖形輸出窗口

        在程序prog.f90中,關(guān)于繪圖的代碼只有一行:

        call system("gnuplot pl.txt")

        在這里,我們使用了系統(tǒng)函數(shù)system(),括號(hào)中的字符串被傳遞給操作系統(tǒng)的命令窗口.這一句的功能是在命令窗口中調(diào)用Gnuplot并且讓它使用腳本pl.txt繪圖.

        這里的Gnuplot腳本文件只有兩行.第一行使用了繪制2維圖的命令plot.在命令中寫(xiě)入了數(shù)據(jù)文件的名字x-y.txt.Gnuplot軟件會(huì)去硬盤(pán)上讀取這個(gè)文件,用其中的數(shù)據(jù)進(jìn)行繪圖.plot命令的選項(xiàng)with lines指定了使用線來(lái)繪圖.第二行pause-1指示Gnuplot在繪圖之后不要退出,而是等待輸入.這時(shí)在命令窗口中按Enter鍵就可以關(guān)閉圖形輸出窗口并退出Gnuplot.

        系統(tǒng)函數(shù)system()在早期的Fortran語(yǔ)言標(biāo)準(zhǔn)中不是內(nèi)部函數(shù),但是多數(shù)編譯器都支持這個(gè)函數(shù).在使用Gfortran進(jìn)行編譯的時(shí)候可以直接使用這個(gè)函數(shù).在使用Visual Fortran進(jìn)行編譯的時(shí)候要使用一個(gè)模塊use DFPORT.在使用ifort編譯的情況下,要使用的模塊是use IFPORT.在最新的Fortran語(yǔ)言標(biāo)準(zhǔn)中已經(jīng)包含了此功能,使用它的方法是調(diào)用標(biāo)準(zhǔn)的內(nèi)部子程序:

        call execute_command_line (“gnuplot pl.txt”)

        在支持新標(biāo)準(zhǔn)的編譯器中使用這種方法時(shí)不需要在源程序中包含特殊的模塊.

        這里介紹的做法實(shí)際等效于先保存數(shù)據(jù)文件,然后使用獨(dú)立的繪圖軟件導(dǎo)入數(shù)據(jù),進(jìn)行繪圖.但是Gnuplot的腳本功能使我們不需要操作繪圖軟件.Fortran語(yǔ)言的系統(tǒng)函數(shù)功能,結(jié)合Gnuplot的腳本功能,使得畫(huà)圖成為一個(gè)自動(dòng)化的過(guò)程.這種方式在課堂演示中非??旖莘奖?另外,在科學(xué)計(jì)算的編程和模擬中,快速地對(duì)結(jié)果進(jìn)行圖形化輸出是檢驗(yàn)程序是否存在錯(cuò)誤或者尋找適當(dāng)參數(shù)的快捷方法.所以這個(gè)方式在科學(xué)計(jì)算中也具有實(shí)際的應(yīng)用價(jià)值.

        在Gnuplot的腳本中可以通過(guò)簡(jiǎn)單的命令進(jìn)行更多的設(shè)置.這里介紹幾個(gè)常用的設(shè)置.首先,可以設(shè)定坐標(biāo)軸上的標(biāo)簽.例如使用命令:

        set xlabel ′x′

        set ylable ′y′

        把x軸和y軸的標(biāo)簽設(shè)定為x和y.其次,還可以使用對(duì)數(shù)坐標(biāo).設(shè)定坐標(biāo)軸采用對(duì)數(shù)坐標(biāo)的命令是:

        set logscale x

        set logscale y

        也可以設(shè)定讓Gnuplot不把結(jié)果輸出到屏幕上,而是把結(jié)果保存成一個(gè)圖片文件.Gnuplot支持多種圖片格式.例如,可以把利薩如曲線輸出一個(gè)png格式的圖片.在腳本中首先設(shè)定輸出終端類型:

        set terminal png

        然后設(shè)定輸出文件名稱:

        set output ′fig.png′

        輸出為圖片文件時(shí),腳本中不寫(xiě)pause-1.一個(gè)完整腳本的例子如下:

        set terminal png

        set output ′fig.png′

        set xlabel ′x′

        set ylabel ′y′

        plot ′x-y.txt′ with lines

        使用這個(gè)腳本,得到的圖片如圖2所示.

        圖2 Gnuplot輸出的圖片

        Gnuplot盡管是一個(gè)免費(fèi)軟件,但是目前已經(jīng)被廣泛地應(yīng)用到了科學(xué)研究的繪圖任務(wù)中.一些重要的免費(fèi)版科學(xué)數(shù)據(jù)分析軟件是以Gnuplot為繪圖組件的.在計(jì)算物理中學(xué)習(xí)Gnuplot的簡(jiǎn)單使用方法,對(duì)于未來(lái)的學(xué)習(xí)和研究都有潛在的幫助.此外,Gnuplot的使用方式和Matlab等商業(yè)版軟件比較接近,對(duì)于學(xué)習(xí)Matlab也有幫助.

        結(jié)論:本文介紹了一種高效地把數(shù)值計(jì)算結(jié)果可視化輸出的方法.該方法結(jié)合了Fortran語(yǔ)言的系統(tǒng)函數(shù)功能和Gnuplot軟件的腳本繪圖功能,能夠自動(dòng)化地把數(shù)據(jù)文件輸出到屏幕或者圖形文件,不需要操作繪圖軟件的中間過(guò)程,有利于實(shí)現(xiàn)高效的課堂演示.這種方式需要的代碼少,使用方便,容易掌握.這里介紹的所有軟件都是免費(fèi)軟件,便于學(xué)生在個(gè)人計(jì)算機(jī)上使用,從而有利于學(xué)生靈活地開(kāi)展計(jì)算物理課程的上機(jī)實(shí)踐.

        1 彭芳麟, 梁穎. 科學(xué)計(jì)算可視化與計(jì)算物理學(xué). 大學(xué)物理, 2013, 32(7): 2~12

        2 S. E. Koonin著. 計(jì)算物理學(xué). 秦克誠(chéng),譯. 北京: 高等教育出版社, 19923 彭芳麟. 計(jì)算物理基礎(chǔ). 北京: 高等教育出版社, 2010

        2016-11-24)

        猜你喜歡
        腳本繪圖命令
        來(lái)自河流的你
        酒駕
        “禾下乘涼圖”繪圖人
        只聽(tīng)主人的命令
        安奇奇與小cool 龍(第二回)
        數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        移防命令下達(dá)后
        快樂(lè)假期
        這是人民的命令
        亚洲人精品午夜射精日韩| 中文字幕无码不卡免费视频 | 亚洲av色香蕉一区二区三区软件| 日本一区二区三区视频免费观看| 少女韩国电视剧在线观看完整| 免费1级做爰片1000部视频| 久久AⅤ无码精品为人妻系列| 色婷婷一区二区三区四区| 国产精品性色av麻豆| 亚洲婷婷五月综合狠狠爱| 国产精品厕所| 亚洲国产精品亚洲高清| 国产熟女露脸91麻豆| 午夜福利啪啪片| 欧美成人在线A免费观看| 一级二级三一片内射视频| 人妻久久久一区二区三区蜜臀| 50岁熟妇大白屁股真爽| 国产精品视频一区日韩丝袜| 日本女优禁断视频中文字幕| 亚洲中国精品精华液| 18禁无遮挡无码网站免费| 五月婷婷激情综合| 一区二区三区少妇熟女高潮| 亚洲av成人精品一区二区三区 | 亚洲色偷偷综合亚洲avyp| 色一情一乱一伦一区二区三区| 激情中文丁香激情综合| 国产亚洲中文字幕一区| 国产精品兄妹在线观看麻豆| 无码专区中文字幕DVD| 亚洲一区二区三区美女av| 国产免费又色又爽粗视频| av片在线观看免费| 玖玖资源站无码专区| 偷拍色图一区二区三区| 少妇愉情理伦片丰满丰满午夜| 久久这里只精品国产2| 少妇被啪出水在线视频| 麻豆tv入口在线看| 一本一本久久a久久|