强基初中数学&学Python——第七十一课 函数与方程之十五:一元二次函数

 

  在正比例函数

y=x

x换成,就成了一元二次函数

y=x²

也就是说,一个变量与另一个变量的平方成正比,这两个变量的关系就成了二次函数关系。现在假如用x轴的值表示,当x坐标小于0,与它对应的y坐标是它的相反数。图示如下,作图代码附录1

 

可见,二次函数与绝对值函数非常相似。把x轴换回真实的值,图象就是下面的样子了(作图代码附录2

 

把这个图片倒过来看

 

函数的图象就像向空中斜抛物体所走的轨迹,所以把它叫做抛物线。

  把函数改为y=ax²a≠0)a的大小和正负对函数图有什么影响呢?为此,在同一个坐标平面中作y=x²y=(1/2)x²y=(1/4)x²y=-x²y=-(1/2)x²y=-(1/4)x²的函数图,作图代码附录3

 

  可见,a>0,抛物线开口向上,a<0,抛物线开口向下;a的绝对值越大,抛物线的开口越小。

  自然会想到更一般的二次函数形式y=a(x+b)²+c,函数的图象又会怎样呢?为此,在同一个坐标平面上作图研究。

(1)y=2x²y=2(x+3)²y=2(x-3)²y=-2x²y=-2(x+3)²y=-2(x-3)²,作图代码附录4

 

可见,b>0,函数图象向左平移b个单位;b<0,函数图象向右平移-b个单位。

(2)y=2x²y=2x²+3y=2x²-3y=-2x²y=-2x²+3y=-2x²-3,作图代码附录5

 

可见,c>0,函数图象向上平移c个单位;c<0,函数图象向下平移-c个单位。

  例题1判断下面一元二次函数的开口方向和顶点坐标。

(1)y=2x²+12x+21

(2)y=2x²+12x+15

(3)y=2x²-12x+21

(4)y=2x²-12x+15

(5)y=-2x²-12x-15

(6)y=-2x²-12x-21

(7)y=-2x²+12x-15

(8)y=-2x²+12x-21

分析:这是二次函数的一般表达式y=mx²+nx+p,和要用的y=a(x+b)²+c有差别,用配方解决。

解:(1)y=2(x²+6x)+21=2(x²+6x+9-9)+21=2(x+3)²-2×9+21=2(x+3)²+3

所以函数开口向上,顶点是(-3,3)

(2)y=2(x²+6x)+15=2(x²+6x+9-9)+15=2(x+3)²-2×9+15=2(x+3)²-3

所以函数开口向上,顶点是(-3,-3)

3y=2(x²-6x)+21=2(x²-6x+9-9)+21=2(x-3)²-2×9+21=2(x-3)²+3

所以函数开口向上,顶点是(3,3)

4y=2(x²-6x)+15=2(x²-6x+9-9)+15=2(x-3)²-2×9+15=2(x-3)²-3

所以函数开口向上,顶点是(3,-3)

5y=-2(x²+6x)-15=-2(x²+6x+9-9)-15=-2(x+3)²+2×9-15=-2(x+3)²+3

所以函数开口向下,顶点是(-3,3)

(6)y=-2(x²+6x)-21=-2(x²+6x+9-9)-21=-2(x+3)²+2×9-21=-2(x+3)²-3

所以函数开口向下,顶点是(-3,-3)

7y=-2(x²-6x)-15=-2(x²-6x+9-9)-15=-2(x-3)²+2×9-15=-2(x-3)²+3

所以函数开口向上,顶点是(3,3)

8y=-2(x²-6x)-21=-2(x²-6x+9-9)-21=-2(x-3)²+2×9-21=-2(x-3)²-3

所以函数开口向上,顶点是(3,-3)

作图验证,代码附录6

 

  对于一元二次函数

y=mx²nx+p  (m≠0)

m是二次项系数,n是一次项系数,p是常数。可通过配方转化

y=m[x²+(n/m)x]+p

y=m[x²+(n/m)x+(n/2/m)²-(n/2/m)²]+p

y=m(x+n/2/m)²-m(n/2/m)²+p

y=m(x+n/2/m)²-n²/4/m+p

a=m(二次项系数),b=n/2/m(一次项系数与二次项系数的商的二分之一),c=-n²/4/m+pb的平方与二次项系数的积的相反数与常数项的和),得

y=a(x+b)²+c

m=-2n=-12p=-15代入验证

a=-2b=-12/2/-2=3c=-(-12)²/4/(-2)-15=18-15=3

y=-2(x+3)²+3

  因此,对于具体的一个二次函数

y=mx²nx+p  (m≠0)

先把它转化

y=a(x+b)²+c

后再对其进行性质的描述,这样就不用害怕记不住公式了(b的公式最好记住哦)。

  一元二次函数y=a(x+b)²+ca≠0)的性质:

(1)函数的图象是一条抛物线;

