導航:首頁 > 編程語言 > python地球物理

python地球物理

發布時間:2022-09-02 17:31:24

1. 學習編程有哪些好處

編程幫助孩子培養邏輯思維能力和抽象思維能力。為了使計算機能夠理解人的意圖,孩子就必須要將解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機。

1、邏輯思維能力

因為程序就是對現實事物的抽象,而且,按照寫好的邏輯運行。所以,編程能夠鍛煉我們的抽象思維能力和邏輯思維能力。

(1)python地球物理擴展閱讀

學習方式

對於初學者來說,可以採用視頻+書籍的方式進行學習。這兩種方式形成互補關系。另外閱讀代碼也可以幫助你解決問題,了解最佳做法,這里的閱讀代碼是指書籍,博客文章,開源代碼等等。

編程教學視頻可以讓你迅速掌握編程語法等等,但通常比較生動、淺顯,不成系統。而書本是比較系統,深入,但是枯燥,所以最好的方法是書和視頻結合。

2. 軟體工程怎麼樣

本人是一名研究生,本科在東北農業大學電氣與信息學院學習物聯網工程專業,現作為一名內蒙古農業大學計算機與信息工程學院的研究生,學習的方向為計算機技術。都說計算機的很多東西都是互通的,我相信,我的專業與軟體工程息息相關。當然,我也咨詢了很多軟體工程專業的朋友,他們在學習過程中積累了很多經驗,下面簡單分享一下。

3.發展前景

暫且不說軟體工程在社會中的未來發展前景,咱們就看看開設這門專業的院校都有哪些吧。

開設軟體工程的院校有北京航空航天大學、浙江大學、國防科技大學、北京大學、清華大學、華東師范大學、南京大學、武漢大學、天津大學、東北大學、哈爾濱工業大學、同濟大學、上海交通大學、蘇州大學、中國科學技術大學、四川大學、北京交通大學、復旦大學、東南大學、南京航空航天大學、山東大學、華南理工大學、重慶大學、電子科技大學、西北大學、西北工業大學、西安電子科技大學、陸軍工程大學(原解放軍理工大學)、北京工業大學、北京理工大學、北京郵電大學、大連理工大學、吉林大學等632所

看明白什麼了嗎?這都是中國頂呱呱的學校啊,所以看到國家對這個專業的重視程度了嗎,這與這個專業的發展前景就是成正比的。國家越重視,院校越重視,這個專業的發展前景就越好。所以雖然軟體工程專業挺難學的,但是它的發展是真不錯啊,如果你對這個專業充滿了興趣,那麼選它准沒錯!

讓我們計算機程序員成為撬動地球的那個杠桿吧!

3. 如何運用機器學習解決復雜系統的預測問題

現實生活中預測通常難做到精準,比如股市,自然災害, 長久的天氣預測。

在市場這種系統里, 有兩個關鍵要素, 一個是個體和個體之間的互相作用(博弈),一個是系統與外部環境(地球資源)之間的相互作用(反饋),因此而形成復雜模式(Pattern), 這種模式通常很難預測。
而這種類型的系統我們通常定義為復雜系統: 由大量單元互相作用組成的系統, 由於集體行為的非線性(總體不等於個體之和), 而形成具備無數層級的復雜組織。或者稱為涌現性。
復雜科學即研究復雜系統的一套聯系不同尺度現象的數學方法。在人類試圖理解那些和自身生存最相關的東西時,而經典物理學的還原論(把整體拆成部分)思維的卻不適用。物理預測的核心方法是動力學方法, 即人們由實驗出發抽象出引起運動改變的原因, 把這些原因量化為變數,用微分方程來描述, 從而取得對整個未來的精確解,如麥克斯韋方程組可以預測從光波的速度到磁線圈轉動發電任何的電磁學現象。而你卻無法通過了解市場上每個人的特性就很好的預測整個市場走勢。
復雜系統難以預測的原理可以從以下幾方面理解:
1, 高維詛咒: 構成現實生活的系統往往被大量未知變數決定, 比如生物由無數的細胞組成。 基因,是由無數獨立的單元組成的, 市場, 由無數的交易者組成, 這些用物理的描述方法來預測, 就是極高維度空間的運動問題。維度,首先使得再簡單的方程形式都十分復雜難解。
此處補充維度的科學定義: 維度是一個系統里可以獨立變化的變數個數, 一個有非常多變數的系統,如復雜網路,假如每個變數不是互相獨立,也可以是低維系統。 比如一個軍營里的方陣,即使人數眾多, 也會因為大家都做著一模一樣的動作,而只有一個獨立變數,成為一維系統。
2, 非線性詛咒:高維度系統的維度之間具有復雜的相互作用,導致我們不能把系統分解為單一維度然後做加法的方法研究。 高維加上非線性我們將得到對初級極為敏感的混沌系統。

非線性的一個重要推論是組織的產生, 因為非線性,1+1可以大於2或小於2, 為組織的產生提供了理論基礎。
3, 反饋詛咒: 復雜系統中反饋無處不在, 即使是一個簡單的一維系統, 反饋也可以使得系統的特性很豐富, 最典型的反饋是某種記憶效應, 使得系統產生復雜的路徑依賴, 此刻你的現實與歷史深刻關聯,而關聯方法導致復雜的模式產生。
反身性是一種由預測產生的特殊反饋, 當你預測股市的價格, 會引起你的交易策略變化從而影響你的預測, 是為反身性。
4, 隨機詛咒: 復雜系統往往含有不包含確定規律的隨機雜訊,加上這些雜訊, 系統的行為更加難預測, 而很多時候, 我們也無法區分一個系統里發現的模式是雜訊導致還是由於元件之間的相互作用。
這四大詛咒是這些系統難以理解和預測的原因, 而這個時候, 復雜系統和機器學習的方法論可以作為一種非常有力的手段幫我們從復雜性中挖掘模式。
第一種方法叫模型驅動(Model approch), 即想辦法找到事物變化的原因, 用一種降維的思路列出微分方程, 即從非常繁復的要素中化簡出最重要的一個或者兩個, 從而化繁瑣為簡單,不管三七二十一先抓住主要矛盾。其中的範例便是非線性動力學。
註: 此處我們有兩個基本假設讓非線性動力學得到簡化,一個是只討論連續變數,另一個是不考慮系統內的隨機性(無雜訊項)。
1, 如果一個系統可以化簡到一維, 那麼你只需要研究其內部存在的反饋性質並描述它即可。 負反饋導致穩定定點產生, 正反饋導致不穩定性。 很多事物多可以抽象為一維系統,包括簡單環境下的人口增長問題。
2, 如果一個系統可以化簡到二維, 那麼你需要研究兩個維度間的相互作用,最終可以互為負反饋而穩定下來,互為正反饋而爆發,或者產生此消彼長的周期軌道。 比如戀愛中的男女是個二維系統, 互為負反饋就回到普通朋友, 互為正反饋在愛欲中爆發-比如羅密歐與朱麗葉, 此消彼長那是玩捉迷藏的周期游戲。
3, 如果一個系統是三維的, 則混沌可能產生。 混沌即對初值極為敏感的運動體系。 你一旦偏離既定軌道一點, 即幾乎無法回去。
4, 如果一個系統大於三維, 那麼你需要用一個復雜網路描述它的運動, 這個時候我們可以得到我們復雜系統的主角- collective phenomena & emergence。 復雜網路的性質主要取決於單體間相互作用的方式, 以及系統與外界交換能量的方法, 這兩者又息息相關。 最終我們得到涌現。

復雜網路的動力學往往混沌難以預測,對於高維混沌系統, 第一個方法也只能給出對事物定性的描述, 而我們可以祭出我們的第二種方法: 先不管數據背後錯綜復雜的動因,而是直接以數據驅動我們的預測。
這其中的哲學內涵即貝葉斯分析框架: 即先不預測, 而是列出所有可能的結果及根據以往知識和經驗每種結果發生的可能性(先驗概率),之後不停吸收新觀測數據, 調整每種可能結果的概率大小(後驗概率),將想得到的結果概率最大化(MAP)最終做出決策。
如果你把貝葉斯分析的框架自動化, 讓電腦完成, 你就得到機器學習的最基本框架。
機器學習如果可以進入一個問題中, 往往要具備三個條件:
1, 系統中可能存在模式
2, 這種模式不是一般解析手段可以猜測到的。
3, 數據可以獲取。
如果三點有一點不符,都很難運用機器學習。
機器學習的一個核心任務即模式識別, 也可以看出它和剛才講的復雜系統提到的模式的關系。我們講復雜系統難以通過其成分的分析對整體進行預測,然而由於復雜系統通常存在模式, 我們通常可以模式識別來對系統進行歸類, 並預測各種可能的未來結果。比如一個投行女因為工作壓力過大而自殺了, 那麼在她之前的活動行為數據(比如點擊手機的某些app的頻率)里是否可能存在某種模式? 這種模式是否可以判定她之後的行為類型? 並且這個過程可否通過歷史數據由計算機學習?如果都可以,這就是一個機器學習問題。
剛才講的幾大詛咒, 高維, 非線性, 復雜反饋,隨機性也稱為機器學習需要核心面對的幾大困難, 由此得到一系列機器學習的核心演算法

機器學習在現實生活中被用於非常多的方面, 最常見的如商務洞察(分類,聚類, 推薦演算法), 智能語音語義服務(時間序列處理,循環網路), 各種自動鑒別系統如人臉識別,虹膜識別 ,癌症檢測(深度卷積網路), 阿爾法狗,機器人控制(深度強化學習演算法)。 而由方法論分, 又可以分成有監督學習, 無監督學習, 和強化學習。

在八月份的巡洋艦科技的《機器學習vs復雜系統特訓課》中,我著重講了幾種機器學習的基本方法:
1. 貝葉斯決策的基本思想:
你要讓機器做決策, 一個基本的思路是從統計之前數據挖掘已有的模式(pattern)入手, 來掌握新的數據中蘊含的信息。 這個pattern在有監督學習的例子里, 就是把某種數據結構和假設結論關聯起來的過程,我們通常用條件概率描述。 那麼讓機器做決策, 就是通過不停的通過新數據來調整這個數據結構(特徵)與假設結果對應的條件概率。通常我們要把我們預先對某領域的知識作為預設(prior),它是一個假設結果在數據收集前的概率密度函數,然後通過收集數據我們得到調整後的假設結果的概率密度函數, 被稱為後驗概率(posterior),最終的目標是機器得到的概率密度函數與真實情況最匹配, 即 Maximum a posterior(MAP), 這是機器學習的最終目標。
2, 樸素貝葉斯分類器到貝葉斯網路:
分類,是決策的基礎,商業中要根據收集客戶的消費特徵將客戶分類從而精準營銷。 金融中你要根據一些交易行為的基本特徵將交易者做分類。 從貝葉斯分析的基本思路出發我們可以迅速得到幾種分類器。
首當其沖的樸素貝葉斯分類器,它是機器學習一個特別質朴而深刻的模型:當你要根據多個特徵而非一個特徵對數據進行分類的時候,我們可以假設這些特徵相互獨立(或者你先假設相互獨立),然後利用條件概率乘法法則得到每一個分類的概率, 然後選擇概率最大的那個作為機器的判定。
圖: 樸素貝葉斯分類器的基本框架, c是類別, A是特徵。
如果你要根據做出分類的特徵不是互相獨立,而是互相具有復雜關聯,這也是大部分時候我們面臨問題的真相, 我們需要更復雜的工具即貝葉斯網路。 比如你對某些病例的判定, 咳嗽, 發燒, 喉嚨腫痛都可以看做扁條體發炎的癥候, 而這些癥候有些又互為因果, 此時貝葉斯網路是做出此類判定的最好方法。構建一個貝葉斯網路的關鍵是建立圖模型 , 我們需要把所有特徵間的因果聯系用箭頭連在一起, 最後計算各個分類的概率。

圖:貝葉斯網路對MetaStatic Cancer的診斷,此處的特徵具有復雜因果聯系
貝葉斯分析結合一些更強的假設,可以讓我們得到一些經常使用的通用分類器, 如邏輯斯提回歸模型,這里我們用到了物理里的熵最大假設得到玻爾茲曼分布, 因此之前簡單貝葉斯的各個特徵成立概率的乘積就可以轉化為指數特徵的加權平均。 這是我們日常最常用的分類器之一。 更加神奇的是, 這個東西形式上同單層神經網路。

圖: logistic函數,數學形式通玻爾茲曼分布, 物理里熵最大模型的體現
3, 貝葉斯時間序列分析之隱馬模型:
貝葉斯時間序列分析被用於挖掘存儲於時間中的模式,時間序列值得是一組隨時間變化的隨機變數,比如玩牌的時候你對手先後撒出的牌即構成一個時間序列。 時間序列模式的預設setting即馬爾科夫鏈, 之前動力學模式里講到反饋導致復雜歷史路徑依賴,當這種依賴的最簡單模式是下一刻可能出現的狀態只與此刻的狀態有關而與歷史無關, 這時候我們得到馬爾科夫鏈。
馬爾科夫鏈雖然是貝葉斯時間序列分析的基準模型,然而現實生活中遇到的時間序列問題, 通常不能歸於馬爾科夫鏈,卻可以間接的與馬爾科夫鏈關聯起來,這就是隱馬過程,所謂含有隱變數的馬爾科夫過程。

圖: 隱馬過程示意

