質問編集履歴
1
変換元の数式文字列についての文法,うまくいかない場合の出力の追加
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
|
-
# 引数の数を返す。(
|
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
|
ここにより詳細な情報を記載してください。
|