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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hybrid.c

?? math library from gnu
?? C
字號:
/* multiroots/hybrid.c *  * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough *  * 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 3 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */#include <config.h>#include <stddef.h>#include <stdlib.h>#include <stdio.h>#include <math.h>#include <float.h>#include <gsl/gsl_math.h>#include <gsl/gsl_errno.h>#include <gsl/gsl_multiroots.h>#include <gsl/gsl_linalg.h>#include "dogleg.c"typedef struct{  size_t iter;  size_t ncfail;  size_t ncsuc;  size_t nslow1;  size_t nslow2;  double fnorm;  double delta;  gsl_matrix *J;  gsl_matrix *q;  gsl_matrix *r;  gsl_vector *tau;  gsl_vector *diag;  gsl_vector *qtf;  gsl_vector *newton;  gsl_vector *gradient;  gsl_vector *x_trial;  gsl_vector *f_trial;  gsl_vector *df;  gsl_vector *qtdf;  gsl_vector *rdx;  gsl_vector *w;  gsl_vector *v;}hybrid_state_t;static int hybrid_alloc (void *vstate, size_t n);static int hybrid_set (void *vstate, gsl_multiroot_function * func,                       gsl_vector * x, gsl_vector * f, gsl_vector * dx);static int hybrids_set (void *vstate, gsl_multiroot_function * func,                        gsl_vector * x, gsl_vector * f, gsl_vector * dx);static int hybrid_set_impl (void *vstate, gsl_multiroot_function * func, gsl_vector * x,                gsl_vector * f, gsl_vector * dx, int scale);static int hybrid_iterate (void *vstate, gsl_multiroot_function * func,                           gsl_vector * x, gsl_vector * f, gsl_vector * dx);static void hybrid_free (void *vstate);static int hybrid_iterate_impl (void *vstate, gsl_multiroot_function * func,                    gsl_vector * x, gsl_vector * f, gsl_vector * dx,                    int scale);static inthybrid_alloc (void *vstate, size_t n){  hybrid_state_t *state = (hybrid_state_t *) vstate;  gsl_matrix *J, *q, *r;  gsl_vector *tau, *diag, *qtf, *newton, *gradient, *x_trial, *f_trial,    *df, *qtdf, *rdx, *w, *v;  J = gsl_matrix_calloc (n, n);  if (J == 0)    {      GSL_ERROR ("failed to allocate space for J", GSL_ENOMEM);    }  state->J = J;  q = gsl_matrix_calloc (n, n);  if (q == 0)    {      gsl_matrix_free (J);      GSL_ERROR ("failed to allocate space for q", GSL_ENOMEM);    }  state->q = q;  r = gsl_matrix_calloc (n, n);  if (r == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      GSL_ERROR ("failed to allocate space for r", GSL_ENOMEM);    }  state->r = r;  tau = gsl_vector_calloc (n);  if (tau == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      GSL_ERROR ("failed to allocate space for tau", GSL_ENOMEM);    }  state->tau = tau;  diag = gsl_vector_calloc (n);  if (diag == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      GSL_ERROR ("failed to allocate space for diag", GSL_ENOMEM);    }  state->diag = diag;  qtf = gsl_vector_calloc (n);  if (qtf == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      GSL_ERROR ("failed to allocate space for qtf", GSL_ENOMEM);    }  state->qtf = qtf;  newton = gsl_vector_calloc (n);  if (newton == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      GSL_ERROR ("failed to allocate space for newton", GSL_ENOMEM);    }  state->newton = newton;  gradient = gsl_vector_calloc (n);  if (gradient == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      GSL_ERROR ("failed to allocate space for gradient", GSL_ENOMEM);    }  state->gradient = gradient;  x_trial = gsl_vector_calloc (n);  if (x_trial == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      gsl_vector_free (gradient);      GSL_ERROR ("failed to allocate space for x_trial", GSL_ENOMEM);    }  state->x_trial = x_trial;  f_trial = gsl_vector_calloc (n);  if (f_trial == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      gsl_vector_free (gradient);      gsl_vector_free (x_trial);      GSL_ERROR ("failed to allocate space for f_trial", GSL_ENOMEM);    }  state->f_trial = f_trial;  df = gsl_vector_calloc (n);  if (df == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      gsl_vector_free (gradient);      gsl_vector_free (x_trial);      gsl_vector_free (f_trial);      GSL_ERROR ("failed to allocate space for df", GSL_ENOMEM);    }  state->df = df;  qtdf = gsl_vector_calloc (n);  if (qtdf == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      gsl_vector_free (gradient);      gsl_vector_free (x_trial);      gsl_vector_free (f_trial);      gsl_vector_free (df);      GSL_ERROR ("failed to allocate space for qtdf", GSL_ENOMEM);    }  state->qtdf = qtdf;  rdx = gsl_vector_calloc (n);  if (rdx == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      gsl_vector_free (gradient);      gsl_vector_free (x_trial);      gsl_vector_free (f_trial);      gsl_vector_free (df);      gsl_vector_free (qtdf);      GSL_ERROR ("failed to allocate space for rdx", GSL_ENOMEM);    }  state->rdx = rdx;  w = gsl_vector_calloc (n);  if (w == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      gsl_vector_free (gradient);      gsl_vector_free (x_trial);      gsl_vector_free (f_trial);      gsl_vector_free (df);      gsl_vector_free (qtdf);      gsl_vector_free (rdx);      GSL_ERROR ("failed to allocate space for w", GSL_ENOMEM);    }  state->w = w;  v = gsl_vector_calloc (n);  if (v == 0)    {      gsl_matrix_free (J);      gsl_matrix_free (q);      gsl_matrix_free (r);      gsl_vector_free (tau);      gsl_vector_free (diag);      gsl_vector_free (qtf);      gsl_vector_free (newton);      gsl_vector_free (gradient);      gsl_vector_free (x_trial);      gsl_vector_free (f_trial);      gsl_vector_free (df);      gsl_vector_free (qtdf);      gsl_vector_free (rdx);      gsl_vector_free (w);      GSL_ERROR ("failed to allocate space for v", GSL_ENOMEM);    }  state->v = v;  return GSL_SUCCESS;}static inthybrid_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x,            gsl_vector * f, gsl_vector * dx){  int status = hybrid_set_impl (vstate, func, x, f, dx, 0);  return status;}static inthybrids_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x,             gsl_vector * f, gsl_vector * dx){  int status = hybrid_set_impl (vstate, func, x, f, dx, 1);  return status;}static inthybrid_set_impl (void *vstate, gsl_multiroot_function * func, gsl_vector * x,     gsl_vector * f, gsl_vector * dx, int scale){  hybrid_state_t *state = (hybrid_state_t *) vstate;  gsl_matrix *J = state->J;  gsl_matrix *q = state->q;  gsl_matrix *r = state->r;  gsl_vector *tau = state->tau;  gsl_vector *diag = state->diag;  int status;  status = GSL_MULTIROOT_FN_EVAL (func, x, f);  if (status)    {      return status;    }  status = gsl_multiroot_fdjacobian (func, x, f, GSL_SQRT_DBL_EPSILON, J);  if (status)    {      return status;    }  state->iter = 1;  state->fnorm = enorm (f);  state->ncfail = 0;  state->ncsuc = 0;  state->nslow1 = 0;  state->nslow2 = 0;  gsl_vector_set_all (dx, 0.0);  /* Store column norms in diag */  if (scale)    compute_diag (J, diag);  else    gsl_vector_set_all (diag, 1.0);  /* Set delta to factor |D x| or to factor if |D x| is zero */  state->delta = compute_delta (diag, x);  /* Factorize J into QR decomposition */  status = gsl_linalg_QR_decomp (J, tau);  if (status)    {      return status;    }  status = gsl_linalg_QR_unpack (J, tau, q, r);  return status;}static inthybrid_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x,                gsl_vector * f, gsl_vector * dx){  int status = hybrid_iterate_impl (vstate, func, x, f, dx, 0);  return status;}static inthybrids_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x,                 gsl_vector * f, gsl_vector * dx){  int status = hybrid_iterate_impl (vstate, func, x, f, dx, 1);  return status;}static inthybrid_iterate_impl (void *vstate, gsl_multiroot_function * func,                      gsl_vector * x,                     gsl_vector * f, gsl_vector * dx, int scale){  hybrid_state_t *state = (hybrid_state_t *) vstate;  const double fnorm = state->fnorm;  gsl_matrix *J = state->J;  gsl_matrix *q = state->q;  gsl_matrix *r = state->r;  gsl_vector *tau = state->tau;  gsl_vector *diag = state->diag;  gsl_vector *qtf = state->qtf;  gsl_vector *x_trial = state->x_trial;  gsl_vector *f_trial = state->f_trial;  gsl_vector *df = state->df;  gsl_vector *qtdf = state->qtdf;  gsl_vector *rdx = state->rdx;  gsl_vector *w = state->w;  gsl_vector *v = state->v;  double prered, actred;  double pnorm, fnorm1, fnorm1p;  double ratio;  double p1 = 0.1, p5 = 0.5, p001 = 0.001, p0001 = 0.0001;  /* Compute qtf = Q^T f */  compute_qtf (q, f, qtf);  /* Compute dogleg step */  dogleg (r, qtf, diag, state->delta, state->newton, state->gradient, dx);  /* Take a trial step */  compute_trial_step (x, dx, state->x_trial);  pnorm = scaled_enorm (diag, dx);  if (state->iter == 1)    {      if (pnorm < state->delta)        {          state->delta = pnorm;        }    }  /* Evaluate function at x + p */  {    int status = GSL_MULTIROOT_FN_EVAL (func, x_trial, f_trial);    if (status != GSL_SUCCESS)      {        return GSL_EBADFUNC;      }  }  /* Set df = f_trial - f */  compute_df (f_trial, f, df);  /* Compute the scaled actual reduction */  fnorm1 = enorm (f_trial);  actred = compute_actual_reduction (fnorm, fnorm1);  /* Compute rdx = R dx */  compute_rdx (r, dx, rdx);  /* Compute the scaled predicted reduction phi1p = |Q^T f + R dx| */  fnorm1p = enorm_sum (qtf, rdx);  prered = compute_predicted_reduction (fnorm, fnorm1p);  /* Compute the ratio of the actual to predicted reduction */  if (prered > 0)    {      ratio = actred / prered;    }  else    {      ratio = 0;    }  /* Update the step bound */  if (ratio < p1)    {      state->ncsuc = 0;      state->ncfail++;      state->delta *= p5;    }  else    {      state->ncfail = 0;      state->ncsuc++;      if (ratio >= p5 || state->ncsuc > 1)        state->delta = GSL_MAX (state->delta, pnorm / p5);      if (fabs (ratio - 1) <= p1)        state->delta = pnorm / p5;    }  /* Test for successful iteration */  if (ratio >= p0001)    {      gsl_vector_memcpy (x, x_trial);      gsl_vector_memcpy (f, f_trial);      state->fnorm = fnorm1;      state->iter++;    }  /* Determine the progress of the iteration */  state->nslow1++;  if (actred >= p001)    state->nslow1 = 0;  if (actred >= p1)    state->nslow2 = 0;  if (state->ncfail == 2)    {      gsl_multiroot_fdjacobian (func, x, f, GSL_SQRT_DBL_EPSILON, J);      state->nslow2++;      if (state->iter == 1)        {          if (scale)            compute_diag (J, diag);          state->delta = compute_delta (diag, x);        }      else        {          if (scale)            update_diag (J, diag);        }      /* Factorize J into QR decomposition */      gsl_linalg_QR_decomp (J, tau);      gsl_linalg_QR_unpack (J, tau, q, r);      return GSL_SUCCESS;    }  /* Compute qtdf = Q^T df, w = (Q^T df - R dx)/|dx|,  v = D^2 dx/|dx| */  compute_qtf (q, df, qtdf);  compute_wv (qtdf, rdx, dx, diag, pnorm, w, v);  /* Rank-1 update of the jacobian Q'R' = Q(R + w v^T) */  gsl_linalg_QR_update (q, r, w, v);  /* No progress as measured by jacobian evaluations */  if (state->nslow2 == 5)    {      return GSL_ENOPROGJ;    }  /* No progress as measured by function evaluations */  if (state->nslow1 == 10)    {      return GSL_ENOPROG;    }  return GSL_SUCCESS;}static voidhybrid_free (void *vstate){  hybrid_state_t *state = (hybrid_state_t *) vstate;  gsl_vector_free (state->v);  gsl_vector_free (state->w);  gsl_vector_free (state->rdx);  gsl_vector_free (state->qtdf);  gsl_vector_free (state->df);  gsl_vector_free (state->f_trial);  gsl_vector_free (state->x_trial);  gsl_vector_free (state->gradient);  gsl_vector_free (state->newton);  gsl_vector_free (state->qtf);  gsl_vector_free (state->diag);  gsl_vector_free (state->tau);  gsl_matrix_free (state->r);  gsl_matrix_free (state->q);  gsl_matrix_free (state->J);}static const gsl_multiroot_fsolver_type hybrid_type = {  "hybrid",                     /* name */  sizeof (hybrid_state_t),  &hybrid_alloc,  &hybrid_set,  &hybrid_iterate,  &hybrid_free};static const gsl_multiroot_fsolver_type hybrids_type = {  "hybrids",                    /* name */  sizeof (hybrid_state_t),  &hybrid_alloc,  &hybrids_set,  &hybrids_iterate,  &hybrid_free};const gsl_multiroot_fsolver_type *gsl_multiroot_fsolver_hybrid = &hybrid_type;const gsl_multiroot_fsolver_type *gsl_multiroot_fsolver_hybrids =  &hybrids_type;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品国自产拍免费| 日韩欧美一级精品久久| 美女任你摸久久| 日本一区中文字幕| 午夜精品久久久| 丝袜美腿亚洲综合| 日韩精品视频网站| 亚洲va中文字幕| 蜜桃视频第一区免费观看| 青青青爽久久午夜综合久久午夜| 日日摸夜夜添夜夜添亚洲女人| 视频一区中文字幕| 经典三级视频一区| 成人久久18免费网站麻豆| 波多野结衣视频一区| 91亚洲精品一区二区乱码| 在线视频欧美区| 欧美喷潮久久久xxxxx| 欧美高清hd18日本| 欧美变态tickle挠乳网站| 26uuu亚洲综合色欧美| 久久中文娱乐网| 国产精品久久久久一区二区三区共| 中文字幕亚洲视频| 天堂久久一区二区三区| 蜜臀av一级做a爰片久久| 国产精品白丝jk白祙喷水网站| 高清不卡在线观看| 欧美色偷偷大香| 日韩美女天天操| 亚洲视频一区二区免费在线观看 | 亚洲第一成人在线| 日本欧洲一区二区| 成人av电影在线观看| 欧美日韩电影在线播放| 国产欧美日本一区视频| 亚洲国产精品一区二区尤物区| 久久黄色级2电影| 91视频xxxx| 亚洲精品一区二区三区福利| 亚洲激情男女视频| 国产在线精品免费| 欧美乱妇一区二区三区不卡视频| 久久久久久久久伊人| 亚洲高清免费观看高清完整版在线观看| 久久精品国产99久久6| 色狠狠色狠狠综合| 国产三级一区二区| 日本在线不卡视频| 欧美三级资源在线| 国产精品国产成人国产三级| 美日韩黄色大片| 欧美制服丝袜第一页| 国产网红主播福利一区二区| 日本亚洲欧美天堂免费| 日本精品一区二区三区高清| 欧美国产精品一区二区| 卡一卡二国产精品| 91精品国产色综合久久久蜜香臀| 日韩码欧中文字| 成人h精品动漫一区二区三区| 欧美xxxxxxxx| 蜜臀久久99精品久久久久宅男| 欧美亚洲愉拍一区二区| 日产欧产美韩系列久久99| 91网上在线视频| 国产午夜精品久久久久久久| 国产在线精品一区二区夜色| 日韩视频免费观看高清在线视频| 亚洲一区二区五区| 欧美视频一区在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 99在线精品一区二区三区| 国产精品萝li| av亚洲产国偷v产偷v自拍| 国产精品视频第一区| 成人午夜电影网站| 亚洲欧美怡红院| 色天天综合色天天久久| 一区二区三区四区视频精品免费 | 欧美mv和日韩mv国产网站| 日韩av成人高清| 日韩三级在线观看| 久久精品国产免费| 久久久久久一二三区| 国产成人aaa| 最近中文字幕一区二区三区| 99久久夜色精品国产网站| 亚洲四区在线观看| 欧美综合视频在线观看| 亚洲高清不卡在线| 欧美成人女星排行榜| 国产最新精品免费| 国产精品你懂的在线欣赏| 色婷婷久久一区二区三区麻豆| 亚洲高清视频中文字幕| 日韩午夜在线播放| 国产精品一区二区x88av| 日韩美女啊v在线免费观看| 欧美日韩你懂的| 精品一区二区三区香蕉蜜桃 | 久久精品国产99久久6| 欧美激情艳妇裸体舞| 日本乱人伦一区| 精品综合免费视频观看| 国产精品成人免费| 欧美精品vⅰdeose4hd| 国产精品888| 亚洲成国产人片在线观看| 26uuu国产日韩综合| 色www精品视频在线观看| 免费在线观看视频一区| 国产精品蜜臀在线观看| 91精品国产91久久综合桃花| 不卡视频一二三| 热久久免费视频| 综合分类小说区另类春色亚洲小说欧美 | 欧美一级夜夜爽| 白白色 亚洲乱淫| 黄网站免费久久| 亚洲一区二区三区精品在线| 久久久久国产精品人| 欧美日韩亚洲综合在线 | 亚洲精品乱码久久久久久久久| 欧美人与z0zoxxxx视频| eeuss鲁片一区二区三区在线看| 日韩国产一二三区| 夜夜亚洲天天久久| 中文av字幕一区| 欧美大黄免费观看| 欧美日韩中文字幕精品| 成人av网站在线观看| 国产主播一区二区三区| 污片在线观看一区二区| 亚洲男女一区二区三区| 国产清纯白嫩初高生在线观看91 | 亚洲情趣在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美日韩高清影院| 在线免费观看一区| 色美美综合视频| 成人高清视频在线观看| 国产福利一区二区| 国产老妇另类xxxxx| 经典三级视频一区| 捆绑变态av一区二区三区| 日韩av一区二区三区| 亚洲国产日日夜夜| 午夜成人在线视频| 午夜精品久久久久久久久久久| 亚洲精品老司机| 亚洲黄色录像片| 亚洲一区二区三区中文字幕| 亚洲激情图片qvod| 亚洲国产美女搞黄色| 日韩高清一区在线| 奇米在线7777在线精品| 蜜臀av一区二区在线免费观看 | 亚洲v中文字幕| 日韩av成人高清| 国产在线视频一区二区| 国产精品中文字幕一区二区三区| 国产激情精品久久久第一区二区| 国产成人精品影视| 成人黄色片在线观看| 91麻豆精品秘密| 欧美三级蜜桃2在线观看| 欧美猛男男办公室激情| 91精品婷婷国产综合久久性色| 欧美一区二区福利在线| 日韩欧美一区二区三区在线| 久久久久久久性| 亚洲欧洲精品一区二区三区不卡| 亚洲欧美日韩国产手机在线 | 成人高清视频在线| 91国偷自产一区二区三区成为亚洲经典 | 在线电影国产精品| 日韩欧美成人一区| 国产精品丝袜在线| 亚洲福利一二三区| 国产综合成人久久大片91| 国产**成人网毛片九色| 欧美三级日韩在线| 久久精品人人做人人综合| 亚洲免费观看高清完整版在线观看 | 中文字幕免费一区| 亚洲综合成人在线| 国产乱码精品一区二区三| 91免费观看视频在线| 欧美成人r级一区二区三区| 国产精品不卡在线| 美女在线一区二区| 97久久精品人人爽人人爽蜜臀| 91精品久久久久久久99蜜桃 | 欧美老年两性高潮| 国产亚洲一区二区三区在线观看| 亚洲品质自拍视频| 精品一区二区在线看| 69精品人人人人| 一区二区国产盗摄色噜噜|