語音識別就是一類特別能利用隱馬過程的應用, 在這里語音可以看做一組可觀測的時間序列, 而背後的文字是與之關聯的馬爾科夫鏈, 我們需要從可觀測的量, 按照一定的概率分布反推不可觀測的量, 並用馬爾科夫鏈的觀點對其建模, 從而解決從語音到文字的反推過程。 當今的語音識別則用到下面緊接講的深度學習模型。
4, 深度學習
剛剛講的分類問題, 只能根據我們已知的簡單特徵對事物進行分類, 但假設我們手裡的數據連需要提取的特徵都不知道, 我們如何能夠對事物進行分類呢? 比如你要從照片識別人名, 你都不知道選哪個特徵和一個人關聯起來。 沒關系, 此時我們還有一個辦法, 就是讓機器自發學習特徵, 因此祭出深度學習大法。通常在這類問題里, 特徵本身構成一個復雜網路,下級的特徵比較好確定, 而最高層的特徵, 是由底層特徵的組合確定的, 連我們人類自己都不能抽象出它們。
深度學習即數據內涵的模式(特徵)本身具備上述的多層級結構時候,我們的機器學習方法。 從以毒攻毒的角度看, 此時我們的機器學習機器也需要具有類似的多級結構,這就是大名鼎鼎的多層卷積神經網路。深度學習最大的優勢是具有更高級的對「結構」進行自動挖掘的能力,比如它不需要我們給出所有的特徵,而是自發去尋找最合適對數據集進行描述的特徵。 一個復雜模式-比如「人臉」 事實上可以看做一個簡單模式的層級疊加, 從人臉上的輪廓紋理這種底層模式, 到眼睛鼻子這樣的中級模式, 直到一個獨特個體這樣最高級的復雜模式, 你只有能夠識別底層模式,才有可能找到中級模式, 而找到中級模式才方便找到高級模式, 我們是不能從像素里一步到達這種復雜模式的。 而是需要學習這種從簡單模式到復雜模式的結構, 多層網路的結構應運而生。
圖: 從具體特徵到抽象特徵逐級深入的多級神經網路
6, RNN和神經圖靈機
如果時間序列數據里的模式也包含復雜的多層級結構, 這里和我之前說的復雜系統往往由於反饋導致復雜的時間依賴是一致的, 那麼要挖掘這種系統里的模式, 我們通常的工具就是超級前衛的循環神經網路RNN,這種工具對處理高維具有復雜反饋的系統有神效, 因為它本身就是一個高維具有復雜時間反饋的動力學系統。
圖: 循環神經網路, 過去的信息可以通過循環存儲在神經元之間
當一個復雜時間序列的問題裡面, 每個時間點的信息都可以對未來以任何方式產生復雜影響, 那麼處理這種復雜性的一個辦法就是用循環神經網路,讓它自發學習這種復雜結構。 比如一個城市裡的交通流, 或者人與人之間的對話。
神經圖靈機是在多層卷積神經網路或遞歸網路基礎上加上一個較長期的記憶單元, 從而達到處理需要更復雜時間關聯的任務, 比如對話機器人。 而神經圖靈機最厲害的地方在於他可以通過機器學習傳統的梯度下降法反向破譯一個程序, 比如你寫了一個python程序, 你用很多不同的輸入得到很多對應的輸出, 你可以把它給神經圖靈機訓練, 最終本來對程序絲毫無所知的神經圖靈機居然可以如同學會了這個程序。

4. 南京師范大學有二本專業嗎

有。

五個南京師范大學二本專業

1、公共事業管理

培養具有現代化管理理論、公共經濟理論、技術與方法等方面的知識及其應用能力、現代社會需要的高素質專門人才。要求學生接受管理學、公共行政學的系統訓練,兼具政治學、經濟學、法學等方面知識,具備較高的管理、經營、策劃、調研、交際等能力。

畢業後適合到電信等公共企業部門、一般企事業單位、各級黨政機關、社會組織從事管理規劃、政策研究與分析、外事交流、宣傳策劃、機關管理、人力資源管理、高級文秘等工作。

2、計算機科學與技術

計算機科學與技術是國家一級學科,下設信息安全、軟體工程、計算機軟體與理論、計算機系統結構、計算機應用技術、計算機技術等專業。

主修大數據技術導論、數據採集與處理實踐(Python)、Web前/後端開發、統計與數據分析、機器學習、高級資料庫系統、數據可視化、雲計算技術、人工智慧、自然語言處理、媒體大數據案例分析、網路空間安全、計算機網路。

數據結構、軟體工程、操作系統等課程,以及大數據方向系列實驗,並完成程序設計、數據分析、機器學習、數據可視化、大數據綜合應用實踐、專業實訓和畢業設計等多種實踐環節。

3、地理科學專業

包括地球概論、地質學基礎、地貌學、氣象與氣候學、地理信息系統、人文地理學、城鄉規劃、城市規劃、植物地理學、土壤地理學、水文學、自然資源學原理、測量與地圖學、中國地理、世界地理、多媒體課件製作、地理教學論、遙感概論等。

本專業以重基礎、重技能、寬口徑的人才培養理念為指導思想,在課程與課時設置上重視地理科學專業基礎課程的教學,強化學生的地理實踐與地理教學技能訓練課程的教學、因學生而異開設選修課程以拓寬學生的知識領域。

4、人力資源管理

培養適應社會主義經濟和社會發展需要,德、智、體、美全面發展,具備管理、經濟、法律及人力資源管理等方面的知識和能力,適應知識經濟時代要求,基礎扎實,知識面廣,綜合素質高。

富有創新意識和開拓精神,能在國家機關、企事業單位、科研機構、各類國有及非國有企業從事人力資源管理及相關行政管理等方面工作的應用型高級專門人才。

5、應用化學

應用化學是一門培養具備化學方面的基礎知識、基本理論、基本技能以及相關的工程技術知識和較強的實驗技能。

具有化學基礎研究和應用基礎研究方面的科學思維和科學實驗訓練,能在科研機構、高等學校及企事業單位等從事科學研究、教學工作及管理工作的高級專門人才的學科。

應用化學是化學工程與技術(國家一級學科)的二級學科,下設三個三級學科分別是精細化工,高分子工程,應用電化學。

參考資料來源:網路——公共事業管理

參考資料來源:網路——計算機科學與技術

參考資料來源:網路——地理科學

參考資料來源:網路——人力資源管理

參考資料來源:網路——應用化學

5. 大數據學習一般都學什麼內容

一、0基礎學習打基礎:java語言、 Linux
java可以說是大數據最基礎的編程語言,我接觸的很大一部分的大數據開發都是從Jave Web開發轉崗過來的。
二、大數據Hadoop體系
Hadoop是用Java語言開發的一個開源分布式計算平台,適合大數據的分布式存儲和計算平台。Hadoop是目前被廣泛使用的大數據平台,本身就是大數據平台研發人員的工作成果,Hadoop是目前比較常見的大數據支撐性平台。
三、Scala黃金語言和Spark
Scala和java很相似都是在jvm運行的語言,在開發過程中是可以無縫互相調用的。
Spark 是專為大規模數據處理而設計的快速通用的計算引擎。Spark是MapRece的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態系統,以彌補MapRece的不足。
四、 大數據項目實戰
數據獲取、數據處理、數據分析、數據展現、數據應用

6. 腳本分幾種,用途都是什麼

