ホワイト ペーパーに記載されている一般的な数学演算を、最小限の数学のバックグラウンドを持つコーダーがコーディング イディオム (for ループなど) の観点から理解できるように説明できるリソースを探しています。
さまざまな方程式で同じ種類の記号が使われているのをよく見かけますが、その結果、簡単に理解できるアルゴリズムが得られることがよくあります。記号の意味を概観することは、学術論文をより理解しやすくするのに大いに役立ちます。
ホワイト ペーパーに記載されている一般的な数学演算を、最小限の数学のバックグラウンドを持つコーダーがコーディング イディオム (for ループなど) の観点から理解できるように説明できるリソースを探しています。
さまざまな方程式で同じ種類の記号が使われているのをよく見かけますが、その結果、簡単に理解できるアルゴリズムが得られることがよくあります。記号の意味を概観することは、学術論文をより理解しやすくするのに大いに役立ちます。
私はコードに変換される複雑な数学的操作のために、このサイトを常に使用しています。私は高校を卒業したことがありません。
http://www.wolframalpha.com/
私が考えることができる唯一のものは明らかではなく(算術、三角関数など)、コードで直接同等のものは sum 、Σ
、および productΠ
です。
次のようなものΣ a[i]
です:
sum = 0;
for (i = 0; i < len(a); ++i) sum += a[i];
およびいくつかの関連する詳細: 下付き文字 (行の下の小さな数字) は、多くの場合、配列インデックスと同じです (したがって、i
inΣ a[i]
は、 の下および右に小さく書かれる場合がありますa
)。同様に、i
値の範囲 (ここ0
では の長さまで) は、 (開始値 、下部、終了値 、上部)a
のすぐ右にある 2 つの小さな数値として指定できます。Σ
0
n
同等の製品はΠ a[i]
次のとおりです。
product = 1;
for (i = 0; i < len(a); ++i) product *= a[i];
コメントの更新xan は、マトリックスもカバーすることを提案しています。それらは複雑になりますが、最も単純には次のようになります。
a[i] = M[i][j] b[j]
(上記のように、 i
andが添字である可能性がはるかに高い)。j
そしてそれは暗黙のループを持っています:
for (i = 0; i < len(a); ++i) {
a[i] = 0;
for (j = 0; j < len(b); ++j) a[i] += M[i][j] * b[j]
}
さらに悪いことに、多くの場合、それは単に次のように書かれa = M b
、自分ですべてを埋めることが期待されています....
更新 2以下で参照する論文の最初の式は ですw(s[i],0) = alpha[d] * Size(s[i])
。私が見る限り、それは以下に過ぎません:
double Size(struct s) { ... }
double w(struct s, int x) {
if (x == 0) return alpha[d] * Size(s);
...
}
および他の用語も同様に派手に見えますが、実際には複雑な関数呼び出しや乗算ではありません。|...|
であり、「ドット」は乗算であることに注意してくださいabs(...)
(私は思います)。
「一般的な数学演算」は、あなたが解決するのに慣れている問題の種類によって異なります。単純な算術 (+、-、、/) から計算 (積分、和、導関数、偏微分方程式、行列など) まで、さまざまな範囲に及ぶ可能性があります。
あなたと開発チームにとって「共通」とは何を意味しますか?