mathematica 能 批量生成自定義函數嗎 幫助都翻破了 找不到解決方法?

我想實現這樣的功能:fi(t)=t^i. i從1到100 利用循環定義100個函數。即函數名是 f1到f100 利用i自動生成


暫時想到用 Symbol 這個函數:

Clear[f1, f2, f3, f4, f5];
Table[With[{k = i}, Symbol["f" &<&> ToString[k]][t_] := t^k];, {i, 1,
5}]


雖然不知道題主這個需求有什麼用(用二元函數不就好了2333)...不過這樣可以實現:

Table[
(Evaluate@ToExpression@("f" &<&> ToString[n]))[x_] := Evaluate[x^n],
{n, 1, 100}];


給一種其他方法

Do[With[{i=i},ToExpression[MakeBoxes[RawBoxes["f"&<&>ToString[i]] [x_]:=x^ i]]],{i,100}]


建議用 f[1], f[2], ..., f[100] 來表示,以方便管理,

ClearAll[f];
Array[(f[#][t_]:=t^#),100];

用 f1, ..., f100 來表示也可以實現,

ClearAll["f*"];
Array[(Symbol["f"&<&>ToString@#][t_]:=t^#),100];


ToExpression[Table[TemplateApply["f&<*i*&>[t_]:=t^&<*i*&>"],{i,100}]];

檢驗一下:


對一些實用的場合,用二元函數也不錯吧?


推薦閱讀:

Mathematica導入牆外網頁數據失敗,軟體內如何實現科學上網?
為什麼這個積分 Mathematica 的精度如此之低?
編寫過10萬行Mathematica代碼 (精簡後) 是種什麼樣的體驗?
Mathematica 里如何查看函數內部代碼?

TAG:WolframMathematica |