腳本(script)是使用一種特定的描述性語言,依據一定的格式編寫的可執行文件,又稱作宏或批處理文件。腳本是批處理文件的延伸,是一種純文本保存的程序,一般來說的計算機腳本程序是確定的一系列控制計算機進行運算操作動作的組合,在其中可以實現一定的邏輯分支等。 腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。 腳本通常可以由應用程序臨時調用並執行。各類腳本被廣泛地應用於網頁設計中,因為腳本不僅可以減小網頁的規模和提高網頁瀏覽速度,而且可以豐富網頁的表現,如動畫、聲音等。舉個最常見的例子,當點擊網頁上的Email地址時能自動調用Outlook Express或Foxmail這類郵箱軟體,就是通過腳本功能來實現的。也正因為腳本的這些特點,往往被一些別有用心的人所利用。例如在腳本中加入一些破壞計算機系統的命令,這樣當用戶瀏覽網頁時,一旦調用 這類腳本,便會使用戶的系統受到攻擊。所以用戶應根據對所訪問網頁的信任程度選擇安全等級,特別是對於那些本身內容就非法的網頁,更不要輕易允許使用腳本。通過「安全設置」對話框,選擇「腳本」選項下的各種設置就可以輕松實現對腳本的禁用和啟用。 計算機語言是為了各種目的和任務而開發的,一個常見任務就是把各種不同的已有組件連接起來以完成相關任務。大多腳本語言共性是:良好的快速開發,高效率的執行,解釋而非編譯執行,和其它語言編寫的程序組件之間通信功能很強大。 許多腳本語言用來執行一次性任務,尤其是系統管理方面。它可以把服務組件粘合起來,因此被廣泛用於GUI創建或者命令行,操作系統通常提供一些默認的腳本語言,即通常所謂shell腳本語言。 腳本通常以文本(如ASCII)保存,只在被調用時進行解釋或編譯。 有些腳本是為了特定領域設計的,但通常腳本都可以寫更通用的腳本。在大型項目中經常把腳本和其它低級編程語言一起使用,各自發揮優勢解決特定問題。腳本經常用於設計互動通信,它有許多可以單獨執行的命令,可以做很高級的操作,(如在傳統的Unix shell (sh)中,大多操作就是程序本身。) 這些高級命令簡化了代碼編寫過程。諸如內存自動管理和溢出檢查等性能問題可以不用考慮。在更低級或非腳本語言中,內存及變數管理和數據結構等耗費人工,為解決一個給定問題需要大量代碼,當然這樣能夠獲得更為細致的控制和優化。腳本缺少優化程序以提速或者降低內存的伸縮性。 綜上所述,腳本編程速度更快,且腳本文件明顯小於如同類C程序文件。這種靈活性是以執行效率為代價的。腳本通常是解釋執行的,速度可能很慢,且運行時更耗內存。在很多案例中,如編寫一些數十行的小腳本,它所帶來的編寫優勢就遠遠超過了運行時的劣勢,尤其是在當前程序員工資趨高和硬體成本趨低時。 然而,在腳本和傳統編程語言之間的界限越來越模糊,尤其是在一系列新語言及其集成暢出現時。在一些腳本語言中,有經驗的程序員可以進行大量優化工作。在大多現代系統中通常有多種合適的腳本語言可以選擇,所以推薦使用多種語言(包括C或匯編語言)編寫一種腳本。 常見的腳本語言:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,php,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。 [編輯本段]與其他編程語言的關系及特點 1.腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間。 HTML通常用於格式化和鏈結文本。而編程語言通常用於向機器發出一系列復雜的指令。 2.腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些. 3.與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成。 註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。Python、JAVASCRIPT,ASP,PHP,PERL,Nuva都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。 4.腳本語言是一種解釋性的語言,例如Python、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在. 腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。 5.腳本語言一般都是以文本形式存在,類似於一種命令. 舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.aa為擴展名的文件. 你為.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,你的程序用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是腳本。 計算機腳本語言程序舉例 (1)JavaScript: ①用於HTML中: alert("Hello World") ②用於WSH中: WScript.Echo("Hello World") (2)ASP: <% Response.Write("Hello, world!") %> 或者: <% strHelloWorld = "Hello, world!" %> <%= strHelloWorld %> 或者簡單地寫成: <%= "Hello, world!" %> (3)PHP: <?php echo 'Hello, world!'; print 'Hello, world!'; ?> 或者 <?= "Hello World!"?> (4)PERL: #!/usr/local/bin/perl print "Hello, world!\n"; (5)Nuva: <.. "Hello, World!" Demo ..> <. //====================================== // Hello, World! (1) //====================================== ?? 'Hello, World!' /*====================================== Hello, World! (2) ======================================*/ function HelloWorld() ?? "Hello, World!"; end function HelloWorld(); /*====================================== Hello, World! (3) ======================================*/ class World() function Hello() ?? 'Hello, World!'; end function end class var n = World(); n.Hello(); .> (6)ActionScript: ①ActionScript 2.0版本: trace("Hello, world!"); ②ActionScript 3.0版本: package { import flash.display.TextField; import flash.display.MovieClip; import flash.filters.DropShadowFilter; public class HelloWorld extends MovieClip { public function HelloWorld() { var shad:DropShadowFilter = new DropShadowFilter(2, 45, 0x000000, 25, 3, 3, 2, 2); var txt:TextField = new TextField(); txt.textColor = 0xFFFFFF; txt.filters = [shad]; txt.width = 120; txt.x = Math.random()*300; txt.y = Math.random()*300; txt.selectable = false; txt.text = "Hello World! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]"; addChild(txt); } } } (7)PostScript: PostScript是一種專門用來創建圖像的語言,常用於列印機。 /font /Courier findfont 24 scalefont font setfont 100 100 moveto (Hello World!) show showpage (8)AppleScript: say "Hello World!" (9)Bash: #!/usr/bin/env bash myvar="hello" myfunc() { local x local myvar="one two three" for x in $myvar do echo $x done } myfunc echo $myvar $x (10)Ruby #!/usr/bin/env ruby puts "Hello, world!"

7. 現代計算機是如何計算圓周率的

可以用編程語言計算。以下是python語言

pi = 0.0

N = 100

for i in range(N):

pi += (1/pow(16,i) * ( 4/(8*i +1) -2/(8*i+4)-1/(8*i+5) -1/(8*i +6) ) )

print('圓周率為{:.10f}'.format(pi))

請把以上代碼拷進python語言開發環境里運行,結果如下(下圖是使用python開發環境Spyder運行上述代碼的結果):圓周率為3.1415926536.

(7)python地球物理擴展閱讀

電子計算機的出現使π值計算有了突飛猛進的發展。1949年,美國製造的世上首部電腦-ENIAC(Electronic Numerical Integrator And Computer)在阿伯丁試驗場啟用了。

次年,里特韋斯納、馮紐曼和梅卓普利斯利用這部電腦,計算出π的2037個小數位。這部電腦只用了70小時就完成了這項工作,扣除插入打孔卡所花的時間,等於平均兩分鍾算出一位數。

五年後,IBM NORC(海軍兵器研究計算機)只用了13分鍾,就算出π的3089個小數位。科技不斷進步,電腦的運算速度也越來越快,在60年代至70年代,隨著美、英、法的電腦科學家不斷地進行電腦上的競爭,π的值也越來越精確。

在1973年,Jean Guilloud和Martin Bouyer以電腦CDC 7600發現了π的第一百萬個小數位。

在1976年,新的突破出現了。薩拉明(Eugene Salamin)發表了一條新的公式,那是一條二次收斂算則,也就是說每經過一次計算,有效數字就會倍增。

高斯以前也發現了一條類似的公式,但十分復雜,在那沒有電腦的時代是不可行的。這演算法被稱為布倫特-薩拉明(或薩拉明-布倫特)演演算法,亦稱高斯-勒讓德演演算法。

1989年美國哥倫比亞大學研究人員用克雷-2型(Cray-2)和IBM-3090/VF型巨型電子計算機計算出π值小數點後4.8億位數,後又繼續算到小數點後10.1億位數。

2010年1月7日——法國工程師法布里斯·貝拉將圓周率算到小數點後27000億位。2010年8月30日——日本計算機奇才近藤茂利用家用計算機和雲計算相結合,計算出圓周率到小數點後5萬億位。

2011年10月16日,日本長野縣飯田市公司職員近藤茂利用家中電腦將圓周率計算到小數點後10萬億位,刷新了2010年8月由他自己創下的5萬億位吉尼斯世界紀錄。56歲的近藤茂使用的是自己組裝的計算機,從10月起開始計算,花費約一年時間刷新了紀錄。

8. 生態模擬的生態模擬常用的電腦軟體

