Mathematica使用過程中的心得

Mathematica軟件功能強大,雖然現在已有中文的幫助文檔,要把幫助文檔全部吃透是很難的,有時候如果一些細節問題沒有搞清楚,雖然M可以給出結果,但不一定是正確的,有些時候直接無法計算信息。因此還有很多細節的問題要自己摸索,現把本人在使用M的過程中的心得與大家共享。
也希望大家能多發表些使用心得的貼子,這對于對M的學習非常有幫助。計算分析常常一個符號,一個數字決定著結果的成敗。
1 因為for循環在程序中應用很多。以下為常遇到的問題。在For循環中,即For[i=1,i<n,i++,body]最后一次計算,當i循環到第n次,即i=>n時,則此時計算中止,所以在for循環中,此時在test即程序中(i<n)后面的出現的i值為第n-1次加1時的值即i=n-1,而在for循環外,所有語名中包含i的值為i第n次加1即i=n時的值,這一點非常重要??傊?,循環結束時,循環內與循環外的i 值是不同的??衫孟率竭M行試算。vv[8],vv[3],ff[10],分析輸出結果。
vv[n_] := (For[i = 1, i < n, i++, If[(i - 8) > 0, Break[]]];
If[ i > 8, Print[i + bb], Print[i + aa]]; i)
2 對于利用for定義的函數,返回值為最后一個;后面的表達式的i(如下例i),而不是print結果.但執行的定義的函數時,相當于執行所定義的語句,可以輸出print的結果及返回值。
ttt[x_] :=
Module[{tt1}, (For[i = 1; tt1[0] = b, i < x, i++,
tt1 = m tt1[i - 1]; Print[i + c]]; Print[i + d]; tt1)]
3 如下式:
ttt1[x_] := Module[{tt1}, (For[i = 1; tt1[0] = b, i < x, i++, tt1[i_] := tt1 = m tt1[i - 1]; Print[i + c]]; Print[i + d]; tt1)]
ttt2[x_] := Module[{tt1}, (For[i = 1; tt1[i_] := tt1 = m tt1[i - 1]; tt1[0] = b, i < x, i++, Print[i + c]]; Print[i + d]; tt1)]
ttt3[x_] := Module[{tt1}, (For[i = 1; tt1[0] = b; tt1[i_] := tt1 = m tt1[i - 1], i < x, i++, Print[i + c]]; Print[i + d]; tt1)]
當x=1時,ttt1運行到test時不滿足條件,中斷,因此此過程tt1[]函數仍未定義,所以tt1[x]未知,當x=2時,則整個過程執行了一遍,tt1得到了定義,所以tt1[x]也可以算出,因此,ttt1[1]未能算,而ttt1[2],ttt1[3],.....,則可以計算。這時再算ttt1[1]則可以計算,因為執行ttt1[x],x>1時,tt1[x]函數已被定義,并被計算機所記錄,所以可以計算,若tt1為局部函數,則當退出函數時,tt1[x]函數仍為未知。因此定義函數最好使用module函數,否則可能會定義在不同的函數內部的函數相互交差。
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP