質問編集履歴

1

変換元の数式文字列についての文法,うまくいかない場合の出力の追加

2022/10/17 04:45

投稿

AI_engineer
AI_engineer

スコア15

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,7 @@
19
19
  ### 該当のソースコード
20
20
 
21
21
  ```Python
22
+ 各リストの要素がもつ引数の値を返す関数.例えばaddならadd(1,x)=1+xを表し,引数は1とxの2つとなる.
22
23
  def getArity(name):
23
24
  if name in ["x","-1","0","1","0.5","0.1","pi","e"]:
24
25
  return 0
@@ -30,11 +31,12 @@
30
31
  print("bug : not define ",name)
31
32
  exit()
32
33
 
33
- # 引数の数を返す。(数式を木構造で表しているので、えば四則演算記号なら引数2。三角関数なら引数1など)
34
+ # 演算記号とそれがもつ引数の数をタプルで返す。(例)('div', 2)、('sqrt', 1)
34
35
  def addArityInfo(array):
35
36
  new_array = [(name,getArity(name)) for name in array]
36
37
  return new_array
37
38
 
39
+ # TeXの数式記述形式に変換する関数
38
40
  def transformTexForm(array):
39
41
  def getEnd(start,array):
40
42
  _sum = 1
@@ -92,7 +94,7 @@
92
94
  str_arr.append("")
93
95
  return "".join(str_arr)
94
96
 
95
- # 変換する数式
97
+ # string: 変換する数式
96
98
  string = "div(cos(mul(0.5,0.1)),cos(add(cos(add(sin(e),div(div(div(div(e,x),div(0.1,e)),log(add(x,-1))),div(0.1,div(div(e,x),div(0.1,e)))))),mul(div(div(div(0.1,div(div(e,x),div(0.1,e))),div(div(e,add(x,-1)),div(0.1,e))),div(div(div(div(e,x),div(0.1,e)),x),div(0.1,div(div(e,x),div(0.1,e))))),div(div(0.1,div(div(e,x),div(0.1,e))),div(div(div(div(e,x),div(0.1,e)),log(add(x,-1))),div(0.1,div(div(e,x),div(0.1,e)))))))))"
97
99
  array = []
98
100
  s = ""
@@ -121,6 +123,19 @@
121
123
  ```
122
124
  とdivと同様に処理を書き換えたがうまくいかなかった。
123
125
 
126
+ 簡単な数式で試した場合、
127
+ (例)cos(0.5*0.1) / cos(1+x)をLATEXで表示できるように変換したい。
128
+ ```
129
+ string = "div(cos(mul(0.5,0.1)),cos(add(1,x)))"
130
+ ```
131
+ として、変換を行うと、
132
+ ```
133
+ \frac{cos(0.5)}{ (0.1)}cos1+x
134
+ ```
135
+ と出力されます。\frac{cos(0.5*0.1)}{cos(1+x)}が正しい出力だと思います。
136
+ 三角関数、根号、指数・対数関数の()内の処理が誤っているようです。
137
+
138
+
124
139
  ### 補足情報(FW/ツールのバージョンなど)
125
140
 
126
141
  ここにより詳細な情報を記載してください。