パイソニスタの方へ
???<解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]
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できません。計算はできます。
参考
以下、いつもの?おすすめです。