當前模擬軟體很多,而生態模擬軟體則有限,常用模
擬軟體如下:Simile、Stella、Madonna、Swarm、SimuLink、Matlab、Scilab、Simcreator、BuildSim等。另外有些研究者使用一些編程語言編制特殊的生態軟體,如:C、Basic、Fortran、Pascal、Java、VBA、Python、Perl等。下面介紹幾種常用的生態模擬軟體: Simile是個圖形化的建模環境,主要用在生態學,生物學,環境科學方面的研究。最突出的特點是它是一個公開的建模環境,也就是說,simile的可視化建模界面只是創建simile模型的一種方式,可以用其它的建模界面(如:文本編輯器)來創建simile模型,只是它是非可視化的而已。Simile 提供了一系列工具用來顯示模擬過程,同時也允許用戶根據需要加入自己的內容 。
Simile主要特點:
(1)
對象的表示法, 以便快速、方便地創建、處理復雜的結構;
(2)比其它的可視建模軟體更具表現力,動態效果明顯;
(3)自動生成C++模型代碼,以便快速執行;
(4)子模型(submodel)有多種用法和作用:將模型圖的元素合成一個子模型,可以實現整體移動;以子模型為單位處理復雜模型的主要組成部分;即插即用模塊,允許模型的任何部分單獨截取、使用。使模型的一部分生成一個獨立的模型;支持模的模型結構,這樣的模塊可以作為編譯後的C程序來運行,還能作為獨立的子模塊嵌入其他模型中;
(5)公開的模型表示法,使用合成方法處理模型容易實現;
(6)比電子製表軟體更好的結構圈;
(7)可以更快地准備、更容易地共享、更有效地維護模型。 Stella運行在Macintosh和Windows環境下,主要有8大類模型:生命科學,自然科學,社會科學,數學,物理學,化學,經濟學,文學。Stella 是生態建模中一個強
有力的模擬軟體,如氣候的變化如何影響生態系統,當臭氧層被破壞了地球生物會怎樣之類無窮性問題,都可用其進行可視化模擬。Stella的特點:
(1)提供圖形用戶界面(GUI)以便迅速地收集系統組分間的關系。圖3顯示了構建動態模擬模型的關鍵組分。矩形代表一個系統的狀態值,此處為種群。於雙線相連的圓控制了種群增加,與管線沒有連接的圓僅僅持有公式和變數,弧線表示箭頭處的圓是弧線另一端圖符的函數圓;
(2)其Storytelling特性支持不同方面的知識風格。圖表,圖解和動畫使等式中變數關系形象化,同時還能
通過在模型周圍進行注釋解說或者附上文檔來說明一個新環境量對整體的影響。支持step-by-step模型顯示;
(3)包含三個關聯層,層上附帶有詳細的結構信息和模型的功能.最高層和輸入輸出層提供顯示模型結構的工具,下一層創建模型結構,最低層用圖形和代數形式說明模擬系統成分和初始條件,參數值之間的關系。子模型也支持分層模型結構;
(4)Stella通過計算所有的公式進行模擬,然後更新狀態變數。使用以基礎水平的代數學和基本邏輯寫的差分方程,方程不必是連續的。如果沒適宜的方程或用數學語言描述太困難,或者公式直接由測量支持,建模者可以在Stella界面上畫出圖形關系來描述兩個變數之間的關系,易於理解;
(5)庫和流程圖表支持一般的系統語言,並且能動態地顯示復雜的系統和思路如何運行;
(6)通過靈敏度分析揭示關鍵作用點和最佳狀況條件;
(7)多媒體含有在建模環境中觸發曲線圖、電影、聲音和文本信息的功能;
(8)結果以曲線圖、表、動畫、QuickTime電影或文件的形式表示;
(9)可保存為全屏運行模式;
(10)建模安全問題上,提供了鎖定和密碼保護的功能。

9. 《自然》評選改變科學的10個計算機代碼項目

從Fortran到arXiv.org,這些計算機編碼和平台讓生物學、氣候科學和物理學等學科的發展達到了真正「日新月異」的速度。

2019年,事件視界望遠鏡團隊讓世界首次看到了黑洞的樣子。不過,研究人員公布的這張發光環形物體的圖像並不是傳統的圖片,而是經過計算獲得的。利用位於美國、墨西哥、智利、西班牙和南極地區的射電望遠鏡所得到的數據,研究人員進行了數學轉換,最終合成了這張標志性的圖片。研究團隊還發布了實現這一壯舉所用的編程代碼,並撰文記錄這一發現,其他研究者也可以在此基礎上進一步加以分析。

這種模式正變得越來越普遍。從天文學到動物學,在現代每一項重大科學發現的背後,都有計算機的參與。美國斯坦福大學的計算生物學家邁克爾·萊維特因「為復雜化學系統創造了多尺度模型」與另兩位研究者分享了2013年諾貝爾化學獎,他指出,今天的筆記本電腦內存和時鍾速度是他在1967年開始獲獎工作時實驗室製造的計算機的1萬倍。「我們今天確實擁有相當可觀的計算能力,」他說,「問題在於,我們仍然需要思考。」

如果沒有能夠解決研究問題的軟體,以及知道如何編寫並使用軟體的研究人員,一台計算機無論再強大,也是毫無用處的。如今的科學研究從根本上已經與計算機軟體聯系在一起,後者已經滲透到研究工作的各個方面。近日,《自然》(Nature)雜志將目光投向了幕後,著眼於過去幾十年來改變科學研究的關鍵計算機代碼,並列出了其中10個關鍵的計算機項目。

這台CDC 3600型計算機於1963年交付給位於科羅拉多州博爾德的國家大氣研究中心,研究者在Fortran編譯器的幫助對其進行了編程

語言先驅:Fortran編譯器(1957年)

最初的現代計算機並不容易操作。當時的編程實際上是手工將電線連接成一排排電路來實現的。後來出現了機器語言和匯編語言,允許用戶用代碼為計算機編程,但這兩種語言都需要對計算機的架構有深入的了解,使得許多科學家難以掌握。

20世紀50年代,隨著符號語言的發展,特別是由約翰·巴克斯及其團隊在加州聖何塞的IBM開發的「公式翻譯」語言Fortran,這種情況發生了變化。利用Fortran,用戶可以用人類可讀的指令來編程,例如x = 3 + 5。然後由編譯器將這些指令轉換成快速、高效的機器代碼。

不過,這一過程仍然很不容易。早期的程序員使用打孔卡來輸入代碼,而復雜的模擬可能需要數萬張打孔卡。盡管如此,新澤西州普林斯頓大學的氣候學家真鍋淑郎(Syukuro Manabe)還是指出,Fortran讓非計算機科學家也能編程,「這是我們第一次能夠自己給計算機編程」。他和同事們利用這種語言開發的氣候模型是最早取得成功的模型之一。

Fortran發展至今已經到了第八個十年,它仍然廣泛應用於氣候建模、流體動力學、計算化學等學科,這些學科都涉及到復雜線性代數並需要強大的計算機來快速處理數字。Fortran生成的代碼速度很快,而且仍然有很多程序員知道如何編寫。古早的Fortran代碼庫仍然活躍在世界各地的實驗室和超級計算機上。「以前的程序員知道他們在做什麼,」美國海軍研究院的應用數學家和氣候模型師弗蘭克·吉拉爾多說,「他們非常注重內存,因為他們擁有的內存非常少。」

信號處理器:快速傅立葉變換(1965)

當射電天文學家掃描天空時,他們捕捉到的是隨時間變化的復雜信號雜音。為了理解這些無線電波的本質,他們需要看到這些信號作為頻率的函數時是什麼樣的。一種名為「傅里葉變換」的數學過程可以幫到研究人員,但它的效率很低,對於一個大小為N的數據集需要N^2次計算。

1965年,美國數學家詹姆斯·庫利和約翰·杜基想出了一種加速該過程的方法。快速傅里葉變換(FFT)通過遞歸(一種通過重復將問題分解為同類的子問題而解決問題的編程方法)將計算傅里葉變換的問題簡化為N log2(N)步。隨著N的增加,速度也會提高。對於1000個點,速度提升大約是100倍;100萬個點則是5萬倍。

