亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? simplex.c

?? GNU Scientific Library,C語言開發(fā)的數(shù)值方面的函數(shù)庫
?? C
字號:
/* multimin/simplex.c *  * Copyright (C) 2002 Tuomo Keskitalo, Ivo Alxneit *  * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *//*   - Originally written by Tuomo Keskitalo <tuomo.keskitalo@iki.fi>   - Corrections to nmsimplex_iterate and other functions      by Ivo Alxneit <ivo.alxneit@psi.ch>   - Additional help by Brian Gough <bjg@network-theory.co.uk>*//* The Simplex method of Nelder and Mead,   also known as the polytope search alogorithm. Ref:   Nelder, J.A., Mead, R., Computer Journal 7 (1965) pp. 308-313.   This implementation uses n+1 corner points in the simplex.*/#include <config.h>#include <stdlib.h>#include <gsl/gsl_blas.h>#include <gsl/gsl_multimin.h>typedef struct{  gsl_matrix *x1;               /* simplex corner points */  gsl_vector *y1;               /* function value at corner points */  gsl_vector *ws1;              /* workspace 1 for algorithm */  gsl_vector *ws2;              /* workspace 2 for algorithm */}nmsimplex_state_t;static doublenmsimplex_move_corner (const double coeff, const nmsimplex_state_t * state,                       size_t corner, gsl_vector * xc,                       const gsl_multimin_function * f){  /* moves a simplex corner scaled by coeff (negative value represents      mirroring by the middle point of the "other" corner points)     and gives new corner in xc and function value at xc as a      return value    */  gsl_matrix *x1 = state->x1;  size_t i, j;  double newval, mp;  if (x1->size1 < 2)    {      GSL_ERROR ("simplex cannot have less than two corners!", GSL_EFAILED);    }  for (j = 0; j < x1->size2; j++)    {      mp = 0.0;      for (i = 0; i < x1->size1; i++)        {          if (i != corner)            {              mp += (gsl_matrix_get (x1, i, j));            }        }      mp /= (double) (x1->size1 - 1);      newval = mp - coeff * (mp - gsl_matrix_get (x1, corner, j));      gsl_vector_set (xc, j, newval);    }  newval = GSL_MULTIMIN_FN_EVAL (f, xc);  return newval;}static intnmsimplex_contract_by_best (nmsimplex_state_t * state, size_t best,                            gsl_vector * xc, gsl_multimin_function * f){  /* Function contracts the simplex in respect to      best valued corner. That is, all corners besides the      best corner are moved. */  /* the xc vector is simply work space here */  gsl_matrix *x1 = state->x1;  gsl_vector *y1 = state->y1;  size_t i, j;  double newval;  for (i = 0; i < x1->size1; i++)    {      if (i != best)        {          for (j = 0; j < x1->size2; j++)            {              newval = 0.5 * (gsl_matrix_get (x1, i, j)                              + gsl_matrix_get (x1, best, j));              gsl_matrix_set (x1, i, j, newval);            }          /* evaluate function in the new point */          gsl_matrix_get_row (xc, x1, i);          newval = GSL_MULTIMIN_FN_EVAL (f, xc);          gsl_vector_set (y1, i, newval);        }    }  return GSL_SUCCESS;}static intnmsimplex_calc_center (const nmsimplex_state_t * state, gsl_vector * mp){  /* calculates the center of the simplex to mp */  gsl_matrix *x1 = state->x1;  size_t i, j;  double val;  for (j = 0; j < x1->size2; j++)    {      val = 0.0;      for (i = 0; i < x1->size1; i++)        {          val += gsl_matrix_get (x1, i, j);        }      val /= x1->size1;      gsl_vector_set (mp, j, val);    }  return GSL_SUCCESS;}static doublenmsimplex_size (nmsimplex_state_t * state){  /* calculates simplex size as average sum of length of vectors      from simplex center to corner points:          ( sum ( || y - y_middlepoint || ) ) / n    */  gsl_vector *s = state->ws1;  gsl_vector *mp = state->ws2;  gsl_matrix *x1 = state->x1;  size_t i;  double ss = 0.0;  /* Calculate middle point */  nmsimplex_calc_center (state, mp);  for (i = 0; i < x1->size1; i++)    {      gsl_matrix_get_row (s, x1, i);      gsl_blas_daxpy (-1.0, mp, s);      ss += gsl_blas_dnrm2 (s);    }  return ss / (double) (x1->size1);}static intnmsimplex_alloc (void *vstate, size_t n){  nmsimplex_state_t *state = (nmsimplex_state_t *) vstate;  state->x1 = gsl_matrix_alloc (n + 1, n);  if (state->x1 == NULL)    {      GSL_ERROR ("failed to allocate space for x1", GSL_ENOMEM);    }  state->y1 = gsl_vector_alloc (n + 1);  if (state->y1 == NULL)    {      GSL_ERROR ("failed to allocate space for y", GSL_ENOMEM);    }  state->ws1 = gsl_vector_alloc (n);  if (state->ws1 == NULL)    {      GSL_ERROR ("failed to allocate space for ws1", GSL_ENOMEM);    }  state->ws2 = gsl_vector_alloc (n);  if (state->ws2 == NULL)    {      GSL_ERROR ("failed to allocate space for ws2", GSL_ENOMEM);    }  return GSL_SUCCESS;}static intnmsimplex_set (void *vstate, gsl_multimin_function * f,               const gsl_vector * x,               double *size, const gsl_vector * step_size){  int status;  size_t i;  double val;  nmsimplex_state_t *state = (nmsimplex_state_t *) vstate;  gsl_vector *xtemp = state->ws1;  /* first point is the original x0 */  val = GSL_MULTIMIN_FN_EVAL (f, x);  gsl_matrix_set_row (state->x1, 0, x);  gsl_vector_set (state->y1, 0, val);  /* following points are initialized to x0 + step_size */  for (i = 0; i < x->size; i++)    {      status = gsl_vector_memcpy (xtemp, x);      if (status != 0)        {          GSL_ERROR ("vector memcopy failed", GSL_EFAILED);        }      val = gsl_vector_get (xtemp, i) + gsl_vector_get (step_size, i);      gsl_vector_set (xtemp, i, val);      val = GSL_MULTIMIN_FN_EVAL (f, xtemp);      gsl_matrix_set_row (state->x1, i + 1, xtemp);      gsl_vector_set (state->y1, i + 1, val);    }  /* Initialize simplex size */  *size = nmsimplex_size (state);  return GSL_SUCCESS;}static voidnmsimplex_free (void *vstate){  nmsimplex_state_t *state = (nmsimplex_state_t *) vstate;  gsl_matrix_free (state->x1);  gsl_vector_free (state->y1);  gsl_vector_free (state->ws1);  gsl_vector_free (state->ws2);}static intnmsimplex_iterate (void *vstate, gsl_multimin_function * f,                   gsl_vector * x, double *size, double *fval){  /* Simplex iteration tries to minimize function f value */  /* Includes corrections from Ivo Alxneit <ivo.alxneit@psi.ch> */  nmsimplex_state_t *state = (nmsimplex_state_t *) vstate;  /* xc and xc2 vectors store tried corner point coordinates */  gsl_vector *xc = state->ws1;  gsl_vector *xc2 = state->ws2;  gsl_vector *y1 = state->y1;  gsl_matrix *x1 = state->x1;  size_t n = y1->size;  size_t i;  size_t hi = 0, s_hi = 0, lo = 0;  double dhi, ds_hi, dlo;  int status;  double val, val2;  /* get index of highest, second highest and lowest point */  dhi = ds_hi = dlo = gsl_vector_get (y1, 0);  for (i = 1; i < n; i++)    {      val = (gsl_vector_get (y1, i));      if (val < dlo)        {          dlo = val;          lo = i;        }      else if (val > dhi)        {          ds_hi = dhi;          s_hi = hi;          dhi = val;          hi = i;        }      else if (val > ds_hi)        {          ds_hi = val;          s_hi = i;        }    }  /* reflect the highest value */  val = nmsimplex_move_corner (-1.0, state, hi, xc, f);  if (val < gsl_vector_get (y1, lo))    {      /* reflected point becomes lowest point, try expansion */      val2 = nmsimplex_move_corner (-2.0, state, hi, xc2, f);      if (val2 < gsl_vector_get (y1, lo))        {          gsl_matrix_set_row (x1, hi, xc2);          gsl_vector_set (y1, hi, val2);        }      else        {          gsl_matrix_set_row (x1, hi, xc);          gsl_vector_set (y1, hi, val);        }    }  /* reflection does not improve things enough */  else if (val > gsl_vector_get (y1, s_hi))    {      if (val <= gsl_vector_get (y1, hi))        {          /* if trial point is better than highest point, replace              highest point */          gsl_matrix_set_row (x1, hi, xc);          gsl_vector_set (y1, hi, val);        }      /* try one dimensional contraction */      val2 = nmsimplex_move_corner (0.5, state, hi, xc2, f);      if (val2 <= gsl_vector_get (y1, hi))        {          gsl_matrix_set_row (state->x1, hi, xc2);          gsl_vector_set (y1, hi, val2);        }      else        {          /* contract the whole simplex in respect to the best point */          status = nmsimplex_contract_by_best (state, lo, xc, f);          if (status != 0)            {              GSL_ERROR ("nmsimplex_contract_by_best failed", GSL_EFAILED);            }        }    }  else    {      /* trial point is better than second highest point.          Replace highest point by it */      gsl_matrix_set_row (x1, hi, xc);      gsl_vector_set (y1, hi, val);    }  /* return lowest point of simplex as x */  lo = gsl_vector_min_index (y1);  gsl_matrix_get_row (x, x1, lo);  *fval = gsl_vector_get (y1, lo);  /* Update simplex size */  *size = nmsimplex_size (state);  return GSL_SUCCESS;}static const gsl_multimin_fminimizer_type nmsimplex_type = { "nmsimplex",  /* name */  sizeof (nmsimplex_state_t),  &nmsimplex_alloc,  &nmsimplex_set,  &nmsimplex_iterate,  &nmsimplex_free};const gsl_multimin_fminimizer_type  * gsl_multimin_fminimizer_nmsimplex = &nmsimplex_type;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性色aⅴ视频一区日韩精品| 色综合视频一区二区三区高清| 色偷偷一区二区三区| 欧美电影免费观看高清完整版在线| 日韩毛片精品高清免费| 精品一区二区三区影院在线午夜 | 亚洲v精品v日韩v欧美v专区| 丁香婷婷综合激情五月色| 91麻豆精品国产| 一区二区三区成人在线视频| 成人午夜精品一区二区三区| 欧美成人高清电影在线| 午夜久久电影网| 在线一区二区三区四区| 国产精品国产a级| 国产成人啪免费观看软件| 日韩欧美色综合| 丝瓜av网站精品一区二区 | 久久国产精品99久久人人澡| 在线视频综合导航| 国产精品初高中害羞小美女文| 国产一区二区三区免费在线观看| 91精品国产一区二区| 亚洲二区在线观看| 欧美性色综合网| 亚洲曰韩产成在线| 色一情一乱一乱一91av| 亚洲私人影院在线观看| 丁香亚洲综合激情啪啪综合| 久久品道一品道久久精品| 久久99精品一区二区三区三区| 3atv一区二区三区| 日韩电影在线看| 4438成人网| 麻豆精品视频在线观看| 91精品国产91久久久久久最新毛片| 婷婷开心激情综合| 在线播放国产精品二区一二区四区| 亚洲午夜电影网| 欧美日韩午夜在线视频| 五月天丁香久久| 日韩亚洲欧美高清| 精品在线亚洲视频| 久久久久久久性| 成人午夜又粗又硬又大| 自拍av一区二区三区| 成人高清视频在线| 亚洲欧美偷拍三级| 欧美性极品少妇| 石原莉奈在线亚洲二区| 日韩欧美成人午夜| 国产福利91精品一区二区三区| 日本一区二区三区电影| 99精品视频一区二区| 亚洲美女屁股眼交| 欧美三级乱人伦电影| 日本va欧美va瓶| 久久综合av免费| 成人午夜电影网站| 亚洲啪啪综合av一区二区三区| 在线视频你懂得一区二区三区| 亚洲国产一区二区在线播放| 制服丝袜av成人在线看| 紧缚奴在线一区二区三区| 中文字幕乱码一区二区免费| 91在线精品一区二区三区| 亚洲图片欧美视频| 欧美一级二级三级蜜桃| 国产精品538一区二区在线| 综合欧美亚洲日本| 欧美精品三级在线观看| 极品销魂美女一区二区三区| 国产精品久久99| 欧美日韩亚洲高清一区二区| 国产在线精品不卡| 亚洲欧美日韩国产综合| 欧美日韩国产系列| 国产成人8x视频一区二区| 一区二区三区高清在线| 欧美成人伊人久久综合网| 成人av网站在线| 日韩成人精品在线| 欧美国产精品中文字幕| 日本一区二区三区四区在线视频 | 99久久婷婷国产综合精品电影| 性做久久久久久免费观看欧美| 欧美日韩国产天堂| 亚洲一区二区三区三| 欧美一级理论片| 不卡在线观看av| 日日摸夜夜添夜夜添国产精品| 亚洲国产精品精华液ab| 欧美色欧美亚洲另类二区| 国产精品一卡二卡在线观看| 亚洲自拍偷拍图区| 国产欧美日韩三级| 欧美精品一卡两卡| 成人激情文学综合网| 日韩高清不卡一区二区| 国产精品另类一区| 欧美一级精品在线| 91亚洲永久精品| 国产自产高清不卡| 香蕉影视欧美成人| 国产精品美日韩| 欧美一区二区免费| 91久久精品国产91性色tv| 麻豆精品在线看| 亚洲国产日产av| 国产精品国产三级国产普通话蜜臀| 欧美一级日韩免费不卡| 色婷婷精品大在线视频| 国产精品一区三区| 日韩av电影免费观看高清完整版在线观看| 国产精品久久久久毛片软件| 精品国产免费一区二区三区四区| 欧洲一区在线电影| 99久久er热在这里只有精品15 | 国产亚洲精品资源在线26u| 精品视频一区二区三区免费| 成人精品小蝌蚪| 韩国av一区二区三区在线观看| av在线一区二区三区| 久久av中文字幕片| 视频在线观看国产精品| 亚洲欧美另类久久久精品2019| 国产日韩亚洲欧美综合| 日韩精品一区二区三区四区视频 | 欧美亚洲一区二区在线| 丁香婷婷综合网| 国产精品资源在线观看| 青青草视频一区| 日韩综合一区二区| 天天综合色天天| 亚洲一区二区三区中文字幕| 日韩毛片一二三区| 国产精品传媒视频| 国产精品久久久久久久久免费桃花| 久久久精品国产99久久精品芒果| 56国语精品自产拍在线观看| 欧美三级视频在线播放| 欧美在线一区二区三区| 色综合视频在线观看| 国产日韩欧美精品一区| 国模少妇一区二区三区| 欧美日韩亚洲综合| 国产精品影音先锋| 国产一区二区中文字幕| 麻豆久久久久久久| 精品一区二区三区免费观看| 免费精品视频最新在线| 日韩国产在线观看一区| 午夜伦理一区二区| 日本在线不卡一区| 日本在线观看不卡视频| 麻豆精品视频在线| 国内精品写真在线观看| 国产在线日韩欧美| 国产精品911| 成人av免费在线| 99re66热这里只有精品3直播 | 午夜激情综合网| 热久久一区二区| 老司机一区二区| 国产中文字幕精品| 国产91丝袜在线观看| 波多野结衣中文字幕一区| 99国产精品视频免费观看| 91蝌蚪国产九色| 欧美日韩欧美一区二区| 欧美妇女性影城| 精品电影一区二区| 欧美激情在线一区二区三区| 中文字幕欧美激情| 亚洲精品久久久蜜桃| 视频一区二区欧美| 韩国精品久久久| 波多野结衣亚洲一区| 91国产成人在线| 日韩三级中文字幕| 精品久久久久久久一区二区蜜臀| 日韩三级免费观看| 欧美巨大另类极品videosbest | 色94色欧美sute亚洲线路二| 欧美日本乱大交xxxxx| 精品剧情v国产在线观看在线| 精品国产成人在线影院 | 精品国产乱码久久久久久图片 | 成人午夜视频福利| 欧洲中文字幕精品| 日韩精品专区在线影院观看 | 欧美精选午夜久久久乱码6080| 日韩欧美一区二区视频| 欧美国产乱子伦| 五月天激情小说综合| 国产精品一区一区三区| 91国产免费看| 久久日一线二线三线suv| 国产精品卡一卡二| 午夜视频在线观看一区|