對於物理專業c語言和matlab哪個重要?

我們計算物理和數學物理方法的老師都不讓我們用matlab或者mathematica算微分方程,反而讓我們用c語言/fortran寫,老師這樣做有道理嗎?我們用c都寫到吐血了,本來用matlab輕鬆的事


當年一塊玩計算物理的小夥伴們,

有人在美國念完PhD自己開了高頻交易的公司,

有人轉行做了程序員,

有人成了實驗流的高校教師或者研究員,

有人進了工業界做了工程師,

有人當了公務員。

對於當公務員的,別說C,讓他寫matlab都沒道理;

對於當工業界工程師的,寫寫matlab就得了;

對於程序員或者玩高頻交易的,寫C太有道理了。

人的命運啊,不可預料。如果以後當老師,不把裡面的演算法細節弄清楚,豈不誤人子弟?

可問題是,倒退十幾年,沒有人知道自己以後要做什麼,哪些技能是必須的,哪些不是。

這時候講什麼有沒有道理呢,多一樣技能多一種可能性不是么。

關鍵是,學東西,做事情,沒有什麼『輕鬆』的事。

那些輕鬆的道路上,擠滿了同樣貪圖輕鬆的少年們。

(霍霍霍好好的演算法比較題被我活活答成了雞湯題也是夠了。)


matlab把實現原理等細節都封裝到函數里了,用戶只要調用一下就行。

而你現在是在上課而不是科研,上課的目的是學會原理並訓練技巧,科研則是能用、方便就行。

你會用封裝好的函數,不代表懂得演算法,更不代表你會一行行的用代碼來實現。尤其是計算物理這門課,沒有大量的編程經驗是很難融會貫通的。


1. 永遠不要把一門知識和技術看得有多重要。這個世界上需要專家沒錯,但是大部分情況下,通才往往更好混。足球你們都看吧?頂級巨星有多少?角色球員有多少?當然是角色球員更適合普通人。

2. 沒有人知道十年後自己會幹嘛。不要根據幾年後的事情來決定自己要學什麼技術

3. c是圖靈完備的,matlab我感覺是,但是沒看過這方面的報道,學c至少可以保證吐著血做任何事情

4. 學了c你將來的路不能說好走,但是選擇肯定比matlab要多

5. 雖然選擇多,但是有些選擇會比matlab難走,不過到時候再學matlab也不遲啊


Mathematica更重要


對於「對於物理專業c語言和matlab哪個重要」這個問題來說,中肯的回答是:都重要,面對不同的問題還是需要不同粒度的工具才能遊刃有餘的。

不過看起來題主是來吐槽為什麼有matlab這麼好用的工具的情況下還要手寫RK4解微分方程的,只能說在解決實際問題的時候有時還真得這麼做。

兩個例子:

第一個例子:我最近在複雜網路上做模擬,每個節點是一個動力學單元,考慮10000個節點的系統,其實就是解10000個耦合的偏微分方程組,我平常是用Mathematica不用MatLab的,這種問題直接用Mathematica的NDSolve解肯定炸了,MatLab相應的解微分方程的函數估計也夠嗆。

那這問題怎麼解?手寫RK4唄,我是用c++寫的,c/fortran也可以。MatLab其實也可以解這樣的問題,直接寫成矩陣形式的RK4就可以算,效率還不錯。但不管怎麼樣你得會手寫RK4。

第二個例子:師兄在做非線性偏微分方程的數值計算,有時候方程是有奇點的,MatLab自帶函數對奇點的處理不太好,又是個黑盒沒法調整參數,怎麼辦?手寫RK4,然後根據對系統的認識去重新做分解調參數,然後找到想要的結果。

很多時候做動力系統是個手工活,你希望直接輸入電腦就把結果返回回來很多時候不大可能。

反正這麼說吧,如果題主將來還要上研讀博,總會發現本科時候學的東西大體上還都是有用的,趁年輕多學點東西多練練手沒錯,這樣等你有好點子要做研究的時候才能輕鬆起飛~


沒有強迫讓用Fortran已經比我們強了……

我也覺得實現演算法很重要,畢竟學物理要有打開黑箱的精神,但是選用什麼工具還是值得斟酌的。就開一個精密組裝的演算法黑箱這件事而言,C是螺絲刀,Python是全套工具包。

而Fortran,它就是個鈍手鋸……


上學期間用c比較好,自己實現演算法記得比較牢,哪怕以後不用,也算是對思維的一種訓練,有利無弊。


matlab兩天就能學會,不懂為什麼大家這麼糾結


都會吧。以後說不定就用到了。本科學包裝的人現在要去造晶元了


因為你們還在上課,用c能學到很多底層的細節,如果用matlab偷個懶,基礎不紮實以後會遇到問題

真搞科研搞項目了,白貓黑貓抓到老鼠就是好貓


利益相關:物理計算搬磚狗

對於大多數學物理的人,MATLAB或者mma完全足夠,操作簡單,集成度高。對於一般的科學計算和作圖要求完全足夠。

對於需要大數據量計算的情況,只能使用c這種高效的語言。不過為什麼不試試Fortran呢?


matlab如重劍,一兩刀的事情用起來非常順手。但是如果讓你揮上百萬次電腦將會花非常長的時間。

C語言如高速劍,合理利用指針和初始化的話,能讓你的程序效率有一到兩個數量級的提升。

總之,不需要大量數據量的處理的話matlab節省你的編程時間。需要大數據量處理的話,c語言節省電腦的運行時間。兩者可以互補。

當然,這也只是我自己理解的皮毛。權且一聽。


可不可以這麼理解:C是一種編程語言,而MATLAB只是一種數學工具。


我讀本科時是先學C再學Matlab,研究生時只學matlab,建議matlab


matlab工具都準備好了,c都要自己寫,這是一個很好的學習理解的過程啊


matlab可以很快算一些結果出來,而且中間過程各個參數和矩陣的值都可以直接看到,方便很多。同時也能快速畫出來一些圖,方便大家進一步討論。

c++速度快,並行也很好。我覺得等想法比較成熟以後再寫c語言的程序,可以在伺服器上跑


語言只是工具,你是物理專業的學生,而不是專門寫程序的。你寫程序只是為了實現你們專業的內容,實現科研上的想法。所以用什麼都無所謂,順手就可以。


看目的。如果是希望今後搞開發,就多練C;如果是集中於演算法或驗證,就用MATLAB。特別在進行數值演算法開發的初期,用MATLAB進行演算法正確性的驗證比C方便得多,不必過於糾纏於語言特別是內存管理的細節,進度較快。待演算法正確性驗證完成,再轉換為C也是比較方便的事情。


都重要 問問前輩吧 畢竟只是傳承交流方便最重要 用好了這幾個都能出神入化,有精力就都搞搞

不過樓主上課的話就按老師說的做吧 很多時候老師只是為了讓你加深對課程的理解故意不讓你調用各種包的,要理解老師用意啊


問題在於你需要看懂別人的代碼


matlab不就是C寫的嗎?


如果我來回答,要選c語言。不過還有更好的答案,就是學習程序設計的藝術裡面的彙編。那個更接近計算機的本質,而且相對c語言其實要簡單。

提一下,我大學理論物理,畢業寫了十年c語言。


推薦閱讀:

依賴 Mathematica 會有怎樣的後果?
理論上是不是所有寶石都可以合成?
昆蟲振翅飛行的原理是什麼?人類有沒有利用這種技術的飛行器?
怎樣尿得遠?有哪些技巧?

TAG:編程 | 物理學 | MATLAB | 計算物理學 |