(2)a>0,开口向上,a<0,开口向下,|a|越大开口越小;

(3)对称轴是x=-b直线;

(4)a>0,当自变量x<-b时,函数值yx增大而减少,当自变量x>-b时,函数值yx增大而增大;a<0,当自变量x<-b时,函数值yx增大而增大,当自变量x>-b时,函数值yx增大而减少;

5)函数最大或最小值是c,对称轴x=-b过函数图象的点是顶点,坐标是(-b, c)

  例题2求下面一元二次函数的对称轴、随x增大函数值变化趋势、顶点坐标、最大值或最小值。

(1)y=3x²-12x+5

(2)y=-2x²+16x-27

解:(1)b=-12/3/2=-2,对称轴是x=2x<2时,x增大函数值减少,x>2时,x增大函数值增大。当x=2时函数值最小,y=3×2²-12×2+5=-7,即函数最小值是-7,顶点坐标(2, -7)

(2)b=16/-2/2=-4,对称轴是x=4x<4时,x增大函数值增大,x>4时,x增大函数值减少。当x=4时函数值最大,y=-2×4²+16×4-27=5,即函数最大值是5,顶点坐标(4, 5)

  作图验证如下,代码附录7

 

  例题3已知直线y=ax+b与过直线外(-1, 7)的抛物线y=mx²+nx+p相交于(-3, -5)(0, 4),求这两个函数的解析式。

分析:直线函数y=ax+b有两个字母系数,知道2点坐标,可以列方程组求出这两个系数;抛物线y=mx²+nx+p有三个系数,知道3点坐标,也可以列方程组求出这三个系数。  

解:(1)直线函数

-3a+b=-5,  

b=4。  

解得

a=3

b=4

直线函数的解析式是

y=3x+4

(2)抛物线

m-n+p=7,  

9m-3n+p=-5,  

p=4。  

解得

m=-3

n=-6

p=4

抛物线的解析式是

y=-3x²-6x+4

  作图验证如下,代码附录8

 

  这种把函数的坐标代进函数列方程组求出系数,从而得到函数解析式的方法叫做待定系数法。

  练习题1求下面一元二次函数的对称轴、随x增大函数值变化趋势、顶点坐标、最大值或最小值。

(1)y=2x²12x+13

(2)y=-3x²12x-7

  练习题2已知直线y=ax+b与过直线外(3, 1)的抛物线y=mx²+nx+p相交于(-1, 1)(2, -5),求这两个函数的解析式。

 

附录1

