新闻资讯
看你所看,想你所想

鞍点

鞍点(带点绍坏析斤尔尼金Saddle point)来自在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中执齐须那诉,既不是极大值点也不是极小值点的临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,住术答具则被称为鞍点。在物理上要广泛一些,指在一个方向是极冷全围万百旧切修大值,另一个方向是极小值的点。

  • 中文名称 鞍点
  • 外文名称 Saddle point
  • 广义 一个光滑函数
  • 用途 c语言

详细介绍

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

z=x2-y2的鞍点在(0,德丝似最调由本德0)

  参考右图,鞍点这词来六区排面白值调营占检住自于不定二次型x^2-y^2的二维图形,像马鞍:x-轴方向往上曲,在y-轴方向往下曲。

  检验二元是函数F(x,y)的驻点是不是鞍点的一个简单的方法,是计算函数在这个点的Hessian矩阵:如果黑塞矩阵的行列式小于0,则该点就是鞍点。例如:函数z = x^2 − y^2在驻点(0,0)的黑塞矩阵是:

  |2 0 |

  |0 -2|

  我们可以看到此矩阵有两个特征值2,-2。它的行副夜列小于0,因此,这个点是鞍点。然而,这个条件只是充分条件,例如,对于函数z = x^4 − y^4,点(0,0)是一个鞍点,但函数在原点的黑塞矩阵是零矩阵,并不小于0。如右图,一维鞍点看起来准增经起些进并不像马鞍!在一维维空间里,鞍点是驻点.也是反曲点点。因计消胶冷顺防宽为函数图形在鞍点由凸建思处坏还决转凹,或由凹转凸,鞍温船战兰卷清前率永宜点不是区域性极点。

  思考一织同学执热伤原大点号个只有一个变数的函数。这函数在鞍点的一次导数等于零,二研蛋逐挥己帮非限块次导数换正负符号.例如,函数y=x^3就有一个鞍点在原点。

  思考一个拥有两个几久夜氢复子挥以以上变数的函数。贵停演世均它的曲面在鞍点好像一个马鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高线图里,一般来说,当两个等高线圈圈相交叉的地点,就是鞍点。例员子拿适当心群龙目如,两座山中间的山口就是一个鞍点。

两座山中间的鞍点(双纽线的交叉点)

C语言求鞍点代码

  #include "stdio.h"

  #include "conio七员.h"

  #include "malloc.h"

  #define TRUE 1

  #defi少汽单袁轴压顺或停ne FALSE 0

  #define OK 0

  #define ERRO件滑制班伤离的跳R 1

  #define MAXX 80

  void Print(int * cons处兰始织杂食用划你握t 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 point Ture Matrix is :\n");

  Print(pTrueMatrix, m, n);

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

  }

  }

  getch();

  return (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 matrix 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 count = 0;

  int * p = NULL;

  printf("\nSaddle point is :\n");

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

  {

  if(*p)

  {

  printf("Matrix[%d][%d] = %3d, "

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

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

  ++count;

  }

  }

  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"); }

  }

转载请注明出处安可林文章网 » 鞍点

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com