這個「發現」實際上是一個再發現,因為德國數學家高斯在1805年就對此進行了研究,但他從未發表過。而詹姆斯·庫利和約翰·杜基做到了,他們開啟了傅里葉變換在數字信號處理、圖像分析、結構生物學等領域的應用,成為應用數學和工程領域的重大事件之一。FFT在代碼中的應用已有很多次,近年一個流行的方案是FFTW,被認為是世界上最快的FFT。

保羅·亞當斯是加州勞倫斯伯克利國家實驗室分子生物物理學和綜合生物成像部門的主任,他回憶稱,當他在1995年改進細菌蛋白質凝膠的結構時,即使使用FFT和超級計算機,也需要「很多個小時,甚至數天」的計算。「如果在沒有FFT的情況下嘗試做這些,我不知道在現實中應該如何做到,」他說,「那可能要花很長時間。」

分子編目:生物資料庫(1965年)

資料庫是當今科學研究中不可或缺的組成部分,以至於人們很容易忘記它們也是由軟體驅動的。過去的幾十年中,資料庫資源的規模急劇膨脹,影響了許多領域,但或許沒有哪個領域的變化會比生物學領域更引人注目。

蛋白質資料庫Protein Data Bank擁有超過17萬個分子結構的檔案,包括這種細菌的「表達子」(expressome),其功能是結合RNA和蛋白質合成的過程。

今天,科學家所用的龐大基因組和蛋白質資料庫源於美國物理化學家瑪格麗特·戴霍夫的工作,她也是生物信息學領域的先驅。20世紀60年代初,當生物學家們致力於梳理蛋白質的氨基酸序列時,戴霍夫開始整理這些信息,以尋找不同物種之間進化關系的線索。她與三位合著者於1965年發表了《蛋白質序列和結構圖譜》,描述了當時已知的65種蛋白質的序列、結構和相似性。 歷史 學家布魯諾·斯特拉瑟在2010年寫道,這是第一個「與特定研究問題無關」的數據集,它將數據編碼在打孔卡中,這使得擴展資料庫和搜索成為可能。

其他「計算機化」的生物資料庫緊隨其後。蛋白質資料庫Protein Data Bank於1971年投入使用,如今詳細記錄了超過17萬個大分子結構。加州大學聖地亞哥分校的進化生物學家拉塞爾·杜利特爾在1981年創建了另一個名為Newat的蛋白質資料庫。1982年,美國國立衛生研究院(NIH)與多個機構合作,成立了GenBank資料庫,這是一個開放獲取的DNA序列資料庫。

這些資料庫資源在1983年7月證明了其存在價值。當時,由倫敦帝國癌症研究基金會蛋白質生物化學家邁克爾·沃特菲爾德領導的團隊,與杜利特爾的團隊各自獨立報道了一個特殊的人類生長因子序列與一種導致猴子出現癌症的病毒蛋白質之間的相似性。觀察結果顯示了一種病毒誘發腫瘤機制——通過模仿一種生長因子,病毒會誘導細胞不受控制地生長。美國國家生物技術信息中心(NCBI)前主任詹姆斯·奧斯特爾說:「這一結果讓一些對計算機和統計學不感興趣的生物學家頭腦里靈光一閃:我們可以通過比較序列來了解有關癌症的一些情況。」

奧斯特爾還表示,這一發現標志著「客觀生物學的到來」。除了設計實驗來驗證特定的假設,研究人員還可以挖掘公共數據集,尋找那些實際收集數據的人可能從未想到的聯系。當不同的數據集連接在一起時,這種力量就會急劇增長。例如,NCBI的程序員在1991年通過Entrez實現了這一點;Entrez是一個可以讓研究人員在DNA、蛋白質和文獻之間自由檢索和比對的工具。

預測領先者:大氣環流模式(1969年)

在第二次世界大戰結束時,計算機先驅約翰·馮·諾伊曼開始將幾年前用於計算彈道軌跡和武器設計的計算機轉向天氣預測問題。真鍋淑郎解釋道,在那之前,「天氣預報只是經驗性的」,即利用經驗和直覺來預測接下來會發生什麼。相比之下,馮·諾伊曼的團隊「試圖基於物理定律進行數值天氣預測」。

新澤西州普林斯頓的美國國家海洋和大氣管理局(NOAA)地球物理流體動力學實驗室的建模系統部門負責人Venkatramani Balaji表示,幾十年來,人們已經熟知這些方程式。但早期的氣象學家無法實際解決這些問題。要做到這一點,需要輸入當前的條件,計算它們在短時間內會如何變化,並不斷重復。這個過程非常耗時,以至於在天氣狀況實際出現之前還無法完成數學運算。1922年,數學家劉易斯·弗萊·理查森花了幾個月時間計算德國慕尼黑的6小時預報。根據一段 歷史 記載,他的結果是「極不準確的」,包括「在任何已知的陸地條件下都不可能發生的」預測。計算機使這個問題變得很容易解決。

20世紀40年代末,馮·諾伊曼在普林斯頓高等研究院建立了天氣預報團隊。1955年,第二個團隊——地球物理流體動力學實驗室——開始進行他所謂的「無限預測」,也就是氣候建模。

真鍋淑郎於1958年加入氣候建模團隊,開始研究大氣模型;他的同事柯克·布萊恩將這一模型應用在海洋研究中。1969年,他們成功將二者結合起來,創造了《自然》雜志在2006年所說的科學計算「里程碑」。

今天的模型可以將地球表面劃分為一個個25公里 25公里的正方形,並將大氣層劃分為數十層。相比之下,真鍋淑郎和布萊恩的海洋-大氣聯合模型劃分的面積為500平方公里,將大氣分為9個層次,只覆蓋了地球的六分之一。盡管如此,Venkatramani Balaji表示,「這個模型做得很好」,使研究團隊第一次能夠通過計算機預測二氧化碳含量上升的影響。

數字運算機:BLAS(1979年)

科學計算通常涉及到使用向量和矩陣進行相對簡單的數學運算,但這樣的向量和矩陣實在太多了。但在20世紀70年代,還沒有一套普遍認可的計算工具來執行這些運算。因此,從事科學工作的程序員會將時間花在設計高效的代碼來進行基本的數學運算,而不是專注於科學問題。

加州勞倫斯利弗莫爾國家實驗室的Cray-1超級計算機。在BLAS編程工具於1979年問世之前,並沒有線性代數標准可供研究人員在Cray-1超級計算機等機器上工作

編程世界需要一個標准。1979年,這樣的標准出現了:基本線性代數程序集(Basic Linear Algebra Subprograms,簡稱BLAS)。這是一個應用程序介面(API)標准,用以規范發布基礎線性代數操作的數值庫,如矢量或矩陣乘法。該標准一直發展到1990年,為向量數學和後來矩陣數學定義了數十個基本常式。

美國田納西大學計算機科學家、BLAS開發團隊成員傑克·唐加拉表示,事實上,BLAS把矩陣和向量數學簡化成了和加法和減法一樣基本的計算單元。

美國德克薩斯大學奧斯汀分校的計算機科學家Robert van de Geijn指出,BLAS「可能是為科學計算定義的最重要的介面」。除了為常用函數提供標准化的名稱之外,研究人員還可以確保基於BLAS的代碼在任何計算機上以相同方式工作。該標准還使計算機製造商能夠優化BLAS的安裝啟用,以實現在其硬體上的快速操作。

40多年來,BLAS代表了科學計算堆棧的核心,也就是使科學軟體運轉的代碼。美國喬治·華盛頓大學的機械和航空航天工程師洛雷娜·巴爾巴稱其為「五層代碼中的機械」。而傑克·唐加拉說:「它為我們的計算提供了基礎結構。」

顯微鏡必備:NIH Image(1987年)