import sys
sys.path.append("/5xstar/pyfiles")
from fractions import Fraction
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
t.setpos(203,-8)
t.write("2",font=(markFont[0],markFont[1]*2//3,markFont[2]))
#y=x²  
def f(x):
    if x<0:
        return -x
    else:
        return x       
t.setpos(0, -225)
t.write("y=x²",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f)
t.ht()

 

附录2
import sys
sys.path.append("/5xstar/pyfiles")
from fractions import Fraction
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
#y=x²  
def f(x):
    return x**2      
t.setpos(0, -225)
t.write("y=x²",align="center", font=(markFont[0],14,markFont[2]))
t.pencolor("blue")
trace(t,-10,10,f)
t.ht()

 

附录3

import sys
sys.path.append("/5xstar/pyfiles")
from fractions import Fraction
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
#y=x²  
t.pencolor("blue")
def f(x):
    return x**2      
t.setpos(65, 180)
t.write("y=x²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f)
#y=-x²  
def f2(x):
    return -x**2      
t.setpos(65, -180)
t.write("y=-x²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f2)
#y=(1/2)x²  
t.pencolor("green")
def f3(x):
    return Fraction(1,2)*x**2
t.setpos(85, 150)
t.write("y=(1/2)x²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f3)
#y=-(1/2)x²  
def f4(x):
    return -Fraction(1,2)*x**2      
t.setpos(85, -150)
t.write("y=-(1/2)x²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f4)
#y=(1/4)x²  
t.pencolor("red")
def f5(x):
    return Fraction(1,4)*x**2
t.setpos(125, 170)
t.write("y=(1/4)x²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f5)
#y=-(1/4)x²  
def f6(x):
    return -Fraction(1,4)*x**2      
t.setpos(125, -170)
t.write("y=-(1/4)x²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f6)
t.ht()

 

附录4
import sys
sys.path.append("/5xstar/pyfiles")
from fractions import Fraction
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
#y=2x²  
t.pencolor("blue")
def f(x):
    return 2*x**2      
t.setpos(20*5**0.5, 202)
t.write("y=2x²",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f)
#y=-2x²  
def f2(x):
    return -2*x**2      
t.setpos(20*5**0.5, -227)
t.write("y=-x²",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f2)

#y=2(x+3)²  
t.pencolor("green")
def f3(x):
    return 2*(x+3)**2
t.setpos(20*(-5**0.5-3), 202)
t.write("y=2(x+3)²",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f3)
#y=-2(x+3)²   
def f4(x):
    return -2*(x+3)**2      
t.setpos(20*(-5**0.5-3), -227)
t.write("y=-2(x+3)²",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f4)
#y=2(x-3)²
t.pencolor("red")
def f5(x):
    return 2*(x-3)**2
t.setpos(20*(5**0.5+3), 202)
t.write("y=2(x-3)²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f5)
#y=-2(x-3)²
def f6(x):
    return -2*(x-3)**2      
t.setpos(20*(5**0.5+3), -227)
t.write("y=-2(x-3)²",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f6)
t.ht()

附录5
import sys
sys.path.append("/5xstar/pyfiles")
from fractions import Fraction
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
#y=2x²  
t.pencolor("blue")
def f(x):
    return 2*x**2      
t.setpos(20*5**0.5, 202)
t.write("y=2x²",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f)
#y=-2x²  
def f2(x):
    return -2*x**2      
t.setpos(20*5**0.5, -227)
t.write("y=-x²",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f2)

#y=2x²+3  
t.pencolor("green")
def f3(x):
    return 2*x**2+3
t.setpos(20*(-(7/2)**0.5), 202)
t.write("y=2x²+3",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f3)
#y=-2x²+3     
def f4(x):
    return -2*x**2+3    
t.setpos(20*(-(13/2)**0.5), -227)
t.write("y=-2x²+3",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f4)
#y=2x²-3  
t.pencolor("red")
def f5(x):
    return 2*x**2-3
t.setpos(20*(13/2)**0.5, 102)
t.write("y=2x²-3",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f5)
#y=-2x²-3
def f6(x):
    return -2*x**2 - 3     
t.setpos(20*(7/2)**0.5, -127)
t.write("y=-2x²-3",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f6)
t.ht()

附录6
import sys
sys.path.append("/5xstar/pyfiles")
from fractions import Fraction
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
#y=2x²+12x+21  
def f(x):
    return 2*x**2+12*x+21     
t.setpos(20*((7/2)**0.5-3), 202)
t.write("y=2x²+12x+21",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f)
#y=-2x²-12x-15  
def f2(x):
    return -2*x**2-12*x-15       
t.setpos(20*((7/2)**0.5-3), -227)
t.write("y=-2x²-12x-15",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f2)
#y=2x²+12x+15  
t.pencolor("green")
def f3(x):
    return 2*x**2+12*x+15
t.setpos(20*(-(13/2)**0.5-3), 202)
t.write("y=2x²+12x+15",align="right", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f3)
#y=-2x²-12x-21    
def f4(x):
    return -2*x**2-12*x-21    
t.setpos(20*(-(13/2)**0.5-3), -227)
t.write("y=-2x²-12x-21",align="right", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f4)
#y=2x²-12x+21
t.pencolor("red")
def f5(x):
    return 2*x**2-12*x+21
t.setpos(20*((7/2)**0.5+3), 202)
t.write("y=2x²-12x+21",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f5)
#y=-2x²+12x-15
def f6(x):
    return -2*x**2 +12*x-15     
t.setpos(20*((7/2)**0.5+3), -227)
t.write("y=-2x²+12x-15",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f6)
#y=2x²-12x+15
t.pencolor("blue")
def f7(x):
    return 2*x**2-12*x+15
t.setpos(20*((13/2)**0.5+3), 102)
t.write("y=2x²-12x+15",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f7)
#y=-2x²+12x-21
def f8(x):
    return -2*x**2 +12*x-21     
t.setpos(20*((13/2)**0.5+3), -127)
t.write("y=-2x²+12x-21",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f8)
t.ht()

附录7
import sys
sys.path.append("/5xstar/pyfiles")
from fractions import Fraction
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
#(1)y=3x²-12x+5  
t.pencolor("blue")
def f(x):
    return 3*x**2-12*x+5     
t.setpos(20*2, 202)
t.write("(1)y=3x²-12x+5",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f)
#(2)y=-2x²+16x-27  
t.pencolor("red")
def f2(x):
    return -2*x**2+16*x-27       
t.setpos(20*4, -227)
t.write("(2)y=-2x²+16x-27",align="center", font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f2)
t.ht()

 

附录8

import sys
sys.path.append("/5xstar/pyfiles")
from mymath.rcs import *
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
build(t)
t.setpos(-1*20, 7*20)
t.dot("red")
t.setpos(-3*20, -5*20)
t.dot("blue")
t.setpos(0, 4*20)
t.dot("blue")
#y=3x+4  
t.pencolor("blue")
def f(x):
    return 3*x+4     
t.setpos(40, 140)
t.write("y=3x+4",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f)
#y=-3x²-6x+4  
t.pencolor("red")
def f2(x):
    return -3*x**2-6*x+4       
t.setpos(40, -140)
t.write("y=-3x²-6x+4",font=(markFont[0],14,markFont[2]))
trace(t,-10,10,f2)
t.ht()