ChatGPTでWolfram言語のコードをGo言語に変換できるか
以前に、MathematicaのコードをPythonに変換できるか実験しました。
で、前回、Go言語の環境を作ったので、さっそく試してみます。
ただ、コマンドベースでの変換なので、グラフの表示などができないのは仕方がないということで。
比較のために以前と同じコードを使います。
(以下、入力部分は「Wolframドキュメントセンター」より引用、応答部分は「ChatGPT」からの応答です)
前回と同様、まずは、ChatGPTに「これから入力するMathematicaコードをPythonに変換してね」と伝えます。
(以前にやった私のチャットの情報は残った状態でやりますので、人によっては違う回答をよこしてくるかもしれません。)
入力>
Convert the following Mathematica code to Go language: |
応答>
Certainly! Please provide the Mathematica code you'd like to convert to Go, and I'll do my best to help you with the conversion. |
「ベストを尽くします」というのは前回と同じなので、このあたりは変換などの時には常に前置きをするんでしょうね。「万能じゃないよ。責任持たないよ」って。
入力>
Coefficient[(x + 1)^3, x, 2] |
出力は…
----------------------------------------------
The Mathematica code you provided calculates the coefficient of the term with degree 2 in the expansion of (�+1)3(x+1)3. In Go, you can achieve a similar result by expanding the expression and then extracting the coefficient. Here's a simple Go program that does that:
package main
import ( "fmt" "math/big" )
func binomialCoefficient(n, k int64) *big.Int { if k < 0 || k > n { return big.NewInt(0) }
if k == 0 || k == n { return big.NewInt(1) }
result := new(big.Int) result.Binomial(n, k) return result }
func coefficientOfTerm(exp, variable, degree int64) *big.Int { return binomialCoefficient(exp, degree) }
func main() { // Coefficient of x^2 in the expansion of (x + 1)^3 result := coefficientOfTerm(3, 2, 2) fmt.Printf("Coefficient: %s\n", result.String()) } |
This program defines a function coefficientOfTerm that calculates the coefficient using the binomial coefficient formula. The main function then calls this function for the specific example you provided.
Note: In Go, the big package is used for arbitrary-precision arithmetic to handle larger coefficients. The result is printed as a string for better precision.
----------------------------------------------
いつも通り少し解説があるんですが、「Note」が気になります。なので訳出してみると、、、
「Goでは、大きな係数を処理するための任意制度演算には、大きなパッケージが必要になります。結果は、より良い精度のために文字列として出力されます」
とのこと。
あと、なんとなくGo言語のコードがPythonに比べてとても長い印象。Pythonの時は5行だった。
数式処理用のライブラリがないのか。いまのところGo言語ではこの分野はあまり得意ではないのかもしれないです。
じゃあ、これをVisual Studio Codeにコピーして、実行してみましょうか。
ファイル名は「Go_Calc_Sample_1.go」としました。
あと、「go.mod」の生成もいるので、Windowsのコマンドラインで、次を実行します。
C:\[Goプログラムがあるフォルダー]> go mod init Go_Calc_Sample_1.gp |
簡単なコードですから、デバッグはしないので、いきなり実行します。出力を表示するために、「デバッグコンソール」を開いておきます。
「実行」->「デバッグなしで実行」を選択します。
デバッグコンソールには次のように正しく「3」が返ってきました。
デバッグをスキップしているのにデバッグコンソールに出てくるのはいまいちかなあ、と思いますが、どこかに設定があるんでしょうね。