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

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

# オリジナル(youtube) 

https://www.youtube.com/watch?v=iEeIic8apHA

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

# 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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/b19e4647-157e-d2b7-2fce-8c9b498dbd74.png)

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/1ddeb9e1-9805-5ad4-508d-9c4404490ecf.png)

# WolframAlphaで

https://ja.wolframalpha.com/input?i=x2%2By2%3D1%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B2x%2By%E3%81%AE%E5%80%A4%E5%9F%9F++

上の英語版

https://ja.wolframalpha.com/input?i=range+of+2x%2By+restricted+to++x2+%2B+y2+%3D+1&lang=en

# sympyで(福田の数学 様の方法を参考に 0:33)
＜解1＞円と直線の位置関係
**？？？(再)＜解1＞円と直線の位置関係のsolve_poly_inequalityの使い方を教えて下さい。？？？**
https://docs.sympy.org/latest/modules/solvers/inequalities.html#sympy.solvers.inequalities.solve_poly_inequality
```python
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(判別式)を使う。
```python
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関数です。
今回,三角関数の合成は、使っていません。
```python
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＞と考え方は同じ。
```python
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」に、コピー貼り付けでもできました。

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

https://live.sympy.org/

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

# 参考

https://manabitimes.jp/math/857

https://reference.wolfram.com/language/ref/Plot3D.html.ja?source=footer

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

https://qiita.com/mrrclb48z/items/75904cdc6e84ecef4d03#%E5%8F%82%E8%80%83wolframalpha-%E9%96%8B%E7%99%BA%E7%89%A9%E8%AA%9E