# 【競プロ Tips】Wolfram Alpha を使いこなそう ## Wolfram Language を覚えよう Wolfram Alpha はそれっぽく書けば AI の力でうまく解釈してくれるんですが… [![](https://hackmd.io/_uploads/SkW0dgme6.png =600x)](https://www.wolframalpha.com/input?i=sum%5BB+%3D+A%2B2+-%3E+N%5D+%28A-1%29%21*%28B-A-1%29%21*comb%28B-3%2CA-1%29*%28N-B%29%21*comb%28N-A-2%2CN-B%29&lang=ja) 長すぎると解釈してくれないことがあります。 簡潔に書ける Wolfram Language を覚えましょう。 ![](https://hackmd.io/_uploads/S1KZ9bXlp.png =600x) プレーンテキスト → Wolfram 言語のコードでどう書けばいいかがわかる 文法は [Wolfram 言語 : プログラムの基本](https://www.wolfram.com/language/fast-introduction-for-programmers/ja/built-in-functions/) あたりを読むといいかな? #### 便利なやつ - [Sum](https://reference.wolfram.com/language/ref/Sum.html.ja?source=footer) - `Sum[x^3, {x, 1, N}]` で $3$ 乗和 - Product - Table - `Table[Product[Prime[i], {i,1,n}], {n,1,10}]` で $n = 1, …, 10$ について、素数前 $n$ 個の積を計算 - Solve - `Solve[3x+5y==7, {x,y}, Integers]` で $3x+5y=7$ の整数解を計算 - NextPrime - `NextPrime[2^32, -1]` で $2^{32}$ 以下の最大の素数を計算 - PrimeQ - 素数判定 - PrimitiveRoot - Binomial - 長いので Wolfram Alpha に書くときは Binom にしちゃっていいかも - Series - テイラー展開とか - FindGeneratingFunction - 母関数を見つける - Integrate - 積分 - D - 微分 - Limit - 極限 - Expand - 展開 ## 手元で計算しよう `Integrate[Sqrt[x^2 + y^2], {x, 0, a}, {y, 0, b}]` を計算したいですが、Wolfram Alpha に入れても時間切れになってしまいます。 ![](https://hackmd.io/_uploads/rkX2cMQl6.png =600x) そこで、手元で計算しましょう。 [Wolfram Engine Community Edition](https://www.wolfram.com/engine/index.php.ja?source=footer) を使って手元で 1 分くらい計算させると… ![](https://hackmd.io/_uploads/HJnUozQga.png) $$ \int_0^a\int_0^b\sqrt{x^2 + y^2}dydx = \frac{4ab\sqrt{a^2 + b^2} + 2a^3\log\left(\frac{b + \sqrt{a^2 + b^2}}{a}\right) + b^3\log\left(1 + \frac{2a(a + \sqrt{a^2 + b^2})}{b^2}\right)}{12} $$ であることがわかりました。