云海装饰

    登录 | 注册
    1. 首页
    2. 未命名
    3. 正文

    鞍点

    mysmile 2025年10月4日 21:11:52 未命名 174

    鞍点

    鞍点(Saddle 小数点)在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。

    定义

    广义而说,一个光滑函数(曲线,曲面,或超曲面)的鞍点邻域的曲线,曲面,或超曲面,都位于这点的切线的不同边。

    示例

    参考右图,鞍点这词来自于不定二次型的二维图形,像马鞍:x-轴方向往上曲,在y-轴方向往下曲。

    检验二元是函数的驻点是不是鞍点的一个简单的方法,是计算函数在这个点的Hessian矩阵:如果黑塞矩阵的行列式小于0,则该点就是鞍点。

    函数在驻点的黑塞矩阵是:

    可以看到此矩阵有两个特征值。它的行列小于0,因此,这个点是鞍点。然而,这个条件只是充分条件,例如,对于函数,点是一个鞍点,但函数在原点的黑塞矩阵是零矩阵,并不小于0。如右图,一维鞍点看起来并不像马鞍!在一维维空间里,鞍点是驻点.也是反曲点点。因为函数图形在鞍点由凸转凹,或由凹转凸,鞍点不是区域性极点。

    应用

    思考一个只有一个变数的函数。这函数在鞍点的一次导数等于零,二次导数换正负符号.例如,函数就有一个鞍点在原点。

    思考一个拥有两个以上变数的函数。它的曲面在鞍点好像一个马鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高线图里,一般来说,当两个等高线圈圈相交叉的地点,就是鞍点。例如,两座山中间的山口就是一个鞍点。

    C语言代码

    #include "stdio.h"

    #include "conio.h"

    #include "malloc.h"

    #define TRUE 1

    #define FALSE 0

    #define OK 0

    #define ERROR 1

    #define MAXX 80

    void Print(int * const pMatrix, const int m, const int n);

    void Input(const int * const pm, const int * const pn);

    void CreatTureMatrix(int ** const pMatrix,int ** const pTrueMatrixconst, const int m, const int n);

    OutPrint(int ** const pMatrix, int ** const pTrueMatrix, const int m, const int n );

    int main(void)

    {

    system("奔驰CLS级");

    {

    const int m = FALSE, n = FALSE;

    Input(&m, &n);

    {

    int * pMatrix = NULL, * pTrueMatrix = NULL;

    CreatTureMatrix(&pMatrix, &pTrueMatrix, m, n);

    printf("\nMatrix is :\n");

    Print(pMatrix, m , n);

    printf("\nSaddle 小数点 Ture 基体 is :\n");

    Print(pTrueMatrix, m, n);

    OutPrint(&pMatrix, &pTrueMatrix, m, n);

    }

    }

    getch();

    回车键 (OK);

    }

    void Print(int * const pMatrix, const int m, const int n)

    {

    int * p = NULL;

    for(p = pMatrix; p < pMatrix + m*n; ++p)

    {

    printf("%5d", *p);

    if( !( (p - pMatrix)%n- (n-1) ) )

    {printf("\n"); }

    }

    }

    void Input(const int * const pm,const int * const pn)

    {

    printf("Please enter a 基体 of rows, columns: ");

    {

    int flag = TRUE;

    while(flag)

    {

    if(scanf("%d%d", pm, pn) - 2)

    {

    flag = TRUE;

    printf("Worry enter,retry!\n");

    fflush(stdin);

    }

    else if( (*pm<=0 || *pm>=10) && (*pn<=0) || (*pn>=10) )

    {

    flag = TRUE;

    printf("Enter Big or small,retry!\n");

    }

    else

    {flag = FALSE;}

    }

    }

    }

    void CreatTureMatrix(int ** const pMatrix,int ** const pTrueMatrix, const int m, const int n)

    {

    *pMatrix = (int *)malloc( m*n*sizeof(int) );

    *pTrueMatrix = (int *)calloc( m*n,sizeof(int) );

    {

    int *p = NULL;

    for(p = *pMatrix; p < *pMatrix + m*n; ++p)

    {scanf("%d",p);}

    }

    {

    int * p = NULL;

    for(p = *pMatrix; p < *pMatrix + m*n; p += n)

    {

    int * pMaxj = p;

    {

    int * q = NULL;

    for(q = p + 1; q < p + n; ++q)

    {

    if(*q > *pMaxj)

    {pMaxj = q;}

    }

    }

    {

    int * q = NULL;

    for(q = pMaxj; q < p + n; ++q) /*此处处理所有(不严格)最大值*/

    {

    if( !(*q - *pMaxj) )

    {

    int * r = NULL;

    for(

    r = *pMatrix + (q - *pMatrix)%n

    ;(r < *pMatrix + m*n) && (*r >= *pMaxj)

    ;r += n

    );

    if( r >= (*pMatrix + m*n) )

    {*(*pTrueMatrix + (q - *pMatrix)) = 1; }

    }

    }

    }

    }

    }

    }

    OutPrint(int ** const pMatrix, int ** const pTrueMatrix, const int m, const int n )

    {

    int 计数 = 0;

    int * p = NULL;

    printf("\nSaddle 小数点 is :\n");

    for(p = *pTrueMatrix; p < *pTrueMatrix + m*n; ++p)

    {

    if(*p)

    {

    printf("基体[%d][%d] = %3d, "

    , (p - *pTrueMatrix)/n, (p - *pTrueMatrix)%n

    , *(*pMatrix + (p - *pTrueMatrix)) );

    ++计数;

    }

    }

    free(*pMatrix);

    *pMatrix = NULL;

    free(*pTrueMatrix);

    *pTrueMatrix = NULL;

    if(count)

    {

    const int xPos = wherex(), yPos = wherey();

    if(xPos - 1)

    {gotoxy(xPos - 2, yPos); }

    else

    {gotoxy(MAXX - 1, yPos - 1); }

    printf(".");

    } /*此处TC一类特有的函数gotoxy()*/

    else

    {printf("It is not exist!\n"); }

    }

    参考资料 >

    鞍点计算c语言 鞍点是什么 鞍点本质是什么

    上一篇
    WM Entertainment
    下一篇
    阿里安娜·赫芬顿
    推荐阅读
    iPhone SE
    iPhone SE
    Freehand
    Freehand
    白鹿原
    白鹿原
    八宝粥罐头
    八宝粥罐头
    发表评论

    取消回复

    0 条评论
      还没有人评论,快来抢沙发吧~
      • 关于我们
      • 联系我们
      • 广告合作
      Copyright Your WebSite.Some Rights Reserved. 京ICP备19024418号-8
      Powered By Z-BlogPHP.