OzoneAsai commited on
Commit
75e35dc
·
1 Parent(s): d6b9cff

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +126 -0
app.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 必要なライブラリをインポート
2
+ import streamlit as st
3
+ from sympy import symbols, expand, factor, Eq, solve, diff, N, comb, factorial, simplify
4
+
5
+ # Streamlitアプリのタイトルを設定
6
+ st.title("数学関数アプリ")
7
+
8
+ # サイドバーに説明を追加
9
+ st.sidebar.header("機能説明")
10
+ st.sidebar.markdown("- 因数分解(Sympy)")
11
+ st.sidebar.markdown("- 展開(Sympy)")
12
+ st.sidebar.markdown("- 方程式(Sympy)")
13
+ st.sidebar.markdown("- 連立方程式(Sympy)")
14
+ st.sidebar.markdown("- nPm, nCm")
15
+ st.sidebar.markdown("- 多項式への代入計算")
16
+ st.sidebar.markdown("- ふたつの関数の交点の計算")
17
+ st.sidebar.markdown("- 三平方の定理(空欄補充)")
18
+
19
+ # メインのコンテンツを作成
20
+ selected_function = st.sidebar.selectbox("機能を選択", ["因数分解", "展開", "方程式", "連立方程式", "nPm", "nCm", "多項式への代入計算", "関数の交点", "三平方の定理"])
21
+
22
+ if selected_function == "因数分解":
23
+ expression = st.text_input("因数分解する式を入力してください:")
24
+ if expression:
25
+ result = factor(expression)
26
+ st.success(f"因数分解結果: {result}")
27
+
28
+ # 展開(Sympy)
29
+ if selected_function == "展開":
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
+
43
+ # 連立方程式(Sympy)
44
+ 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
+
52
+ # nPm
53
+ 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 = factorial(n) / factorial(n - m)
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 = comb(n, m)
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
+ poly = simplify(poly_expression)
78
+ result = poly.subs(x, value_to_substitute)
79
+ st.success(f"代入計算の結果: {result}")
80
+
81
+ # ふたつの関数の交点の計算
82
+ elif selected_function == "関数の交点":
83
+ func1_expression = st.text_input("1つ目の関数を入力してください:")
84
+ func2_expression = st.text_input("2つ目の関数を入力してください:")
85
+ if func1_expression and func2_expression:
86
+ func1 = simplify(func1_expression)
87
+ func2 = simplify(func2_expression)
88
+ intersection_points = solve(Eq(func1, func2), x)
89
+ st.success(f"関数の交点の座標: {intersection_points}")
90
+
91
+ # 三平方の定理(空欄補充)
92
+ elif selected_function == "三平方の定理":
93
+ # ここに三平方の定理の実装を追加する
94
+
95
+ # 三平方の定理(空欄補充)
96
+ elif selected_function == "三平方の定理":
97
+ case = st.radio("三平方の定理のケースを選択してください:", ["Case1", "Case2", "Case3"])
98
+
99
+ if case == "Case1":
100
+ a = st.number_input("aの値を入力してください:")
101
+ b = st.number_input("bの値を入力してください:")
102
+ c_squared = a**2 + b**2
103
+ st.success(f"三平方の定理の結果: a^2 + b^2 = c^2, c^2 = {c_squared}")
104
+
105
+ elif case == "Case2":
106
+ a = st.number_input("aの値を入力してください:")
107
+ c = st.number_input("cの値を入力してください:")
108
+ b_squared = c**2 - a**2
109
+ if b_squared >= 0:
110
+ b = b_squared**0.5
111
+ st.success(f"三平方の定理の結果: a^2 + b^2 = c^2, b^2 = {b_squared}, b = {b}")
112
+ else:
113
+ st.error("無効な値です。b^2は負になりません。")
114
+
115
+ elif case == "Case3":
116
+ b = st.number_input("bの値を入力してください:")
117
+ c = st.number_input("cの値を入力し��ください:")
118
+ a_squared = c**2 - b**2
119
+ if a_squared >= 0:
120
+ a = a_squared**0.5
121
+ st.success(f"三平方の定理の結果: a^2 + b^2 = c^2, a^2 = {a_squared}, a = {a}")
122
+ else:
123
+ st.error("無効な値です。a^2は負になりません。")
124
+
125
+
126
+