20世紀80年代初,程序員韋恩·拉斯班德在馬里蘭州貝塞斯達的美國國立衛生研究院的腦成像實驗室工作。該實驗室擁有一台掃描儀,可以對X光片進行數字化處理,但無法在電腦上顯示或分析。為此,拉斯班德寫了一個程序。

這個程序是專門為一台價值15萬美元的PDP-11小型計算機設計的,這是一台安裝在架子上的計算機,顯然不適合個人使用。然後,在1987年,蘋果公司發布了Macintosh II,這是一個更友好、更實惠的選擇。拉斯班德說:「在我看來,這顯然是一種更好的實驗室圖像分析系統。」他將軟體轉移到新的平台上,並重新命名,建立了一個圖像分析生態系統。

NIH Image及其後續版本使研究人員能在任何計算機上查看和量化幾乎任何圖像。該軟體系列包括ImageJ,一個拉斯班德為Windows和Linux用戶編寫的基於Java的版本;以及Fiji,這是ImageJ的分發版,由德國德累斯頓的馬克斯普朗克分子細胞生物學和遺傳學研究所的Pavel Tomancak團隊開發,其中包括關鍵的插件。「ImageJ無疑是我們所擁有的最基礎的工具,」布洛德研究所(由麻省理工學院和哈佛大學聯合創立)成像平台的計算生物學家貝絲·契米妮說,「我從來沒有和一個使用過顯微鏡,但沒有使用過ImageJ或Fiji的生物學家說過話。」

拉斯班德表示,部分原因可能是這些工具是免費的。但威斯康星大學麥迪遜分校的生物醫學工程師Kevin Eliceiri指出,另一個原因是用戶可以很容易地根據自己的需求定製工具。自拉斯班德退休後,Kevin Eliceiri的團隊一直領導著ImageJ的開發。ImageJ提供了一個看似簡單、極簡主義的用戶界面,自20世紀90年代以來基本上沒有改變。然而,由於其內置的宏記錄器(允許用戶通過記錄滑鼠點擊和菜單選擇的序列來保存工作流)、廣泛的文件格式兼容性和靈活的插件架構,該工具具有無限的可擴展性。該團隊的編程主管柯蒂斯·魯登表示,有「數以百計的人」為ImageJ貢獻了插件。這些新添加的功能極大擴展了研究人員的工具集,例如在視頻中跟蹤對象或自動識別細胞的功能。

Kevin Eliceiri說:「這個程序的目的不是做到一切或終結一切,而是服務於用戶的目標。不像Photoshop和其他程序,ImageJ可以成為你想要的任何東西。」

序列搜索器:BLAST (1990年)

可能沒有什麼能比把軟體名稱變成動詞更能說明文化的相關性了。提到搜索,你會想到谷歌;而提到遺傳學,研究者會立刻想到BLAST。

通過諸如替代、刪除、缺失和重排等方式,生物將進化中的改變蝕刻在分子序列中。尋找序列之間的相似性——特別是蛋白質之間的相似性——可以讓研究人員發現進化關系,並深入了解基因功能。在迅速膨脹的分子信息資料庫中,想要快速而准確地做到這一點並不容易。

瑪格麗特·戴霍夫在1978年提供了關鍵的進展。她設計了一種「點接受突變」矩陣,使研究人員不僅可以根據兩種蛋白質序列的相似程度,還可以根據進化距離來為評估它們的親緣關系。

1985年,弗吉尼亞大學的威廉·皮爾森和NCBI的大衛·利普曼引入了FASTP,這是一種結合了戴霍夫矩陣和快速搜索能力的演算法。

數年後,利普曼與NCBI的沃倫·吉什和斯蒂芬·阿特舒爾,賓夕法尼亞州立大學的韋伯·米勒,以及亞利桑那大學的吉恩·邁爾斯一起開發了一種更強大的改進技術:BLAST(Basic Local Alignment Search Tool)。BLAST發布於1990年,將處理快速增長的資料庫所需的搜索速度,與提取進化上更為遙遠的匹配結果的能力結合起來。與此同時,該工具還可以計算出這些匹配發生的概率。

阿特舒爾表示,計算結果出來得非常快,「你可以輸入搜索內容,喝一口咖啡,搜索就完成了。」但更重要的是,BLAST很容易使用。在一個通過郵寄更新資料庫的時代,沃倫·吉什建立了一個電子郵件系統,後來又建立了一個基於網路的架構,允許用戶在NCBI計算機上遠程運行搜索,從而確保搜索結果始終是最新的。

哈佛大學的計算生物學家肖恩·艾迪表示,BLAST系統為當時處於萌芽階段的基因組生物學領域提供了一個變革性的工具,即一種根據相關基因找出未知基因可能功能的方法。對於各地的測序實驗室,它還提供了一個新穎的動詞。「它是眾多由名詞變成動詞的例子之一,」艾迪說,「你會說,你正准備BLAST一下你的序列。」

預印本平台:arXiv.org (1991年)

20世紀80年代末,高能物理學家經常將他們已投稿的論文手稿副本郵寄給同行,徵求他們的意見——但只發給少數人。物理學家保羅·金斯帕格在2017年寫道:「處於食物鏈較低位置的人依賴於一線研究者的成果,而非精英機構中有抱負的研究人員則往往身處特權圈以外。」

1991年,當時在新墨西哥州洛斯阿拉莫斯國家實驗室工作的金斯帕格編寫了一個電子郵件自動應答程序,希望建立一個公平的競爭環境。訂閱者每天都會收到預印本列表,每一篇都與文章標識符相關聯。只需通過一封電子郵件,世界各地的用戶就可以從實驗室的計算機系統中提交或檢索論文,並獲得新論文的列表,或按作者或標題進行搜索。

金斯帕格的計劃是將論文保留三個月,並將內容限制在高能物理學界。但一位同事說服他無限期地保留這些文章。他說:「就在那一刻,它從布告欄變成了檔案館。」於是,論文開始從比各個領域如潮水般涌來。1993年,金斯伯格將這個系統遷移到互聯網上,並在1998年將其命名為arXiv.org,沿用至今。

arXiv成立已近30年,擁有約180萬份預印本,全部免費提供,而且每月有超過1.5萬份論文提交,下載量達3000萬次。十年前,《自然-光子學》(Nature Photonics)的編輯在評論arXiv創立20周年時寫道:「不難看出為什麼arXiv的服務會如此受歡迎,這個系統讓研究人員能快速而方便地插上旗幟,顯示他們所做的工作,同時避免投稿傳統同行評議期刊時的麻煩和時間成本。」

arXiv網站的成功也促進了生物學、醫學、 社會 學和其他學科同類預印本網站的繁榮。在如今已出版的數萬份關於新冠病毒的預印本中就可以看到這種影響。「很高興看到30年前在粒子物理學界之外被認為是異端的方法,現在被普遍認為是平淡無奇和自然而然的,」金斯伯格說,「從這個意義上說,它就像一個成功的研究項目。」

數據瀏覽器:IPython Notebook (2011年)

2001年,費爾南多·佩雷斯還是一位希望「尋找拖延症」的研究生,當時他決定採用Python的一個核心組件。

Python是一種解釋型語言,這意味著程序是逐行執行的。程序員可以使用一種稱為「讀取-評估-列印循環」(read–evaluate–print loop,簡稱REPL)的計算調用和響應工具,在其中輸入代碼,然後由解釋器執行代碼。REPL允許快速 探索 和迭代,但佩雷斯指出,Python的REPL並不是為科學目的而構建的。例如,它不允許用戶方便地預載入代碼模塊,也不允許打開數據可視化。因此,佩雷斯自己編寫了另一個版本。

