0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2023-09-26

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

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

オリジナル1:

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

オリジナル2:

望星塾 様より

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

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で

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

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

sympyで(math karat 様の方法を参考に) 本解:行列式で

「陰関数のプロット」がでます。???
線の太さがでます。もしかして、作図は,最初から数値計算???

0png.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

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文がステキです。

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行を1行にしただけです。 ← 資源の無駄使いするな。最初から、書けよ!!!

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

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関数は、ナカナカの曲者で?←無条件にやってくれよ!!!と思いましたが、
簡略化してほしくないという場合が、あるみたいです。行き過ぎ注意???

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

参考

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

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

0
0
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?