(2023/07/02) バグあり。調査中。
csv形式も出力しています。csv形式→Markdown表へ変換しました。
おすすすめがあれば、教えて下さい。
会話記録(2022年6月梅雨時編)
会話記録は誘導です。久しぶりに,中学生のA子さんとB子さん登場。(5月GW編自転車君以来)
中学生A子(以下A子)「この暑い時期にどうして私たちが登場しないとだめなの。」
中学生B子(以下B子)「何か増減表とか言っているわよ。」
私 「増減表は、関数のグラフを書くのに必要です。」
A子「スマホのwolframalphaで、グラフが簡単に書けるのに必要なの?」
B子「wolframalphaで、最大値、最小値に続けて関数を入力すれば、最大値、最小値も計算してくれるわよ。」
A子「wolframalphaで、極値に続けて関数を入力すれば、極大値、極小値も計算してくれるね。」
A子,B子「スマホで関数のグラフが書けるのに、めんどくさいわね。」
私 「それで、増減表作成アプリを探したけど、みつかりませんでした。」
sympyでVer0.11
online sympyでうごきませんでした。Error.
わかる方,教えて下さい。
# 関数の増減表作成プログラム_Markdown表 Ver0.11
from sympy import *
var('x')
def myZogenhyoCsv(y):
dy=diff(y, x)
ans=myList(dy)
n=len(ans)
m=n*2+1
myHyo0 = [".... "]
myHyo1 = [myFugo(dy, ans[0] - 3)]
myHyo2 = [myYajirusi(myHyo1[0])]
j=0
for i in range(n):
j=j+1
myHyo0 = myHyo0 + [ans[i]]
myHyo1 = myHyo1 + ["0"]
myHyo2 = myHyo2 + [y.subs({x:ans[i]}).simplify()] #20220808
if i<n-1:
j = j + 1
myHyo0 = myHyo0 + ["..."]
myHyo1 = myHyo1 + [myFugo(dy,(ans[i]+ans[i+1])/2)]
myHyo2 = myHyo2 + [myYajirusi(myHyo1[j])]
j = j + 1
myHyo0 = myHyo0 + ["...."]
myHyo1 = myHyo1 + [myFugo(dy, ans[i] + 3)]
myHyo2 = myHyo2 + [myYajirusi(myHyo1[j])]
myHyo0 = ["x"] +myHyo0
myHyo1 = ["f'(x)"]+myHyo1
myHyo2 = ["f(x)"] +myHyo2
return myHyo0,myHyo1,myHyo2
def myList(y):
l0 = solve(y)
ll0 = []
for i in range(len(l0)):
ll0 = ll0 + [l0[i]]
return ll0
def myFugo(z, xi):
Fugo = "-"
if (z.subs({x: xi}) > 0):
Fugo = "+"
return Fugo
def myYajirusi(PlusMinus):
Yajirusi = "↘"
if (PlusMinus == "+"):
Yajirusi = "↗"
return Yajirusi
def myCsv2Markdown(Gyo):
Md=""
for i in range(len(Gyo)):
Md = Md + "|" +str(Gyo[i])
return Md + "|"
def myDefMarkdown(nCol):
ans='|'
for i in range(nCol):
ans=ans+':-:|'
return ans
def myCsv(ans):
print("[csv形式増減表]")
for i in range(3):
print(",".join(map(str,ans[i])))
return
def myCsvMarkdown(y):
ans = myZogenhyoCsv(y)
print("y=", y)
print("")
myCsv(ans)
print("")
print("[markdown形式増減表]")
print(myCsv2Markdown(ans[0]))
print(myDefMarkdown(len(ans[0])))
print(myCsv2Markdown(ans[1]))
print(myCsv2Markdown(ans[2]))
return
myCsvMarkdown(2*x**3-4*x**2+2*x)
plot (2*x**3-4*x**2+2*x)
myCsvMarkdown(3*x**4+2*x**3-6*x**2-6*x-1)
plot (3*x**4+2*x**3-6*x**2-6*x-1)
実行結果は、次ページです。
sympyでVer0.2
# 関数の増減表作成プログラム_Markdown表 Ver0.2(20220816)
from sympy import *
var('x')
def myZogenhyoCsvXminXmax(y,*XminXmax):
dy=diff(y, x)
ans=myList(dy)
n=len(ans)
myHyo0 = [XminXmax[0][1]]
myHyo1 = [""]
myHyo2 = [y.subs({x:XminXmax[0][1]})]
myHyo0 = myHyo0 + ["... "]
myHyo1 = myHyo1 + [myFugo(dy,(XminXmax[0][1]+ans[0])/2)]
myHyo2 = myHyo2 + [myYajirusi(myHyo1[1])]
j=0
for i in range(n):
j=j+1
myHyo0 = myHyo0 + [ans[i]]
myHyo1 = myHyo1 + ["0"]
myHyo2 = myHyo2 + [y.subs({x:ans[i]})]
if i<n-1:
j = j + 1
myHyo0 = myHyo0 + ["..."]
myHyo1 = myHyo1 + [myFugo(dy,(ans[i]+ans[i+1])/2)]
myHyo2 = myHyo2 + [myYajirusi(myHyo1[j])]
j = j + 1
myHyo0 = myHyo0 + ["..."]
myHyo1 = myHyo1 + [myFugo(dy,(ans[i]+XminXmax[0][2])/2)]
myHyo2 = myHyo2 + [myYajirusi(myHyo1[j+1])]
myHyo0 = myHyo0 + [XminXmax[0][2]]
myHyo1 = myHyo1 + [""]
myHyo2 = myHyo2 + [y.subs({x:XminXmax[0][2]})]
#
myHyo0 = ["x"] +myHyo0
myHyo1 = ["f'(x)"]+myHyo1
myHyo2 = ["f(x)"] +myHyo2
return myHyo0,myHyo1,myHyo2
def myZogenhyoCsv(y):
dy=diff(y, x)
ans=myList(dy)
n=len(ans)
myHyo0 = [".... "]
myHyo1 = [myFugo(dy, ans[0] - 3)]
myHyo2 = [myYajirusi(myHyo1[0])]
j=0
for i in range(n):
j=j+1
myHyo0 = myHyo0 + [ans[i]]
myHyo1 = myHyo1 + ["0"]
myHyo2 = myHyo2 + [y.subs({x:ans[i]})]
if i<n-1:
j = j + 1
myHyo0 = myHyo0 + ["..."]
myHyo1 = myHyo1 + [myFugo(dy,(ans[i]+ans[i+1])/2)]
myHyo2 = myHyo2 + [myYajirusi(myHyo1[j])]
j = j + 1
myHyo0 = myHyo0 + ["...."]
myHyo1 = myHyo1 + [myFugo(dy, ans[i] + 3)]
myHyo2 = myHyo2 + [myYajirusi(myHyo1[j])]
#
myHyo0 = ["x"] +myHyo0
myHyo1 = ["f'(x)"]+myHyo1
myHyo2 = ["f(x)"] +myHyo2
return myHyo0,myHyo1,myHyo2
def myList(y):
l0 = solve(y)
ll0 = []
for i in range(len(l0)):
ll0 = ll0 + [l0[i]]
return ll0
def myFugo(z, xi):
Fugo = "-"
if (z.subs({x: xi}) > 0):
Fugo = "+"
return Fugo
def myYajirusi(PlusMinus):
Yajirusi = "↘"
if (PlusMinus == "+"):
Yajirusi = "↗"
return Yajirusi
def myCsv2Markdown(Gyo):
Md=""
for i in range(len(Gyo)):
Md = Md + "|" +str(Gyo[i])
return Md + "|"
def myDefMarkdown(nCol):
ans='|'
for i in range(nCol):
ans=ans+':-:|'
return ans
def myCsv(ans):
print("csv形式増減表")
for i in range(3):
print(",".join(map(str,ans[i])))
return
def myCsvMarkdown(y,*XminXmax):
if XminXmax==():
ans = myZogenhyoCsv(y)
else:
ans = myZogenhyoCsvXminXmax(y,*XminXmax)
myCsv(ans)
print("")
print("markdown形式増減表")
print(myCsv2Markdown(ans[0]))
print(myDefMarkdown(len(ans[0])))
print(myCsv2Markdown(ans[1]))
print(myCsv2Markdown(ans[2]))
return
myCsvMarkdown(2*x**3-3*x**2-12*x+6,(x,-2,4))
参考
増減表作成アプリを探しています。 - mrrclb48z 2022/06/26 (Sun) 13:06:34 <
第2導関数まで <
予定
第2導関数を追加したい。
xの範囲を入力したい。
三角関数、log,eでテストしてみたい。
(20220808)エラーがでます。
x^4+12x^2+16x+36
(2023/07/02) バグあり。調査中。 エラーがでます。
(1+sin(θ))/(2+cos(θ))