斜めの楕円「2012 東京大学 前期文科【1】」をChatGPTとWolframAlphaとsympyでやってみたい。

**・斜めの楕円の勉強を開始しました。**(後日投稿予定) eigenvalue,ellipse angle?

＞...閉じた2次曲線...x,yの範囲に限界があるということだ。... (望星塾 様より)
＞...最大でも2次だな... (math karat 様より)

#### オリジナル1:

https://youtu.be/K0iKHc7poac

(youtube 9:21) math karat 様より 以下内訳 　
 簡単な例 0:00 勉強中　
 近い例題 3:55 勉強中
 本解 　　5:23 sympyで作成済み(ページ後半） 
 別解 　　6:56 　　　〃

#### オリジナル2:
望星塾 様より

https://bouseijuku.sakura.ne.jp/2012tokyo-sugaku.pdf#page=13

#### 上と同じです。大学入試数学問題集成 様＞テキスト【1】

https://mathexamtest.web.fc2.com/2012/201210261/2012102610100mj.html

# ChatGPT-3.5先生へ(**???間違っています。。???**)
入力文(一括です。)
```
座標平面上の点(x,y)が次の方程式をみたす.
　2*x**2+4*x*y+3*y**2+4*x+5*y-4=0
このとき、xのとりうる最大の値をもとめよ.
```
??? 返信抜粋
```
与えられた方程式は2次の二項式方程式です。この方程式のグラフは楕円を表します。...
...したがって、xのとりうる最大の値は4です。
```
　
　 
```
回転角度を教えて下さい
```
??? 返信抜粋
```
...回転角度は0度です。つまり、この楕円はx軸とy軸に平行です。
```

# WolframAlphaで

「陰関数のプロット」がでます。

https://ja.wolframalpha.com/input?i=2*x**2%2B4*x*y%2B3*y**2%2B4*x%2B5*y-4%3D0

？？？　(**???間違っています。。???**)

https://ja.wolframalpha.com/input?i=2*x**2%2B4*x*y%2B3*y**2%2B4*x%2B5*y-4%3D0%2C%EF%BD%98%E3%81%AE%E6%9C%80%E5%A4%A7%E5%80%A4

# sympyで(math karat 様の方法を参考に)　本解:行列式で
「陰関数のプロット」がでます。？？？
線の太さがでます。もしかして、作図は,最初から数値計算？？？

![0png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/d72a00ff-467c-3a28-b29e-26229895397f.png)

・plot_implicit ＜ sympy DOC
https://docs.sympy.org/latest/modules/plotting.html#sympy.plotting.plot_implicit.plot_implicit
・discriminant ＜ sympy DOC
https://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.polytools.discriminant
```python
from sympy import *
var('x,y',real=True)
eq=Eq(2*x**2+4*x*y+3*y**2+4*x+5*y-4,0)
# plot_implicit(eq)
D=discriminant(eq,y)   ;print("#",D )
ge=Ge(D,0)             ;print("#",ge)
so=solve(ge)           ;print("#",so)
print("#",so.args[0])
# -8*x**2 - 8*x + 73
# -8*x**2 - 8*x + 73 >= 0
# (x <= -1/2 + 5*sqrt(6)/4) & (-5*sqrt(6)/4 - 1/2 <= x)
# x <= -1/2 + 5*sqrt(6)/4
```
上と同じです。
x,yの最大最小。ユーザー定義関数にしました。常識？？？　if文がステキです。
```python
from sympy import *
var('x,y',real=True)
def myMinMax(eq,xORy):
    D=discriminant(eq,x if xORy==y else y) 
    ge=Ge(D,0)             
    so=solve(ge)           
    return so.args[1],so.args[0]     
eq=Eq(2*x**2+4*x*y+3*y**2+4*x+5*y-4,0)
print("#",myMinMax(eq,x))
print("#",myMinMax(eq,y))
# (-5*sqrt(6)/4 - 1/2 <= x, x <= -1/2 + 5*sqrt(6)/4)
# (y <= 2, -3 <= y)
```
上と同じです。3行を１行にしただけです。 ← 資源の無駄使いするな。最初から、書けよ!!!
```python
from sympy import *
var('x,y',real=True)
def myMinMax(eq,xORy):
    so=solve( Ge( discriminant(eq,x if xORy==y else y) ,0) )           
    return so.args[1],so.args[0]     
eq=Eq(2*x**2+4*x*y+3*y**2+4*x+5*y-4,0)
print("#",myMinMax(eq,x))
print("#",myMinMax(eq,y))
# (-5*sqrt(6)/4 - 1/2 <= x, x <= -1/2 + 5*sqrt(6)/4)
# (y <= 2, -3 <= y)
```
# sympyで(math karat 様の方法を参考に)　別解:平方完成 6:56
不等式もsolve関数で。
Gt ＜ sympy DOC
https://docs.sympy.org/latest/modules/core.html#sympy.core.relational.GreaterThan
```python
from sympy import *
var('x,y',real=True)
var('z'  ,real=True)
def myBekkai_Saidaiti(z):
    a =poly(z,y)       .nth(2)                      
    b =poly(z-a*y**2,y).nth(1)/(2*a)        
    return solve(Ge( -(z-a*(y+b)**2).expand() ,0))
print("#",myBekkai_Saidaiti( 2*x**2+4*x*y+3*y**2+4*x+5*y-4 ) )
# (x <= -1/2 + 5*sqrt(6)/4) & (-5*sqrt(6)/4 - 1/2 <= x)
```

# sympyで(いつものスタイルで) minimum,maximum関数で
・sympyなら、これが楽？でいいですね。手計算は、こうはいきません。
・sympy.simplify.sqrtdenest.sqrtdenest(expr, max_iter=3)
https://docs.sympy.org/latest/modules/simplify/simplify.html#sympy.simplify.sqrtdenest.sqrtdenest
このsqrtdenest関数は、ナカナカの曲者で？←無条件にやってくれよ！！！と思いましたが、
簡略化してほしくないという場合が、あるみたいです。行き過ぎ注意？？？

https://math-fun.net/20220119/21562/

```python
from sympy import *
var('x,y',real=True)
myInterval=Interval(-oo,oo)
z    =2*x**2+4*x*y+3*y**2+4*x+5*y-4
ans_x=solve(z,x)    ;print("#",ans_x)
ans_y=solve(z,y)    ;print("#",ans_y)
print()
print("#x",sqrtdenest(minimum( ans_x[0],y,myInterval ) ),",",
           sqrtdenest(maximum( ans_x[1],y,myInterval ) )     ) 
print("#y",sqrtdenest(minimum( ans_y[0],x,myInterval ) ),",",
           sqrtdenest(maximum( ans_y[1],x,myInterval ) )     ) 
# [-y - sqrt(2)*sqrt(-y**2 - y + 6)/2 - 1, -y + sqrt(-2*y**2 - 2*y + 12)/2 - 1]
# [-2*x/3 - sqrt(-8*x**2 - 8*x + 73)/6 - 5/6, -2*x/3 + sqrt(-8*x**2 - 8*x + 73)/6 - 5/6]

#x -5*sqrt(6)/4 - 1/2 , -1/2 + 5*sqrt(6)/4
#y -3 , 2
```
# sympyの実行環境
①私の環境は,pycharmです。
②よく聞くのは、Jupyterです。
③web上で、上記のソースを「SymPy Live shell」に、コピー貼り付けでもできました。
黒背景の右上に、マウスを移動すると、コピーマークが発生します。
???　タブレット環境で、コピー貼り付けが実行できませんでした。???

https://live.sympy.org/

# 参考

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

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




**以下、いつもと違うおすすめです。**

https://manabitimes.jp/math/1124