# 【競プロ 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}
$$
であることがわかりました。