結果就是IPython的誕生,這是一個「互動式」Python解釋器,由佩雷斯在2001年12月推出,共有259行代碼。十年後,佩雷斯與物理學家布萊恩·格蘭傑和數學家埃文·帕特森合作,將該工具遷移到web瀏覽器上,推出了IPython Notebook,開啟了一場數據科學革命。

與其他計算型Notebook一樣,IPython Notebook將代碼、結果、圖形和文本合並在一個文檔中。但與其他類似項目不同的是,IPython Notebook是開源的,邀請了大量開發者社區的參與其中。而且它支持Python,一種很受科學家歡迎的語言。2014年,IPython演變為Jupyter,支持大約100種語言,允許用戶在遠程超級計算機上 探索 數據,就像在自己的筆記本電腦上一樣輕松。

《自然》雜志在2018年寫道:「對於數據科學家,Jupyter實際上已經成為一個標准。」當時,在GitHub代碼共享平台上有250萬個Jupyter Notebook;如今,這一數字已經發展到1000萬個,在2016年引力波的發現,以及2019年的黑洞成像工作中,它們都發揮了重要的作用。佩雷斯說:「我們對這些項目做出了很小的貢獻,這是非常值得的。」

快速學習器:AlexNet(2012年)

人工智慧有兩種類型。一種是使用編碼規則,另一種則通過模擬大腦的神經結構來讓計算機「學習」。加拿大多倫多大學的計算機科學家傑弗里•辛頓表示,幾十年來,人工智慧研究人員一直認為後者是「一派胡言」。但在2012年,他的研究生亞力克斯·克里澤夫斯基和伊爾亞·蘇茨克維證明了事實並非如此。

在一年一度的ImageNet比賽中,研究人員被要求在一個包含100萬張日常物體圖像的資料庫中訓練人工智慧,然後在一個單獨圖像集上測試生成的演算法。辛頓表示,當時最好的演算法錯誤分類了大約四分之一的圖像。克里澤夫斯基和蘇茨克維的AlexNet是一種基於神經網路的「深度學習」演算法,它將錯誤率降低到了16%。辛頓說:「我們基本上把錯誤率減半了,或者說幾乎減半了。」

辛頓還指出,該團隊在2012年的成功反映了足夠大的訓練數據集與出色的編程,以及新出現的圖形處理單元的強大能力的結合。圖形處理單元是最初設計用來加速計算機視頻性能的處理器。「突然之間,我們可以將(演算法)運行速度提高30倍,」他說,「或者說,學習多達30倍的數據。」

真正的演算法突破實際上發生在三年前,當時辛頓的實驗室創建了一個神經網路,可以比經過幾十年改進的傳統人工智慧更准確地識別語音。「只是稍微好一點,」辛頓說,「但這已經預示了某些東西。」

這些成功預示著深度學習在實驗室研究、臨床醫學和其他領域的崛起。通過人工智慧的深度學習,手機能夠理解語音查詢,圖像分析工具能夠很容易地在顯微照片中識別出細胞;這就是為什麼AlexNet會成為眾多從根本上改變科學,也改變世界的工具之一。(任天)

10. 用python做一個地球圍繞太陽轉的圖形

平台: python2.7.10 + wxpython 3.0.2

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from __future__ import unicode_literals
import wx

__version__ = '0.1'
app_title = 'Temperature Translator - {}'.format(__version__)

class TempTranslator(wx.Frame):
def __init__(self, parent=None, size=(620, 200), title=app_title):
super(TempTranslator, self).__init__(parent, size=size, title=title)
self.SetMinSize(self.GetSize())
self.panel = wx.Panel(self)

self.init_layout()
self.panel.Layout()
self.Centre(wx.BOTH)
self.Show()

def init_layout(self):
font = self.GetFont()
font.SetWeight(wx.BOLD)
font.SetPointSize(15)
self.panel.SetFont(font)

vbox = wx.BoxSizer(wx.VERTICAL)
self.add_label(vbox, f2c=True)
self.f_tc1, self.c_tc1 = self.add_input(vbox, f2c=True)
self.f_tc1.Bind(wx.EVT_TEXT, self.on_f_text)

line = wx.StaticLine(self.panel, -1, style=wx.LI_HORIZONTAL)
style = wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.TOP
vbox.Add(line, 0, style, 5)

self.add_label(vbox, f2c=False)
self.c_tc2, self.f_tc2 = self.add_input(vbox, f2c=False)
self.c_tc2.Bind(wx.EVT_TEXT, self.on_c_text)

self.panel.SetSizer(vbox)

def add_label(self, vbox, f2c=True):
if f2c:
text1 = 'Fahrenheit'
text2 = 'Celsius'
else:
text1 = 'Celsius'
text2 = 'Fahrenheit'

hbox = wx.BoxSizer(wx.HORIZONTAL)
label = wx.StaticText(self.panel, -1, text1, size=(-1, 30),
style=wx.ALIGN_CENTER)
hbox.Add(label, 1, wx.EXPAND, 10)

label = wx.StaticText(self.panel, -1, text2, size=(-1, 30),
style=wx.ALIGN_CENTER)
hbox.Add(label, 1, wx.EXPAND, 10)
vbox.Add(hbox, 0, wx.EXPAND, 10)

def add_input(self, vbox, f2c=True):
hbox = wx.BoxSizer(wx.HORIZONTAL)
tc1 = wx.TextCtrl(self.panel, -1, size=(260, 40), style=wx.TE_CENTER)
tc1.Bind(wx.EVT_TEXT, self.on_f_text)

label = wx.StaticText(self.panel, -1, ' = ')

tc2 = wx.TextCtrl(self.panel, -1, size=(260, 40), style=wx.TE_CENTER)

hbox.Add(tc1, 1, wx.EXPAND, 10)
hbox.Add(label, 0, wx.ALL | wx.EXPAND, 10)
hbox.Add(tc2, 1, wx.EXPAND, 10)
vbox.Add(hbox, 1, wx.EXPAND, 10)
return tc1, tc2

def on_f_text(self, evt):
f = self.f_tc1.GetValue()
self.c_tc1.SetValue('{}'.format(self.f2c(f)))

def on_c_text(self, evt):
c = self.c_tc2.GetValue()
self.f_tc2.SetValue('{}'.format(self.c2f(c)))

def f2c(self, f):
return (float(f) - 32) / 1.8 if f else ''

def c2f(self, c):
return float(c) * 1.8 + 32 if c else ''

if __name__ == '__main__':
app = wx.App()
TempTranslator()
app.MainLoop()

閱讀全文

與python地球物理相關的資料

熱點內容
aes對稱加密反編譯 瀏覽:548
java編譯成exe 瀏覽:188
gps處理演算法 瀏覽:594
什麼app可以和對象存錢 瀏覽:144
java字元串表達式計算 瀏覽:328
javacmd環境變數 瀏覽:49
電視上面找不到全民歌app怎麼辦 瀏覽:154
單片機中psw0 瀏覽:992
優酷視頻加密么 瀏覽:761
本地連接dos命令 瀏覽:204
雲伺服器怎麼上傳金幣房卡游戲 瀏覽:69
Python快遞管理可視化 瀏覽:417
java正則驗證數字 瀏覽:828
猴子網游安卓掃碼怎麼登錄 瀏覽:355
7天工作總結簡短程序員 瀏覽:60
手機號交易網站源碼 瀏覽:687
計算機演算法怎麼學 瀏覽:401
m2手環用什麼app才能用 瀏覽:227
應用伺服器打不開怎麼辦 瀏覽:538
釘釘安卓手機如何設置 瀏覽:559