Update app.py
Browse files
app.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
# 必要なライブラリをインポート
|
| 2 |
import streamlit as st
|
| 3 |
-
from sympy import symbols, expand, factor, Eq, solve, diff, N, factorial,
|
| 4 |
-
|
| 5 |
# Streamlitアプリのタイトルを設定
|
| 6 |
st.title("数学関数アプリ")
|
| 7 |
|
|
@@ -16,27 +16,34 @@ st.sidebar.markdown("- 多項式への代入計算")
|
|
| 16 |
st.sidebar.markdown("- ふたつの関数の交点の計算")
|
| 17 |
st.sidebar.markdown("- 三平方の定理(空欄補充)")
|
| 18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
# メインのコンテンツを作成
|
| 20 |
selected_function = st.sidebar.selectbox("機能を選択", ["因数分解", "展開", "方程式", "連立方程式", "nPm", "nCm", "多項式への代入計算", "関数の交点", "三平方の定理"])
|
|
|
|
| 21 |
# 因数分解
|
| 22 |
-
|
| 23 |
expression = st.text_input("因数分解する式を入力してください:")
|
| 24 |
if expression:
|
| 25 |
-
x = symbols('x') # xを定義
|
| 26 |
factored_expression = factor(expression)
|
| 27 |
-
st.success(f"因数分解結果: {factored_expression}")
|
|
|
|
| 28 |
# 展開(Sympy)
|
| 29 |
-
|
| 30 |
expression = st.text_input("展開する式を入力してください:")
|
| 31 |
if expression:
|
| 32 |
result = expand(expression)
|
| 33 |
-
st.success(f"展開結果: {result}")
|
| 34 |
|
| 35 |
# 方程式(Sympy)
|
| 36 |
elif selected_function == "方程式":
|
| 37 |
equation = st.text_input("解きたい方程式を入力してください:")
|
| 38 |
if equation:
|
| 39 |
-
x = symbols('x')
|
| 40 |
solution = solve(Eq(eval(equation), 0), x)
|
| 41 |
st.success(f"方程式の解: {solution}")
|
| 42 |
|
|
@@ -45,7 +52,7 @@ elif selected_function == "連立方程式":
|
|
| 45 |
eq1 = st.text_input("1つ目の方程式を入力してください:")
|
| 46 |
eq2 = st.text_input("2つ目の方程式を入力してください:")
|
| 47 |
if eq1 and eq2:
|
| 48 |
-
x, y = symbols('x y')
|
| 49 |
solution = solve([Eq(eval(eq1), 0), Eq(eval(eq2), 0)], (x, y))
|
| 50 |
st.success(f"連立方程式の解: {solution}")
|
| 51 |
|
|
@@ -54,27 +61,23 @@ elif selected_function == "nPm":
|
|
| 54 |
n = st.number_input("nを入力してください:", min_value=0, step=1)
|
| 55 |
m = st.number_input("mを入力してください:", min_value=0, step=1)
|
| 56 |
if n >= m:
|
| 57 |
-
result =
|
| 58 |
st.success(f"{n}P{m}の結果: {result}")
|
| 59 |
-
else:
|
| 60 |
-
st.error("nはm以上の値を取る必要があります。")
|
| 61 |
|
| 62 |
# nCm
|
| 63 |
elif selected_function == "nCm":
|
| 64 |
n = st.number_input("nを入力してください:", min_value=0, step=1)
|
| 65 |
m = st.number_input("mを入力してください:", min_value=0, step=1)
|
| 66 |
if n >= m:
|
| 67 |
-
result =
|
| 68 |
st.success(f"{n}C{m}の結果: {result}")
|
| 69 |
-
else:
|
| 70 |
-
st.error("nはm以上の値を取る必要があります。")
|
| 71 |
|
| 72 |
# 多項式への代入計算
|
| 73 |
elif selected_function == "多項式への代入計算":
|
| 74 |
poly_expression = st.text_input("多項式を入力してください:")
|
| 75 |
value_to_substitute = st.number_input("代入する値を入力してください:")
|
| 76 |
if poly_expression:
|
| 77 |
-
x = symbols('x'
|
| 78 |
poly = simplify(poly_expression)
|
| 79 |
result = poly.subs(x, value_to_substitute)
|
| 80 |
st.success(f"代入計算の結果: {result}")
|
|
@@ -84,7 +87,7 @@ elif selected_function == "関数の交点":
|
|
| 84 |
func1_expression = st.text_input("1つ目の関数を入力してください:")
|
| 85 |
func2_expression = st.text_input("2つ目の関数を入力してください:")
|
| 86 |
if func1_expression and func2_expression:
|
| 87 |
-
x = symbols('x'
|
| 88 |
func1 = simplify(func1_expression)
|
| 89 |
func2 = simplify(func2_expression)
|
| 90 |
intersection_points = solve(Eq(func1, func2), x)
|
|
|
|
| 1 |
# 必要なライブラリをインポート
|
| 2 |
import streamlit as st
|
| 3 |
+
from sympy import symbols, expand, factor, Eq, solve, diff, N, simplify, factorial, comb
|
| 4 |
+
|
| 5 |
# Streamlitアプリのタイトルを設定
|
| 6 |
st.title("数学関数アプリ")
|
| 7 |
|
|
|
|
| 16 |
st.sidebar.markdown("- ふたつの関数の交点の計算")
|
| 17 |
st.sidebar.markdown("- 三平方の定理(空欄補充)")
|
| 18 |
|
| 19 |
+
# Symbolの定義
|
| 20 |
+
user_defined_symbol = st.sidebar.text_input("Symbolを定義してください(カンマ区切り):")
|
| 21 |
+
|
| 22 |
+
# カンマ区切りで複数のSymbolを作成
|
| 23 |
+
user_defined_symbols = symbols(user_defined_symbol.replace(" ", "").split(","))
|
| 24 |
+
|
| 25 |
# メインのコンテンツを作成
|
| 26 |
selected_function = st.sidebar.selectbox("機能を選択", ["因数分解", "展開", "方程式", "連立方程式", "nPm", "nCm", "多項式への代入計算", "関数の交点", "三平方の定理"])
|
| 27 |
+
|
| 28 |
# 因数分解
|
| 29 |
+
if selected_function == "因数分解":
|
| 30 |
expression = st.text_input("因数分解する式を入力してください:")
|
| 31 |
if expression:
|
|
|
|
| 32 |
factored_expression = factor(expression)
|
| 33 |
+
st.success(f"因数分解結果: {factored_expression.subs(user_defined_symbols)}")
|
| 34 |
+
|
| 35 |
# 展開(Sympy)
|
| 36 |
+
elif selected_function == "展開":
|
| 37 |
expression = st.text_input("展開する式を入力してください:")
|
| 38 |
if expression:
|
| 39 |
result = expand(expression)
|
| 40 |
+
st.success(f"展開結果: {result.subs(user_defined_symbols)}")
|
| 41 |
|
| 42 |
# 方程式(Sympy)
|
| 43 |
elif selected_function == "方程式":
|
| 44 |
equation = st.text_input("解きたい方程式を入力してください:")
|
| 45 |
if equation:
|
| 46 |
+
x = symbols('x', real=True)
|
| 47 |
solution = solve(Eq(eval(equation), 0), x)
|
| 48 |
st.success(f"方程式の解: {solution}")
|
| 49 |
|
|
|
|
| 52 |
eq1 = st.text_input("1つ目の方程式を入力してください:")
|
| 53 |
eq2 = st.text_input("2つ目の方程式を入力してください:")
|
| 54 |
if eq1 and eq2:
|
| 55 |
+
x, y = symbols('x y', real=True)
|
| 56 |
solution = solve([Eq(eval(eq1), 0), Eq(eval(eq2), 0)], (x, y))
|
| 57 |
st.success(f"連立方程式の解: {solution}")
|
| 58 |
|
|
|
|
| 61 |
n = st.number_input("nを入力してください:", min_value=0, step=1)
|
| 62 |
m = st.number_input("mを入力してください:", min_value=0, step=1)
|
| 63 |
if n >= m:
|
| 64 |
+
result = factorial(n) / factorial(n - m)
|
| 65 |
st.success(f"{n}P{m}の結果: {result}")
|
|
|
|
|
|
|
| 66 |
|
| 67 |
# nCm
|
| 68 |
elif selected_function == "nCm":
|
| 69 |
n = st.number_input("nを入力してください:", min_value=0, step=1)
|
| 70 |
m = st.number_input("mを入力してください:", min_value=0, step=1)
|
| 71 |
if n >= m:
|
| 72 |
+
result = comb(n, m)
|
| 73 |
st.success(f"{n}C{m}の結果: {result}")
|
|
|
|
|
|
|
| 74 |
|
| 75 |
# 多項式への代入計算
|
| 76 |
elif selected_function == "多項式への代入計算":
|
| 77 |
poly_expression = st.text_input("多項式を入力してください:")
|
| 78 |
value_to_substitute = st.number_input("代入する値を入力してください:")
|
| 79 |
if poly_expression:
|
| 80 |
+
x = symbols('x', real=True)
|
| 81 |
poly = simplify(poly_expression)
|
| 82 |
result = poly.subs(x, value_to_substitute)
|
| 83 |
st.success(f"代入計算の結果: {result}")
|
|
|
|
| 87 |
func1_expression = st.text_input("1つ目の関数を入力してください:")
|
| 88 |
func2_expression = st.text_input("2つ目の関数を入力してください:")
|
| 89 |
if func1_expression and func2_expression:
|
| 90 |
+
x = symbols('x', real=True)
|
| 91 |
func1 = simplify(func1_expression)
|
| 92 |
func2 = simplify(func2_expression)
|
| 93 |
intersection_points = solve(Eq(func1, func2), x)
|