精华内容
下载资源
问答
  • 一次调用,两次返回-------fork函数学习总结  以前一直迷惑,什么叫一次调用,两次返回。通过上网搜索,终于知其原由。现将自己的理解记录于此。  准备知识:  内存中的进程包括三个部分:可执行文件(即程序...
    一次调用,两次返回-------fork函数学习总结
      以前一直迷惑,什么叫一次调用,两次返回。通过上网搜索,终于知其原由。现将自己的理解记录于此。
           准备知识:
                  内存中的进程包括三个部分:可执行文件(即程序),相关数据(包括变量,内存空间,缓冲区等),上下文环境(个人理解为从哪儿来,到哪儿去)。我们知道,电脑CPU资源有限,单核就只有一个,多核也不是无限多。而当前运行的程序个数总是多于CPU个数的(这个应该是可以想得通的,没有哪个制造商或个人那么阔气而浪费CPU)。因此在操作系统的调度之下,一个程序一般不会从头执行到尾而不间断,系统会按照程序执行的顺序、优先级别等来确实由哪个程序占用当前CPU。而被间断的那些程序就需要保存间断时刻的状态(即进程的三个部分都要记录下来),以便再次执行能够完全恢复到间断以前,如果间断的时间足够短,应该给人很流畅的感觉,这也就是为什么,我们能够一边听音乐,一边看这篇文章的缘故。我猜,这也是为什么运行在内存中的程序会被称为进程的缘故。


           这样,我们就可以开始讨论fork函数了。假设一个进程中有一句代码p=fork()。


           我们称当前调用p=fork()的进程为父进程,父进程pid号可以用getpid()获取。fork()返回一个值给变量p,此时p正常情况下应该是一个正整数,表示fork()新产生的子进程的pid号。


           fork()产生的那个子进程和父进程完全相同(至少在父进程调用fork()那一瞬间是相同的),而且也是完全独立的(即执行的先后顺序完全由操作系统调度,且父进程不一定比子进程先执行完)。fork()函数并不同于一般的函数,父进程并不会等fork函数产生的子进程完全执行完再执行pid=fork()后面的代码。或者,可以理解为fork()的作用就是产生一个子进程,至于子进程是否运行、如何运行与它没关系。


           现讨论子进程的执行。我们知道,既然fork()是复制父进程,那么p=fork()语句之前的情况应该是完全一致。在父进程中p变量得到的是子进程的pid号,但是在子进程中同样有这样一个p变量,它的值是不是也是子进程的pid号呢?这是关键所在! 事实上,子进程中的p变量得到的值不是子进程的pid号,而是0。子进程的pid号完全可以用getpid()在子进程中得到。这也是为什么称fork()一次调用,两次返回,即最后的结果就等价于:一个程序被调用两次形成两个进程,在p=fork()之前,两个进程完全一样,到这一句时,一个进程中p变量值为另一个进程的pid号,而另一个进程中p变量值为0,在这之后,两个进程分道扬镳,再无任何瓜葛。(注意,两个进程可以由同一个程序引起。)
    展开全文
  • SetUnhandledExceptionFilter函数学习

    万次阅读 2013-11-18 11:58:41
    SetUnhandledExceptionFilter函数学习 首先看下百度上的对此函数的解释。设置异常捕获函数. 当异常没有处理的时候,系统就会调用... 异常处理中的部分 当发生异常时,比如内存访问违例时,CPU硬件会发现此问题,

    SetUnhandledExceptionFilter函数学习



    1、SetUnhandleExceptionFilter函数

        Windows平台下的C++程序异常通常可分为两种:结构化异常(Structured Exception,可以理解为与操作系统相关的异常)和C++异常。对于结构化异常处理(SEH),可以找到很多资料,在此不细说。对于crash错 误,一般由未被正常捕获的异常引起,Windows操作系统提供了一个API函数可以在程序crash之前有机会处理这些异常,就是 SetUnhandleExceptionFilter函数。(C++也有一个类似函数set_terminate可以处理未被捕获的C++异常。)

        SetUnhandleExceptionFilter函数声明如下:

        LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(
          __in          LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
        );

        其中 LPTOP_LEVEL_EXCEPTION_FILTER 定义如下:

        typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)(
            __in struct _EXCEPTION_POINTERS *ExceptionInfo
        );
        typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;

        简单来说,SetUnhandleExceptionFilter允许我们设置一个自己的函数作为全局SEH过滤函数,当程序crash前会调用我们的函 数进行处理。我们可以利用的是 _EXCEPTION_POINTERS 结构类型的变量ExceptionInfo,它包含了对异常的描述以及发生异常的线程状态,过滤函数可以通过返回不同的值来让系统继续运行或退出应用程 序。

        关于 SetUnhandleExceptionFilter 函数的具体用法和示例请参考MSDN。



          首先看下百度上的对此函数的解释。

    设置异常捕获函数.

      当异常没有处理的时候,系统就会调用SetUnhandledExceptionFilter所设置异常处理函数.

      例如一些程序在出错的时候,会向用户报告说程序那出错就是利用这个.例如QQ..

      异常处理中的一部分

      当发生异常时,比如内存访问违例时,CPU硬件会发现此问题,并产生一个异常(你可以把它理解为中断)

      然后CPU会把代码流程切换到异常处理服务例程。操作系统异常处理服务例程会查看当前进程是否处于调试状态

      如果时,则通知调试器发生了异常,如果不是则操作系统会查看当前线程是否安装了的异常帧链(FS[0]),如果安装了SEH(try.... catch....),则调用SEH,并根据返回结果决定是否全局展开活局部展开。如果异常链中所有的SEH都没有处理此异常,而且此进程还处于调试状态,则操作系统会再次通知调试器发生异常(二次异常)。如果还没人处理,则调用操作系统的默认异常处理代码UnhandledExceptionHandler,不过操作系统允许你Hook这个函数,就是通过SetUnhandledExceptionFilter函数来设置。大部分异常通过此种方法都能捕获,不过栈溢出、覆盖的有可能捕获不到。

      大部分保护壳都采用异常处理技术,跳出正常的代码指令流程,来迷惑Cracker。

       说的有点粗略。

    下面根据自己的理解阐述下。

       SetUnhandledExceptionFilter,根据函数的名字能看出是设置异常处理函数,其实如果程序没设置异常处理函数,程序会调用默认的处理函数处理异常,然后程序终止,一般情况下就弹出个对话框。

    如何设置自己的异常处理函数?

    LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(
    LPTOP_LEVEL_EXCEPTION_FILTER
     lpTopLevelExceptionFilter 
    );

    参数是一个函数指针,定义如下

    LONG UnhandledExceptionFilter(
    STRUCT _EXCEPTION_POINTERS
     *ExceptionInfo 
    );

    函数类型

    ExceptionInfo 是对异常描述的一个结构体

    typedef struct _EXCEPTION_POINTERS {
    PEXCEPTION_RECORD ExceptionRecord
    PCONTEXT ContextRecord
    } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;

    异常捕获函数有三种返回值

    EXCEPTION_EXECUTE_HANDLER:表明异常处理完毕,程序可以退出

    EXCEPTION_CONTINUE_EXECUTION:忽略此异常,从异常点继续运行。如果此时再发生异常,还会调用异常处理函数

    EXCEPTION_CONTINUE_SEARCH:异常没被识别,交由上一级处理函数处理;

    SetUnhandledExceptionFilter返回值,如果为0,表明此时没有附加额外的处理函数(除默认的处理函数),如果非空,则存放到当前顶层的处理函数地址。

    需要注意的是,SetUnhandledExceptionFilter设置的异常处理函数为全局的处理函数,是异常发生后,最后一次处理异常的机会。如果程序被调试器附加。调试器将优先于SetUnhandledExceptionFilter设置的异常处理函数处理异常。C++自定义的try{}Catch{}比较。这是C++自定义的异常处理过程,利用SEH来处理发生的异常,如果异常发生,又出现在try{}Catch{}中 将得到优先处理。

    展开全文
  • python函数学习(跳出函数

    万次阅读 2017-06-12 13:55:12
    两个一样的函数,传同样的值结果不同,第一种情况return在for循环里面 所以输出一次退出循环 >>> printinfos(11,12,13,15,112) 11 12 >>> printinfo(11,12,13,15,112) 11 12 13 15 112 break:跳出所在的当前...
    #!/bin/python
    #-*- coding -*-
    def printinfo( nu, *others ):
      print nu
      for var in others:
                      print var
    

    return;

    #!/bin/python
    #-*- coding:utf-8 -*-
    def printinfo( nu, *others ):
     print nu
     for var in others:
             print var
     return;
    
    
    
    
    两个一样的函数,传同样的值结果不同,第一种情况return在for循环里面 所以输出一次退出循环
    >>> printinfos(11,12,13,15,112)
    11
    12
    >>> printinfo(11,12,13,15,112)
    11
    12
    13
    15
    112
    
    
    

    break:跳出所在的当前整个循环,到外层代码继续执行。

    continue:跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。

    return:直接返回函数,所有该函数体内的代码(包括循环体)都不会再执行。

    展开全文
  • 次函数

    千次阅读 2021-06-18 11:12:03
    次函数求导之后是二次函数,二次函数的重要性及相关知识点在此不再惯述,而导数作为研究函数的重要工具,可通过三次函数具体的载体更加深刻地理解导数与原函数的关系。掌握了三次函数的方法,更加有助于学习高...

    三次函数

           三次函数求导之后是二次函数,二次函数的重要性及相关知识点在此不再惯述,而导数作为研究函数的重要工具,可通过三次函数这一具体的载体更加深刻地理解导数与原函数的关系。掌握了三次函数的方法,更加有助于学习高次函数或者超越函数。

    可因式分解型

    • 【例 1】13x3+ax2+x=0\frac{1}{3} x^{3}+a x^{2}+x=0 有两个实数根,求实数 aa 的取值范围。

    • 【解析】 13x3+ax2+x\frac{1}{3} x^{3}+a x^{2}+x 可因式分解为 x(13x2+ax+1)x\left(\frac{1}{3} x^{2}+a x+1\right),故 13x3+ax2+x=0\frac{1}{3} x^{3}+a x^{2}+x=0 等价于 x=0x=013x2+ax+1=0\frac{1}{3} x^{2}+a x+1=0 。由题意可知二次方程 13x2+ax+1=0\frac{1}{3} x^{2}+a x+1=0 有唯一一个非 00 的实根或者两个不同的实根而其中一个为 00 。因为 00 显然不是二次方程 13x2+ax+1=0\frac{1}{3} x^{2}+a x+1=0 的根,所以只需 Δ=a243=0\Delta=a^{2}-\frac{4}{3}=0,解得 a=±233a=\pm \frac{2 \sqrt{3}}{3},故 aa 的取值范围是 a{233,233}a \in\left\{-\frac{2 \sqrt{3}}{3}, \frac{2 \sqrt{3}}{3}\right\}

    • 【变式 1】 关于 xx 的方程 x3+ax2+x=0x^{3}+a x^{2}+x=0 有三个不同实数根,求实数 aa 的取值范围。

    • 【变式 2】 已知函数 f(x)=13x312(a+1)x2+axf(x)=\frac{1}{3} x^{3}-\frac{1}{2}(a+1) x^{2}+a x,设 a>1a>1,讨论函数 f(x)f(x) 在区间 [0,a+1][0, a+1] 内零点的个数。

           一元二次函数的表达形式有三种:一般式、顶点式、两根式,其中两根式可视为可因式分解型,那么 一元三次函数也是类似的。三次函数的一般式为 f(x)=ax3+bx2+cx+d(a0)f(x)=a x^{3}+b x^{2}+c x+d(a \neq 0),但如果已知三次函数的零点,那么也可以将三次函数写成几个因式乘积的形式。因为三次方程的实数根至少有一个,最多有三个,由此有以下知识点:

    【知识点 1】

           设三次函数 f(x)=ax3+bx2+cx+d(a0)f(x)=a x^{3}+b x^{2}+c x+d(a \neq 0)
           (1)若已知三次函数只有一个零点 x0x_{0},那么三次函数可以写成 f(x)=a(xx0)3f(x)=a\left(x-x_{0}\right)^{3}
           (2)若已知三次函数只有两个零点 x1x_{1}x2x_{2},那么三次函数可以写成 f(x)=a(xx1)(xf(x)=a\left(x-x_{1}\right)(x- x2)2\left.x_{2}\right)^{2}x2x_{2} 为重根);或 f(x)=a(xx1)2(xx2)f(x)=a\left(x-x_{1}\right)^{2}\left(x-x_{2}\right)x1x_{1} 为重根);
           (3)若已知三次函数有三个零点 x1x_{1}x2x_{2}x3x_{3},那么三次函数可以写成 f(x)=a(xx1)(xx2)(xx3)f(x)=a\left(x-x_{1}\right)(x- \left.x_{2}\right)\left(x-x_{3}\right)
           (4)若已知三次函数有一个零点 x0x_{0},其他未知,那么三次函数可以写成 f(x)=a(xx0)g(x)f(x)=a\left(x-x_{0}\right) g(x),其中 g(x)g(x) 为二次函数。

    • 【例 2】 已知函数 f(x)=x3+ax2+bx+1f(x)=x^{3}+a x^{2}+b x+1 的两个不同零点为 x0x_{0}1x0\frac{1}{x_{0}},则 a2+(b2)2a^{2}+(b-2)^{2} 的取值范围是(       )。
      A. (4,+)(4,+\infty)
      B. (6,+)(6,+\infty)
      C. (8,+)(8,+\infty)
      D. (10,+)(10,+\infty)

    • 【解析】 因为函数 f(x)f(x) 有两个不同的零点 x0x_{0}1x0\frac{1}{x_{0}}x0±1x_{0} \neq \pm 1,所以一定有因式 xx0x-x_{0}x1x0x-\frac{1}{x_{0}} 。 根据多项式乘法的特点:因式中的常数之积为多项式中的常数,因式中的最高次项之积为多项式中的最高次项,可知函数 f(x)f(x) 的第三个因式必为 x+1x+1。故
      f(x)=(xx0)(x1x0)(x+1)=x3+[1(x0+1x0)]x2+[1(x0+1x0)]x+1 f(x)=\left(x-x_{0}\right)\left(x-\frac{1}{x_{0}}\right)(x+1)=x^{3}+\left[1-\left(x_{0}+\frac{1}{x_{0}}\right)\right] x^{2}+\left[1-\left(x_{0}+\frac{1}{x_{0}}\right)\right] x+1
      从而 a=b=1(x0+1x0)a=b=1-\left(x_{0}+\frac{1}{x_{0}}\right)。因为 x0+1x0(,2)(2,+)x_{0}+\frac{1}{x_{0}} \in(-\infty,-2) \cup(2,+\infty),所以 a=b(,1)(3,+)a=b \in(-\infty,-1) \cup(3,+\infty),所以 a2+(b2)2=a2+(a2)2=2a24a+4a^{2}+(b-2)^{2}=a^{2}+(a-2)^{2}=2 a^{2}-4 a+4,对称轴为 11,故最小值在 a=1a=-1a=3a=3 处取得为 1010,故选 D。

    • 【变式 3】 (2012 山东文 12)函数 f(x)=1xf(x)=\frac{1}{x}g(x)=x2+bxg(x)=-x^{2}+b x,若 y=f(x)y=f(x) 的图像与 y=g(x)y=g(x) 图像有且仅有两个不同的公共点 A(x1,y1)A\left(x_{1}, y_{1}\right)B(x2,y2)B\left(x_{2}, y_{2}\right),则下列判断正确的是(       )。
      A. x1+x2>0x_{1}+x_{2}>0y1+y2>0y_{1}+y_{2}>0
      B. x1+x2>0x_{1}+x_{2}>0y1+y2<0y_{1}+y_{2}<0
      C. x1+x2<0x_{1}+x_{2}<0y1+y2>0y_{1}+y_{2}>0
      D. x1+x2<0x_{1}+x_{2}<0y1+y2<0y_{1}+y_{2}<0

    • 【变式 4】 (2014 广东文 21)已知函数 f(x)=13x3+x2+ax+1f(x)=\frac{1}{3} x^{3}+x^{2}+a x+1。当 a<0a<0 时,试讨论是否存在 x0(0,12)(12,1)x_{0} \in\left(0, \frac{1}{2}\right) \cup\left(\frac{1}{2}, 1\right),使得 f(x0)=f(12)f\left(x_{0}\right)=f\left(\frac{1}{2}\right)

    极值点可求型

           探索一元三次方程的根时,特殊情况下才可因式分解降次,但如果无法转化为二次方程时,我们就只能通过极值来研究。

           设三次函数为 f(x)=ax3+bx2+cx+d(a0)f(x)=a x^{3}+b x^{2}+c x+d(a \neq 0),求导 f(x)=3ax2+2bx+cf^{\prime}(x)=3 a x^{2}+2 b x+c,对于方程 f(x)=3ax2+2bx+c=0f^{\prime}(x)=3 a x^{2}+2 b x+c=0,根的判别式记为 Δ\Delta,当 Δ>0\Delta>0 时,记 x1x_{1}x2x_{2}f(x)=0f^{\prime}(x)=0 的根,即函数 f(x)f(x) 的极值点。
           结合三次函数的图像如图所示,关于三次方程的根有以下知识点:

    【知识点 2】

           (1)f(x)=0f(x)=0 有一个根 Δ0\Leftrightarrow \Delta \leqslant 0{Δ>0f(x1)f(x2)>0\begin{cases} \Delta>0 \\ f\left(x_{1}\right) f\left(x_{2}\right)>0\end{cases}
           (2)f(x)=0f(x)=0 有两个根 {Δ>0f(x1)f(x2)=0\Leftrightarrow \begin{cases} \Delta>0 \\ f\left(x_{1}\right) f\left(x_{2}\right)=0\end{cases}
           (3)f(x)=0f(x)=0 有三个根 {Δ>0f(x1)f(x2)<0\Leftrightarrow \begin{cases} \Delta>0 \\ f\left(x_{1}\right) f\left(x_{2}\right)<0\end{cases}

    在这里插入图片描述

    • 【例 3】 (Ⅰ)若 f(x)=13x3+12ax2+1f(x)=\frac{1}{3} x^{3}+\frac{1}{2} a x^{2}+1 有一个零点,求实数 aa 的取值范围。
             (Ⅱ)若 f(x)=13x3+ax+1f(x)=\frac{1}{3} x^{3}+a x+1 有两个零点,求实数 aa 的取值范围。
             (Ⅲ)若函数 f(x)=x33a2x+2(a>0)f(x)=x^{3}-3 a^{2} x+2(a>0) 有三个零点,求实数 aa 的取值范围。

    • 【解析】 (Ⅰ)求导可得 f(x)=x2+axf^{\prime}(x)=x^{2}+a x,由 f(x)=0f^{\prime}(x)=0x1=0x_{1}=0x2=af(x)x_{2}=-a,f(x) 只有一个零点包括两种情况:
             (1)当 Δ=a20\Delta=a^{2} \leqslant 0,即 a=0f(x)0a=0,f^{\prime}(x) \geqslant 0 恒成立,f(x)f(x) 单调递增,此时 f(x)f(x) 只有一个零点。
             (2)当 f(x)f(x) 的两极值同号时,函数 f(x)f(x) 只有一个零点,即 {Δ>0f(x1)f(x2)>0\begin{cases} \Delta>0 \\ f\left(x_{1}\right) f\left(x_{2}\right)>0\end{cases},整理可得 {a0f(0)f(a)=a36+1>0\begin{cases} a \neq 0 \\ f(0) f(-a)=\frac{a^{3}}{6}+1>0\end{cases},解得 a>63a>-\sqrt[3]{6}a0a \neq 0
             综上所述,aa 的取值范围为 (63,+)(-\sqrt[3]{6},+\infty)
             (Ⅱ)令 f(x)=13x3+ax+1f(x)=\frac{1}{3} x^{3}+a x+1,则 f(x)=x2+af^{\prime}(x)=x^{2}+a,由 f(x)=0f^{\prime}(x)=0x1=ax_{1}=\sqrt{-a}x2=ax_{2}=-\sqrt{-a}f(x)f(x) 有两个零点 {Δ>0f(x1)f(x2)=0{a<0f(a)f(a)=0\Leftrightarrow \begin{cases} \Delta>0 \\ f\left(x_{1}\right) f\left(x_{2}\right)=0\end{cases} \Rightarrow \begin{cases} a<0 \\ f(\sqrt{-a}) f(-\sqrt{-a})=0\end{cases},解得 a=943a=-\sqrt[3]{\frac{9}{4}}
             (Ⅲ)f(x)=3x23a2=3(xa)(x+a)f^{\prime}(x)=3 x^{2}-3 a^{2}=3(x-a)(x+a),由 f(x)=0f^{\prime}(x)=0x1=ax_{1}=ax2=ax_{2}=-a。函数有三个零点等价于 {Δ>0f(x1)f(x2)<0{a0f(a)f(a)=44a6<0\begin{cases} \Delta>0 \\ f\left(x_{1}\right) f\left(x_{2}\right)<0\end{cases} \Rightarrow \begin{cases} a \neq 0 \\ f(a) f(-a)=4-4 a^{6}<0\end{cases},解得 a>1a>1,故 aa 的取值范围为 (1,+)(1,+\infty)

    • 【变式 5】 已知函数 f(x)=ax332(a+2)x2+6x3f(x)=a x^{3}-\frac{3}{2}(a+2) x^{2}+6 x-3,当 a>0a>0 时,讨论曲线 y=f(x)y=f(x)xx 轴的公共点的个数。

    • 【变式 6】 (2015 江苏 19)已知函数 f(x)=x3+ax2+b(a,bR)f(x)=x^{3}+a x^{2}+b(a, b \in \mathbb{R}),若 b=cab=c-a(实数 cc 是与 aa 无关的常数),当函数 f(x)f(x) 有三个不同的零点时,aa 的取值范围恰好 (,3)(1,32)(32,+)(-\infty,-3) \cup\left(1, \frac{3}{2}\right) \cup\left(\frac{3}{2},+\infty\right),求 cc 的值。

    • 【例 4】 (2014 北京文 20)已知函数 f(x)=2x33xf(x)=2 x^{3}-3 x
             (Ⅰ)若过点 P(1,m)P(1, m) 存在 3 条直线与曲线 y=f(x)y=f(x) 相切,求 mm 的取值范围;
             (Ⅱ)问过点 A(1,2)A(-1,2)B(2,10)B(2,10)C(0,2)C(0,2) 分别存在几条直线与曲线 y=f(x)y=f(x) 相切?(只需写出结论)

    • 【解析】 求导可得 f(x)=6x23f^{\prime}(x)=6 x^{2}-3,设切点为 (t,f(t))(t, f(t)),则切线方程为 y(2t33t)=(6t23)(xt)y-\left(2 t^{3}-3 t\right)=\left(6 t^{2}-3\right)(x-t)。 设切线过 (a,b)(a, b),所以 4t36at2+3a+b=04 t^{3}-6 a t^{2}+3 a+b=0,令 g(t)=4t36at2+3a+bg(t)=4 t^{3}-6 a t^{2}+3 a+b,则 g(t)=12t212at=0g^{\prime}(t)=12 t^{2}-12 a t=0 可得 t1=0t_{1}=0t2=at_{2}=a
             (Ⅰ)若 (a,b)=(1,m)(a, b)=(1, m),则 t1=0t2=1t_{1}=0,t_{2}=1,因为过点 P(1,m)P(1, m) 存在 3 条直线与曲线 y=f(x)y=f(x) 相切,所 以 g(t)max=g(0)=m+3>0g(t)_{\max }=g(0)=m+3>0g(t)min=g(1)=m+1<0g(t)_{\min }=g(1)=m+1<0,解得 3<m<1-3<m<-1,故 mm 的取值范围为 (3,1)(-3,-1)
             (Ⅱ)(1)若 (a,b)=(1,2)(a, b)=(-1,2),则 t1=0t_{1}=0t2=1t_{2}=-1,所以 g(t)max=g(1)=1>0g(t)_{\max }=g(-1)=1>0g(t)min=g(0)=1<0g(t)_{\min }=g(0)= -1<0,故 g(t)g(t) 有三个零点,即过点 A(1,2)A(-1,2) 存在 3 条直线与曲线 y=f(x)y=f(x) 相切;
             (2)若 (a,b)=(2,10)(a, b)=(2,10),则 t1=0t_{1}=0t2=2t_{2}=2,所以 g(t)max=g(0)=16>0g(t)_{\max }=g(0)=16>0g(t)min=g(2)=0g(t)_{\min }=g(2)=0,故 g(t)g(t) 有两个零点,即过点 B(2,10)B(2,10) 存在 2 条直线与曲线 y=f(x)y=f(x) 相切;
             (3)若 (a,b)=(0,2)(a, b)=(0,2),则 t1=0t_{1}=0t2=0t_{2}=0,所以 g(t)g(t) 单调递增,故过点 C(0,2)C(0,2) 存在 1 条直线与曲线 y=f(x)y=f(x) 相切。

    • 【变式 7】 设函数 f(x)=13x3a2x2+1(a>0)f(x)=\frac{1}{3} x^{3}-\frac{a}{2} x^{2}+1(a>0),若过点 (0,2)(0,2) 可作曲线 y=f(x)y=f(x) 的 3 条不同切线,求 aa 的取值范围。

    • 【变式 8】 若过点 A(2,m)A(2, m) 可作曲线 f(x)=x33xf(x)=x^{3}-3 x 的 3 条切线,则 mm 的取值范围。

    极值点不可求型

           理论上当三次函数有极值点时,其极值都是可求的。首先由二次方程的求根公式求出极值点,然后再代入三次函数求得其极值。但如果这样硬算的话,不仅计算量极其恐怖,甚至实际操作时是完全不可行的,那么此时,就非常需要有效的计算技巧。

           此时可以采用“整体代换降次”的方式来大大降低计算量,结合韦达定理求解。通过后面的例题可以体会。

           我们先来看一个以前就做过的题:已知 x2x1=0x^{2}-x-1=0,求 x4+2x+1x5\frac{x^{4}+2 x+1}{x^{5}} 的值。

    • 【解析】x2x1=0x^{2}-x-1=0x2=x+1x^{2}=x+1,显然,将 x2x^{2} 作为一个整体代入计算时有效的将二次降低成了一次。
             分子:x4+2x+1=(x2)2+2x+1=(x+1)2+2x+1=x2+4x+2=x+1+4x+2=5x+3x^{4}+2 x+1=\left(x^{2}\right)^{2}+2 x+1=(x+1)^{2}+2 x+1=x^{2}+4 x+2=x+1+4 x+2=5 x+3
             分母:x5=x(x2)2=x(x+1)2=x(x2+2x+1)=x(3x+2)=3x2+2x=3(x+1)+2x=x^{5}=x \cdot\left(x^{2}\right)^{2}=x \cdot(x+1)^{2}=x \cdot\left(x^{2}+2 x+1\right)=x \cdot(3 x+2)=3 x^{2}+2 x=3(x+1)+2 x=
      5x+35 x+3
             从而 x4+2x+1x5=5x+35x+3=1\frac{x^{4}+2 x+1}{x^{5}}=\frac{5 x+3}{5 x+3}=1

           通过这个例子,我们可以深刻体会到整体代换起到的降次这一关键的作用!那么,当三次函数的极值点不可求时,我们也可以采用同样的计算技巧求解。

    • 【例 5】13x3x2+axa=0\frac{1}{3} x^{3}-x^{2}+a x-a=0 只有一个实数根,求 aa 的取值范围。

    • 【解析】f(x)=13x3x2+axaf(x)=\frac{1}{3} x^{3}-x^{2}+a x-a,则 f(x)=x22x+af^{\prime}(x)=x^{2}-2 x+a,那么 f(x)=0f(x)=0 只有一个零点包括两种情况:
             (1)当 Δ=44a0\Delta=4-4 a \leqslant 0,即 a1a \geqslant 1 时,f(x)0f^{\prime}(x) \geqslant 0 恒成立,函数 f(x)f(x) 单调递增,所以方程 f(x)=0f(x)=0 只有一个实数根。
             (2)当 Δ=44a>0\Delta=4-4 a>0,即 a<1a<1 时,设 f(x)=0f^{\prime}(x)=0 的两根为 x1x_{1}x2x_{2},则由韦达定理 {x1+x2=2x1x2=a\begin{cases} x_{1}+x_{2}=2 \\ x_{1} x_{2}=a\end{cases},且由 f(x1)=x122x1+a=0f^{\prime}\left(x_{1}\right)=x_{1}^{2}-2 x_{1}+a=0 可得 x12=2x1ax_{1}^{2}=2 x_{1}-a。那么
      f(x1)=13x13x12+ax1a=13x1(2x1a)(2x1a)+ax1a=23x12+(2a32)x1=23(2x1a)+(2a32)x1=(2a2)x12a3=23[(a1)x1a] \begin{aligned} f\left(x_{1}\right) &=\frac{1}{3} x_{1}^{3}-x_{1}^{2}+a x_{1}-a=\frac{1}{3} x_{1}\left(2 x_{1}-a\right)-\left(2 x_{1}-a\right)+a x_{1}-a=\frac{2}{3} x_{1}^{2}+\left(\frac{2 a}{3}-2\right) x_{1} \\ &=\frac{2}{3}\left(2 x_{1}-a\right)+\left(\frac{2 a}{3}-2\right) x_{1}=\frac{(2 a-2) x_{1}-2 a}{3}=\frac{2}{3}\left[(a-1) x_{1}-a\right] \end{aligned}
      同理 f(x2)=23[(a1)x2a]f\left(x_{2}\right)=\frac{2}{3}\left[(a-1) x_{2}-a\right]。所以 f(x)=0f(x)=0 只有一个实数根只需 f(x1)f(x2)>0f\left(x_{1}\right) f\left(x_{2}\right)>0,即
      f(x1)f(x2)=23[(a1)x1a]23[(a1)x2a]=49[(a1)2x1x2a(a1)(x1+x2)+a2]=49[a(a1)22a(a1)+a2]=4a9(a23a+3)>0 \begin{aligned} f\left(x_{1}\right) f\left(x_{2}\right) &=\frac{2}{3}\left[(a-1) x_{1}-a\right] \cdot \frac{2}{3}\left[(a-1) x_{2}-a\right]=\frac{4}{9}\left[(a-1)^{2} x_{1} x_{2}-a(a-1)\left(x_{1}+x_{2}\right)+a^{2}\right] \\ &=\frac{4}{9}\left[a(a-1)^{2}-2 a(a-1)+a^{2}\right]=\frac{4 a}{9}\left(a^{2}-3 a+3\right)>0 \end{aligned}
      可得 a>0a>0(因为 a23a+3>0a^{2}-3 a+3>0 恒成立)。又因为 a<1a<1,此时 0<a<10<a<1
             综上所述,aa 的取值范围是 (0,+)(0,+\infty)

    • 【注】 本题的关键在于将 x12=2x1ax_{1}^{2}=2 x_{1}-a 作为一个整体代入 f(x1)f\left(x_{1}\right) 的表达式化简为一次式 23[(a1)x1a]\frac{2}{3}\left[(a-1) x_{1}-a\right],同样的方法得到 f(x2)f\left(x_{2}\right) 的表达式,最后利用韦达定理求解。

    • 【例 6】(2018 新课标 Ⅱ 文 21)证明 f(x)=13x3a(x2+x+1)f(x)=\frac{1}{3} x^{3}-a\left(x^{2}+x+1\right) 只有一个零点。

    • 【解析】 f(x)=x22axaf^{\prime}(x)=x^{2}-2 a x-a,它的判别式 Δ=4a2+4a\Delta=4 a^{2}+4 a
             (1)当 1a0-1 \leqslant a \leqslant 0 时,f(x)0f^{\prime}(x) \geqslant 0 恒成立,故 f(x)f(x)R\mathbb{R} 上单调递增,f(x)f(x) 只有一个零点。
             (2)当 a>0a>0a<1a<-1 时,则 f(x)=0f^{\prime}(x)=0 有两个根 x1x_{1}x2x_{2}f(x)f(x) 只有一个零点 f(x1)f(x2)>0\Leftrightarrow f\left(x_{1}\right) f\left(x_{2}\right)>0。 由 f(x1)=x122ax1a=0f^{\prime}\left(x_{1}\right)=x_{1}^{2}-2 a x_{1}-a=0x12=2ax1+ax_{1}^{2}=2 a x_{1}+a。则
      f(x1)=13x13a(x12+x1+1)=13x1(2ax1+a)a(x12+x1+1)=a3x122a3x1a=a3(2ax1+a)2a3x1a=23a(a+1)x1(a23+a) \begin{aligned} f\left(x_{1}\right) &=\frac{1}{3} x_{1}^{3}-a\left(x_{1}^{2}+x_{1}+1\right)=\frac{1}{3} x_{1}\left(2 a x_{1}+a\right)-a\left(x_{1}^{2}+x_{1}+1\right) \\ &=-\frac{a}{3} x_{1}^{2}-\frac{2 a}{3} x_{1}-a=-\frac{a}{3}\left(2 a x_{1}+a\right)-\frac{2 a}{3} x_{1}-a & ①\\ &=-\frac{2}{3} a(a+1) x_{1}-\left(\frac{a^{2}}{3}+a\right) \end{aligned}
      同理可得 f(x2)=23a(a+1)x2(a23+a)f\left(x_{2}\right)=-\frac{2}{3} a(a+1) x_{2}-\left(\frac{a^{2}}{3}+a\right),所以有 f(x1)f(x2)=49a2(a+1)2x1x2+29a2(a+1)(a+3)(x1+x2)+19a2(a+3)2f\left(x_{1}\right) f\left(x_{2}\right)=\frac{4}{9} a^{2}(a+1)^{2} x_{1} x_{2}+\frac{2}{9} a^{2}(a+1)(a+3)\left(x_{1}+x_{2}\right)+\frac{1}{9} a^{2}(a+3)^{2},由韦达定理可知 x1+x2=2ax1x2=ax_{1}+x_{2}=2 a,x_{1} x_{2}=-a,故 f(x1)f(x2)=19a2[(3a+73)2+329]>0f\left(x_{1}\right) f\left(x_{2}\right)= \frac{1}{9} a^{2}\left[\left(3 a+\frac{7}{3}\right)^{2}+\frac{32}{9}\right]>0
             综上所述,f(x)f(x) 只有一个零点。

    • 【注】 注意表达式 ①,我们有 f(x1)=a3x122a3x1a=a3(x12+2x1+3)f\left(x_{1}\right)=-\frac{a}{3} x_{1}^{2}-\frac{2 a}{3} x_{1}-a=-\frac{a}{3}\left(x_{1}^{2}+2 x_{1}+3\right) 你会发现 x12+2x1+3x_{1}^{2}+2 x_{1}+3 恒正,所以 f(x1)f\left(x_{1}\right)a3-\frac{a}{3} 同号。同理 f(x2)f\left(x_{2}\right)a3-\frac{a}{3} 同号。因此本题大可不必将 f(x1)f\left(x_{1}\right) 降成一次并利用韦达定理。

    • 【例 7】(2017 江苏 20)已知函数 f(x)=x3+ax2+bx+1(a>0,bR)f(x)=x^{3}+a x^{2}+b x+1(a>0, b \in \mathbb{R}) 有极值,且导函数 f(x)f^{\prime}(x) 的极值点是 f(x)f(x) 的零点。
             (Ⅰ)求 bb 关于 aa 的函数关系式,并写出定义域。
             (Ⅱ)若 f(x)f(x)f(x)f^{\prime}(x) 这两个函数的所有极值之和不小于 72-\frac{7}{2},求 aa 的取值范围。

    • 【解析】 (Ⅰ)f(x)=3x2+2ax+bf^{\prime}(x)=3 x^{2}+2 a x+b,由 f(x)=6x+2a=0f^{\prime \prime}(x)=6 x+2 a=0f(x)f^{\prime}(x) 的极值点为 x=a3x=-\frac{a}{3},从而有 f(a3)=0f\left(-\frac{a}{3}\right)=0,即 a327+a39ab3+1=0b=2a29+3a-\frac{a^{3}}{27}+\frac{a^{3}}{9}-\frac{a b}{3}+1=0 \Rightarrow b=\frac{2 a^{2}}{9}+\frac{3}{a},因为函数 f(x)f(x) 有极值,则 f(x)=3x2+2ax+b=0f^{\prime}(x)=3 x^{2}+2 a x+b=0
      有不同的实根,所以
      Δ=4a212b=4a224a2936a=12(a327)9a>0a>3 \Delta=4 a^{2}-12 b=4 a^{2}-\frac{24 a^{2}}{9}-\frac{36}{a}=\frac{12\left(a^{3}-27\right)}{9 a}>0 \Rightarrow a>3
      所以 b=2a29+3a(a>3)b=\frac{2 a^{2}}{9}+\frac{3}{a}(a>3)
             (Ⅱ)由 (Ⅰ) f(x)f^{\prime}(x) 有唯一极值 f(a3)=ba23=a29+3af^{\prime}\left(-\frac{a}{3}\right)=b-\frac{a^{2}}{3}=-\frac{a^{2}}{9}+\frac{3}{a}f(x)f(x) 的极值点是 3x2+2ax+b=03 x^{2}+2 a x+b=0 的两根 x1x_{1}x2x_{2},则由韦达定理 {x1+x2=2a3x1x2=b3\begin{cases} x_{1}+x_{2}=-\frac{2 a}{3} \\ x_{1} x_{2}=\frac{b}{3}\end{cases},且由 f(x1)=3x12+2ax1+b=0x12=2ax1+b3f^{\prime}\left(x_{1}\right)=3 x_{1}^{2}+2 a x_{1}+b=0 \Rightarrow x_{1}^{2}=-\frac{2 a x_{1}+b}{3},从而
      f(x1)=x13+ax12+bx1+1=x1(2ax1+b3)+a(2ax1+b3)+bx1+1=2a3(2ax1+b3)bx132a2x13ab3+bx1+1=(2a29+2b3)x1+1ab9 \begin{aligned} f\left(x_{1}\right) &=x_{1}^{3}+a x_{1}^{2}+b x_{1}+1=x_{1}\left(-\frac{2 a x_{1}+b}{3}\right)+a\left(-\frac{2 a x_{1}+b}{3}\right)+b x_{1}+1 \\ &=-\frac{2 a}{3}\left(-\frac{2 a x_{1}+b}{3}\right)-\frac{b x_{1}}{3}-\frac{2 a^{2} x_{1}}{3}-\frac{a b}{3}+b x_{1}+1=\left(-\frac{2 a^{2}}{9}+\frac{2 b}{3}\right) x_{1}+1-\frac{a b}{9} \end{aligned}
      同理 f(x2)=(2a29+2b3)x2+1ab9f\left(x_{2}\right)=\left(-\frac{2 a^{2}}{9}+\frac{2 b}{3}\right) x_{2}+1-\frac{a b}{9},从而
      f(x1)+f(x2)=(2a29+2b3)(x1+x2)+22ab9=(2a29+2b3)(2a3)+22ab9=4a3272ab3+2=4a3272a3(2a29+3a)+2=0 \begin{aligned} f\left(x_{1}\right)+f\left(x_{2}\right) &=\left(-\frac{2 a^{2}}{9}+\frac{2 b}{3}\right)\left(x_{1}+x_{2}\right)+2-\frac{2 a b}{9}=\left(-\frac{2 a^{2}}{9}+\frac{2 b}{3}\right) \cdot\left(-\frac{2 a}{3}\right)+2-\frac{2 a b}{9} \\ &=\frac{4 a^{3}}{27}-\frac{2 a b}{3}+2=\frac{4 a^{3}}{27}-\frac{2 a}{3}\left(\frac{2 a^{2}}{9}+\frac{3}{a}\right)+2=0 \end{aligned}
      所以 f(x1)+f(x2)+f(a3)=a29+3a72f\left(x_{1}\right)+f\left(x_{2}\right)+f^{\prime}\left(-\frac{a}{3}\right)=-\frac{a^{2}}{9}+\frac{3}{a} \geqslant-\frac{7}{2},即 2a363a54=(a6)(2a2+12a+9)02 a^{3}-63 a-54=(a-6)\left(2 a^{2}+12 a+9\right) \leqslant 0,因为 a>3a>3,所以 2a2+12a+9=2(a+3)29>02 a^{2}+12 a+9=2(a+3)^{2}-9>0,从而 a60a-6 \leqslant 0,解得 a6a \leqslant 6,故 aa 的取值范围为 (3,6](3,6]

    • 【变式 9】 (2014 新课标 Ⅱ 文 21 )已知函数 f(x)=x33x2+x+2f(x)=x^{3}-3 x^{2}+x+2。证明:当 k<1k<1 时,曲 线 y=f(x)y=f(x) 与直线 y=kx2y=k x-2 只有一个交点。

    • 【变式 10】(2016 天津文 20)设函数 f(x)=x3axb,xR,a,bRf(x)=x^{3}-a x-b, x \in \mathbb{R}, a, b \in \mathbb{R},若 f(x)f(x) 存在极值点 x0x_{0},且 f(x1)=f(x0)(x1x0)f\left(x_{1}\right)=f\left(x_{0}\right)\left(x_{1} \neq x_{0}\right)。求证:x1+2x0=0x_{1}+2 x_{0}=0

    对称中心

           我们利用上一节中的降次方法研究三次函数的对称中心,先看下例:

    • 【例 8】 已知 f(x)=ax3+bx2+cx+df(x)=a x^{3}+b x^{2}+c x+d
      (Ⅰ)若 x1x_{1}x2x_{2}f(x)f(x) 的极值点,则 f(x1)+f(x2)2=f(x1+x22)=f(b3a)\frac{f\left(x_{1}\right)+f\left(x_{2}\right)}{2}=f\left(\frac{x_{1}+x_{2}}{2}\right)=f\left(-\frac{b}{3 a}\right)
      (Ⅱ)若 x1x_{1}x2x_{2} 关于 x=b3ax=-\frac{b}{3 a} 对称,则 f(x1)+f(x2)2=f(x1+x22)=f(b3a)\frac{f\left(x_{1}\right)+f\left(x_{2}\right)}{2}=f\left(\frac{x_{1}+x_{2}}{2}\right)=f\left(-\frac{b}{3 a}\right)

    • 【解析】 (Ⅰ)因为 x1x_{1}x2x_{2}f(x)f(x) 的极值点,所以 x1x_{1}x2x_{2}f(x)=3ax2+2bx+cf^{\prime}(x)=3 a x^{2}+2 b x+c 的零点,即 3ax12+2bx1+c=03 a x_{1}^{2}+2 b x_{1}+c=03ax22+2bx2+c=03 a x_{2}^{2}+2 b x_{2}+c=0,故
      f(x1)=ax13+bx12+cx1+d=ax1(2bx1+c3a)+bx12+cx1+d=13bx12+23cx1+d=13b(2bx1+c3a)+23cx1+d=(2b29a+23c)x1+(dbc9a) \begin{aligned} f\left(x_{1}\right) &=a x_{1}^{3}+b x_{1}^{2}+c x_{1}+d=a x_{1}\left(-\frac{2 b x_{1}+c}{3 a}\right)+b x_{1}^{2}+c x_{1}+d \\ &=\frac{1}{3} b x_{1}^{2}+\frac{2}{3} c x_{1}+d=\frac{1}{3} b\left(-\frac{2 b x_{1}+c}{3 a}\right)+\frac{2}{3} c x_{1}+d=\left(\frac{-2 b^{2}}{9 a}+\frac{2}{3} c\right) x_{1}+\left(d-\frac{b c}{9 a}\right) \end{aligned}
      同理可得 f(x2)=(2b29a+23c)x2+(dbc9a)f\left(x_{2}\right)=\left(\frac{-2 b^{2}}{9 a}+\frac{2}{3} c\right) x_{2}+\left(d-\frac{b c}{9 a}\right)。因为 x1+x2=2b3ax_{1}+x_{2}=-\frac{2 b}{3 a}x1x2=c3ax_{1} x_{2}=\frac{c}{3 a},所以
      f(x1)+f(x2)=(2b29a+23c)(x1+x2)+2(dbc9a)=(2b29a+23c)(2b3a)+2(dbc9a)=4b327a22bc3a+2d \begin{aligned} f\left(x_{1}\right)+f\left(x_{2}\right) &=\left(\frac{-2 b^{2}}{9 a}+\frac{2}{3} c\right)\left(x_{1}+x_{2}\right)+2\left(d-\frac{b c}{9 a}\right)=\left(\frac{-2 b^{2}}{9 a}+\frac{2}{3} c\right)\left(-\frac{2 b}{3 a}\right)+2\left(d-\frac{b c}{9 a}\right) \\ &=\frac{4 b^{3}}{27 a^{2}}-\frac{2 b c}{3 a}+2 d \end{aligned}
      另一方面,我们有 f(x1+x22)=f(b3a)=2b327a2bc3a+df\left(\frac{x_{1}+x_{2}}{2}\right)=f\left(-\frac{b}{3 a}\right)=\frac{2 b^{3}}{27 a^{2}}-\frac{b c}{3 a}+d
             故 f(x1)+f(x2)2=f(x1+x22)=f(b3a)\frac{f\left(x_{1}\right)+f\left(x_{2}\right)}{2}=f\left(\frac{x_{1}+x_{2}}{2}\right)=f\left(-\frac{b}{3 a}\right)
             (Ⅱ)因为 x1x_{1}x2x_{2} 不一定是极值点,所以不能利用上面的降次的方法。因为涉及两个变量,我们转化成一个变量,即利用 x2=2b3ax1x_{2}=-\frac{2 b}{3 a}-x_{1},故
      f(x1)+f(x2)=f(x1)+f(2b3ax1)=ax13+bx12+cx1+d+a(2b3ax1)3+b(2b3ax1)2+c(2b3ax1)+d=4b327a22bc3a+2d \begin{aligned} f\left(x_{1}\right)+f\left(x_{2}\right) &=f\left(x_{1}\right)+f\left(-\frac{2 b}{3 a}-x_{1}\right) \\ &=a x_{1}^{3}+b x_{1}^{2}+c x_{1}+d+a\left(-\frac{2 b}{3 a}-x_{1}\right)^{3}+b\left(-\frac{2 b}{3 a}-x_{1}\right)^{2}+c\left(-\frac{2 b}{3 a}-x_{1}\right)+d \\ &=\frac{4 b^{3}}{27 a^{2}}-\frac{2 b c}{3 a}+2 d \end{aligned}
      另一方面,我们有 f(x1+x22)=f(b3a)=2b327a2bc3a+df\left(\frac{x_{1}+x_{2}}{2}\right)=f\left(-\frac{b}{3 a}\right)=\frac{2 b^{3}}{27 a^{2}}-\frac{b c}{3 a}+d
             故 f(x1)+f(x2)2=f(x1+x22)=f(b3a)\frac{f\left(x_{1}\right)+f\left(x_{2}\right)}{2}=f\left(\frac{x_{1}+x_{2}}{2}\right)=f\left(-\frac{b}{3 a}\right)

           回顾函数的周期性与对称性一节中框架图 3 的结论:若 f(Ax)+f(B+x)=Cf(A-x)+f(B+x)=C 对任意的 xx 成立,则 f(x)f(x) 关于 (A+B2C2)\left(\frac{A+B}{2},\frac{C}{2}\right) 中心对称。注意到例 8 中的第(Ⅱ)问的结论,它可以写成:对任意的 xx 都有 f(x)+f(2b3ax)=2f(b3a)f(x)+f\left(-\frac{2 b}{3 a}-x\right)=2 f\left(-\frac{b}{3 a}\right),故三次函数 f(x)=ax3+bx2+cx+df(x)=a x^{3}+b x^{2}+c x+d 的图像关于 (b3a,f(b3a))\left(-\frac{b}{3 a}, f\left(-\frac{b}{3 a}\right)\right)中心对称。

    【知识点 3】

           函数 f(x)=ax3+bx2+cx+d(a0)f(x)=a x^{3}+b x^{2}+c x+d(a \neq 0) 是中心对称图形,且其对称中心为 (b3a,f(b3a))\left(-\frac{b}{3 a}, f\left(-\frac{b}{3 a}\right)\right)

    • 【例 9】(2012 大纲卷文 21)设 f(x)=13x3+x2+axf(x)=\frac{1}{3} x^{3}+x^{2}+a x 有两个极值点 x1x_{1}x2x_{2},若过两点 (x1f(x1))\left(x_{1},f\left(x_{1}\right)\right)(x2,f(x2))\left(x_{2}, f\left(x_{2}\right)\right) 的直线 \ellxx 轴的交点在曲线 y=f(x)y=f(x) 上,求 aa 的值。

    • 【解析】 由题意,f(x)=x2+2x+a=0f^{\prime}(x)=x^{2}+2 x+a=0 有两根