0
0

More than 1 year has passed since last update.

x2+y2=1のときz=2x+yの範囲「立教大学2023年経済学部第1問(2)」をChatGPTとMathematicaとWolframAlphaとsympyでやってみたい。

Last updated at Posted at 2023-07-25

パイソニスタの方へ
???<解1>円と直線の位置関係のsolve_poly_inequalityの使い方を教えて下さい。???

オリジナル(youtube)

上と同じです。大学入試数学問題集成>
未登録

xxxx ChatGPT で(できませんでした。) xxx

入力文

x2+y2=1のとき2x+yの範囲

Mathematicaで

In
MaxValue[{2 x + y, x^2 + y^2 == 1}, {x, y}]
MinValue[{2 x + y, x^2 + y^2 == 1}, {x, y}]
ArgMax[{2 x + y, x^2 + y^2 == 1}, {x, y}]
ArgMin[{2 x + y, x^2 + y^2 == 1}, {x, y}]

Out
Sqrt[5]
-Sqrt[5]
{2/Sqrt[5], 1/Sqrt[5]}
{-(2/Sqrt[5]), -(1/Sqrt[5])}

作図

p1 = ParametricPlot3D[{Cos[\[Theta]], Sin[\[Theta]], 
    2 Cos[\[Theta]] + Sin[\[Theta]]}, {\[Theta], 0, 2 Pi}];
p2 = ParametricPlot3D[{Cos[\[Theta]], Sin[\[Theta]], 0}, {\[Theta], 0,
     2 Pi}];
Show[p1, p2]

0.png

1.png

WolframAlphaで

上の英語版

sympyで(福田の数学 様の方法を参考に 0:33)

<解1>円と直線の位置関係
???(再)<解1>円と直線の位置関係のsolve_poly_inequalityの使い方を教えて下さい。???
https://docs.sympy.org/latest/modules/solvers/inequalities.html#sympy.solvers.inequalities.solve_poly_inequality

from sympy import *
x,y,z=symbols('x,y,z',real=True)
myEq_z=Eq(z,2*x+y)
maru1=solve(myEq_z,y)[0]
maru1=Poly(maru1,x)
myCo=maru1.all_coeffs()
h=abs(myCo[0]*0+1*0-myCo[1] )/sqrt(myCo[0]**2+1**2  )
print("#",h)
# print ("#",solve_poly_inequality(Poly( 1-h, z, domain='ZZ'), '>=') )
print ("#",solve( Eq(h,1) ,z ) )
# sqrt(5)*Abs(z)/5
# [-sqrt(5), sqrt(5)]

sympyで(福田の数学 様の方法を参考に)3:28

<解2>実数解条件を利用
discriminant(判別式)を使う。

from sympy import *
from sympy.solvers.inequalities import solve_poly_inequalities
x,y,z=symbols('x,y,z',real=True)
myEq_C=Eq(x**2+y**2,1)
myEq_z=Eq(z,2*x+y)
maru1=myEq_C.subs({y:solve(myEq_z,y)[0]}).expand()
print("#",solve_poly_inequality(Poly( discriminant( maru1.lhs-maru1.rhs )/4, z, domain='ZZ'), '>=')[0] )
# Interval(-sqrt(5), sqrt(5))

sympyで(福田の数学 様の方法を参考に 5:47)

<解3>三角関数を利用
SymPyで1変数関数の最大値最小値を求める方法maximum,minimum関数です。
今回,三角関数の合成は、使っていません。

from sympy import *
x,y,θ=symbols('x,y,θ',real=True)
mySubs={x:cos(θ),y:sin(θ)}
(st,en)=(0,2*pi)
z=(2*x+y).subs(mySubs)
print("#",minimum(z,θ,Interval(st,en)),
          maximum(z,θ,Interval(st,en)) )
# -sqrt(5) sqrt(5)

sympyで(福田の数学 様の方法を参考に)

<解4>シュワルツの不等式利用
勉強中。

sympyで(円の中心と直線の距離が、1以下)

LineとPointのdistanceで計算<解1>と考え方は同じ。

from sympy import *
x,y,z=symbols('x,y,z',real=True)
mydis=Line( Eq(z,2*x+y) ).distance(Point(0,0))
print("#",mydis)
print("#",solve(sqrt(5)*(-z)/5-1,z )[0],solve(sqrt(5)*( z)/5-1,z )[0] )
# sqrt(5)*Abs(z)/5
# -sqrt(5) sqrt(5)

実行環境

①私の環境は、pycharmです。
②よく聞くのは、Jupyterです。
③web上で、上記のソースを「SymPy Live shell」に、コピー貼り付けでもできました。

黒背景の右上に、マウスを移動すると、コピーマークが発生します。
??? タブレット環境で、コピー貼り付けが実行できませんでした。???

web上で、作図plotできません。計算はできます。

参考

以下、いつもの?おすすめです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0