「平方完成(へいほうかんせい、英: completing the square) 」を調べた。ChatGPT以後を追加

# ChatGPT以後
User
```
sympyで平方完成の関数を教えて下さい。ユーザー定義関数で。
```
```
sympyで平方完成の関数を教えて下さい。ユーザー定義関数で。頂点のx,y座標を返して下さい。
```
紆余曲折あり
```
LCは何ですか
```
LCは、SymPyで多項式の主係数（Leading Coefficient）を取得するためのメソッドです。主係数とは、多項式の最高次の項の係数のことです。...

```
本当ですか
```
```python
import sympy as sp

def complete_square(expr):
    x = sp.symbols('x')
    a, b, c = sp.Poly(expr, x).all_coeffs()
    
    h = -b / (2 * a)
    k = expr.subs(x, h)
    
    return h, k

# 例として x^2 + 4x + 5 を平方完成
x = sp.symbols('x')
expr = x**2 + 4*x + 5
h, k = complete_square(expr)
print(f"頂点のx座標: {h}, y座標: {k}")
```
頂点のx座標: -2, y座標: 1

# ChatGPT以前

オリジナル
solveで

https://koideforest.hatenadiary.com/entry/2018/03/19/234949

### WolframAlphaで
例)グラフがでて、いいですね。

https://ja.wolframalpha.com/input?i=4*x**2+-+4*x+%2B+7+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90

https://ja.wolframalpha.com/input?i=4*x**2+-+4*x+%2B+7+completing+the+square+&lang=en

https://ja.wolframalpha.com/input?i=completing+the+square+4*x**2+-+4*x+%2B+7&lang=en

???
Wolfram|Alpha does not yet support Chinese.
Wolfram|Alpha 不支持中文。
???
以下のリンクのテストは、無視して下さい。
https://ja.wolframalpha.com/input?i=4*x**2+-+4*x+%2B+7+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&lang=en
https://ja.wolframalpha.com/input?i=4*x%5E2-4*x%2B7+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&lang=en
https://ja.wolframalpha.com/input?i=4*x%5E2-4*x%2B7&lang=en
https://ja.wolframalpha.com/input?i=completing+the+square&lang=en
https://ja.wolframalpha.com/input?i=completing+the+square+f+%3D+4*x**2+-+4*x+%2B+7&lang=en

### sympyで (all_coeffsで)
いい方法がありませんか？
何も、sympy.polys.polytools.Poly.all_coeffs　を使わなくていいような気もします。
https://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.polytools.Poly.all_coeffs

```python
from sympy import *
x, h, k = symbols( 'x h k' )
f = x**2 - 4*x + 7
g = ( x - h )**2 + k
print( solve( f - g, [ h, k ] ) )
#
f = 4*x**2 - 4*x + 7
g = 4*( x - h )**2 + k
print( solve( f - g, [ h, k ] ) )
#
f = 4*x**2 - 4*x + 7
g = Poly(f).all_coeffs()[0]*( x - h )**2 + k
print( solve( f - g, [ h, k ] ) )
```
defで,関数myHeihokanseiABCを自作しました。
```python
from sympy import *
x, h, k = symbols( 'x h k' )
def myHeihokanseiABC(f):
    a = Poly(f).all_coeffs()[0]
    g = a*( x - h )**2 + k
    ans=solve( f - g, [ h, k ] ) 
    return a,ans[0][0],ans[0][1]
def myHeihokansei(f):
    g = Poly(f).all_coeffs()[0]*( x - h )**2 + k
    ans=solve( f - g, [ h, k ] ) 
    ff=Poly(f).all_coeffs()[0]*(x-ans[0][0])**2+ans[0][1]
    return ff
f = 4*x**2 - 4*x + 7
print("#",              f )
print("#",myHeihokansei(f))
print("#",myHeihokansei(f).expand())
print("#",myHeihokanseiABC(f))
plot (f,(x,-5,5))
# 4*x**2 - 4*x + 7
# 4*(x - 1/2)**2 + 6
# 4*x**2 - 4*x + 7
# (4, 1/2, 6)
```

