長文です。
グラフ作図追加しました。(2024/03/13)
・パイソニスタの方へ
・ChatGPT-3.5先生への、私の質問の仕方が悪いですか?
・sympyの直し方もわかりませんでした。
・結果だけなら2,3行で、できますか?
オリジナル
中日進学ナビ 様
https://edu.chunichi.co.jp/site_home/highschool/pdf/2024_sugaku_q.pdf#page=4
東進 様
大問1(7)。
2024/03/13
現在、ご利用いただけない状態となっております。
時間を置いて再度ご利用願います。
https://www.toshin.com/koukou_nyushi/files/2024/sugaku_q/aichi_sugaku_q.pdf#page=4
<2024年全国公立高校入試解答速報|大学受験の予備校・塾 東進
https://www.toshin.com/koukou_nyushi/
東亜紗美moveforward数学教室 様
youtube 大問1(7)。途中からです。(1:06:07) 2024年愛知県公立高校入試<数学>解説
https://youtu.be/ogDFpAdUqW0?t=90
➀ChatGPT-3.5先生へ(計算のみ)
yがxに反比例し,x=4のときy=3である関数のグラフ上の点で、x座標とy座標がとも
に整数であり,x座標がy座標よりも小さい点は何個あるか。
???
...y 座標よりも小さい点は3つあります。
負の数も含めて下さい。
???
...全部で 12 個あります。
6個になりませんか
申し訳ありません、数え方に誤りがありました。再度、正しい方法で計算してみましょう。
...6+6=12 個の点が求められます。
sympyで
(途中省略)
・以下は、ChatGPT-3.5先生が出力されたソースコードです。
from sympy import symbols, Eq, solve
# 変数の定義
x, y = symbols('x y')
# 与えられた関数
y = 12 / x
# x座標とy座標が整数である条件
integer_condition = Eq(y, 12 / x)
# x座標がy座標よりも小さい条件
inequality_condition = x < y
# x座標とy座標が整数であり、かつx座標がy座標よりも小さい点を求める
integer_points = []
for i in range(-12, 0):
if integer_condition.subs(x, i).is_integer and inequality_condition.subs(x, i):
integer_points.append(i)
for i in range(1, 13):
if integer_condition.subs(x, i).is_integer and inequality_condition.subs(x, i):
integer_points.append(i)
# 結果の出力
print("x座標とy座標がともに整数であり、かつx座標がy座標よりも小さい点の個数:", len(integer_points))
・SymPy Liveで(PC?でのみ実行できます。)
x座標とy座標がともに整数であり、かつx座標がy座標よりも小さい点の個数:0
(私)??? 私は、どこが間違っているかわかりませんでした。教えて下さい。
wolframalpha でも
>Wolfram|Alphaは,このクエリが理解できません.
➁ChatGPT-3.5先生へ(作図したい)
・直し方がわからなかったのであきらめました。 なんだかスゴすぎる。
yがxに反比例し,x=4のときy=3である関数のグラフ上の点で、x座標とy座標がとも
に整数であり,x座標がy座標よりも小さい点をsympyで作図したい。
(途中省略)
・以下は、ChatGPT-3.5先生が出力されたソースコードです。負の数が考慮されていません。
import sympy as sp
import matplotlib.pyplot as plt
# 変数の定義
x = sp.Symbol('x')
y = sp.Symbol('y')
# 与式
eq = sp.Eq(y, 12 / x)
# x = 4 のときのyの値
y_value = eq.rhs.subs(x, 4)
# yが整数のときのxの値の範囲を求める
x_values = [i for i in range(1, 5)]
# x座標がy座標より小さい点を見つける
points = []
for val in x_values:
y_val = eq.rhs.subs(x, val)
if sp.Integer(y_val):
if val < y_val:
points.append((val, y_val))
# グラフの描画
x_points = [point[0] for point in points]
y_points = [point[1] for point in points]
plt.plot(x_points, y_points, 'bo') # プロット
plt.xlabel('x')
plt.ylabel('y')
plt.title('Graph of the Function')
plt.grid(True)
plt.show()
③sympyで(私のいつもの方法で)
・私のこれで十分な気もします。
https://www.geeksforgeeks.org/python-sympy-divisors-method/
from sympy import *
var('i',integer=True)
n =4*3
ic=0
for i in divisors(n):
if -i< n/-i:
ic+=1
for i in divisors(n):
if i< n/i:
ic+=1
print("#",ic)
# 6
・ついでに作図も。
・わからなかったので、stackoverflowをコピーしました。
https://stackoverflow.com/questions/73380769/how-to-plot-an-array-of-points-in-sympy-python3-onto-the-plot-of-a-function
from sympy import *
from sympy import sympify, plot
var('x')
string = '12/x'
func = sympify(string, convert_xor=True)
from sympy import *
var('i',integer=True)
n =4*3
xp=[]
for i in list(reversed(divisors(n))):
if -i< n/-i:
xp=xp+[-i]
for i in divisors(n):
if i< n/i:
xp=xp+[i]
#
string = '12/x'
guess = xp
guess_y = [func.subs('x', g).evalf() for g in guess]
ax1=plot(func, xlim=(-15, 15), ylim=(-15, 15), markers=[{'args': [guess, guess_y, 'ro']}],show=False)
ax2=plot(x,show=False)
ax1.extend(ax2)
ax1.show()
オリジナル 様の方法で
勉強中
???比例定数