引数追加。(2023/07/19)
以下の関数単体では、実行できません。
```python
def myHeihokansei(f,t):
    g = Poly(f).all_coeffs()[0]*( t - h )**2 + k
    ans=solve( f - g, [ h, k ] ) 
    ff=Poly(f).all_coeffs()[0]*(t-ans[0][0])**2+ans[0][1]
    return ff
```

### sympyで(微分diff関数を使って)
省略(極値から、solveを使って式変形をする。)

### sympyで(最小値minimum関数を使って)
省略(最小値から、solveを使って式変形をする。)

以下はpycharmで作図です。縦横比が異なります。

![0png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/9574699a-780a-82d7-37c8-8ee20d6ef0e4.png)

### 参考
wikipediaで

https://ja.wikipedia.org/wiki/%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90

https://en.wikipedia.org/wiki/Completing_the_square

googleで

https://www.google.com/search?q=Completing+the+square+sympy&rlz=1CAUHAM_enJP1038JP1038&oq=Completing+the+square+sympy+&aqs=chrome..69i57.9839j0j7&sourceid=chrome&ie=UTF-8

https://www.google.com/search?q=%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90+%E4%BD%95%E5%B9%B4%E7%94%9F&rlz=1CAUHAM_enJP1038JP1038&oq=%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90%E3%80%80%E4%BD%95%E5%B9%B4%E7%94%9F&aqs=chrome..69i57.15208j1j7&sourceid=chrome&ie=UTF-8

https://www.google.com/search?q=%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E3%82%B5%E3%82%A4%E3%83%88&rlz=1CAUHAM_enJP1038JP1038&ei=u_gkZJvxLdT02roPmKuZyA4&oq=site%3A%2F%2Fmathmathmass.exblog.jp+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQARgBMgUIABCiBDIFCAAQogQyCAgAEIkFEKIEMggIABCJBRCiBDoICAAQogQQsAM6CwgAEIkFEKIEELADSgQIQRgBUOcTWKtCYOdfaANwAHgAgAHpAYgB7waSAQUwLjUuMZgBAKABAcgBBMABAQ&sclient=gws-wiz-serp


過去問の内部検索
大学入試数学問題集成様

https://cse.google.com/cse?cx=a8908fbc24340ebc5&q=%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&oq=%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&gs_l=partner-web.3..0i512l10.2814.2814.0.3712.1.1.0.0.0.0.125.125.0j1.1.0.csems%2Cnrl%3D10...0....1.34.partner-web..0.1.125.uHYBQQGCIe8


https://www.google.com/search?q=site%3A%2F%2Fkamelink.com+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&rlz=1CAUHAM_enJP1038JP1038&ei=f_gkZJLhDpXg2roP3YSFkAM&ved=0ahUKEwjSnI6G0oL-AhUVsFYBHV1CATIQ4dUDCA8&oq=site%3A%2F%2Fkamelink.com+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQDDoFCCEQoAE6BgghEAoQKkoECEEYAVCWCFjxWmCMbWgCcAB4AIAB6AGIAYsVkgEGMC4xNC4zmAEAoAEBoAECwAEB&sclient=gws-wiz-serp


https://www.google.com/search?q=site%3A%2F%2Fmathmathmass.exblog.jp+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&rlz=1CAUHAM_enJP1038JP1038&ei=q_gkZKD1IviM2roPyJ6OsA4&ved=0ahUKEwjg9p-b0oL-AhV4hlYBHUiPA-YQ4dUDCA8&uact=5&oq=site%3A%2F%2Fmathmathmass.exblog.jp+%E5%B9%B3%E6%96%B9%E5%AE%8C%E6%88%90&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCAAQogQyBQgAEKIEMgUIABCiBDIFCAAQogQ6BQghEKABOggIABCJBRCiBEoECEEYAVCJBVizYWDmZ2gIcAB4AIAB2QGIAZ4ZkgEGMC4yMy4xmAEAoAEBwAEB&sclient=gws-wiz-serp


# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

・以下ができたら、助かります。指定と全部です

https://qiita.com/mrrclb48z/items/555d85face87552c34fb

https://qiita.com/mrrclb48z/items/5f57eac92aaca30e85c0

# いつもと違うおすすめです。