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

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

?? hybrid.c

?? This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY without ev
?? C
字號:
/* multiroots/hybrid.c *  * Copyright (C) 1996, 1997, 1998, 1999, 2000 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 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., 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 set (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 iterate (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 = set (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 = set (vstate, func, x, f, dx, 1);  return status;}static intset (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 = iterate (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 = iterate (vstate, func, x, f, dx, 1);  return status;}static intiterate (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一区二区三区免费野_久草精品视频
99精品欧美一区二区三区综合在线| 日韩成人伦理电影在线观看| 欧美久久免费观看| 国产精品乡下勾搭老头1| 一区二区三区四区蜜桃| 久久美女艺术照精彩视频福利播放| 色综合久久中文综合久久97| 看片的网站亚洲| 亚洲一区二区三区中文字幕在线| 久久精品免视看| 91超碰这里只有精品国产| 国产91在线|亚洲| 日韩精品亚洲专区| 亚洲免费观看高清完整版在线 | 成人午夜激情视频| 偷拍日韩校园综合在线| 中文字幕一区二区三区在线不卡 | 日本aⅴ免费视频一区二区三区 | 欧美三级在线播放| 91视频www| 成人免费视频app| 激情六月婷婷久久| 美女精品自拍一二三四| 亚洲小说欧美激情另类| 亚洲免费av观看| 国产精品欧美经典| 中文字幕av资源一区| 精品国产乱码久久久久久久久| 欧美日韩国产免费一区二区| 91在线观看成人| 99麻豆久久久国产精品免费| 国产成人日日夜夜| 国产suv一区二区三区88区| 韩国精品在线观看| 黄色小说综合网站| 国产在线一区二区| 国产精品一卡二卡| 国产精品自拍毛片| 成人精品电影在线观看| 东方aⅴ免费观看久久av| 国产美女视频91| 粉嫩一区二区三区性色av| 国产成人在线影院| 成人午夜伦理影院| 91蜜桃免费观看视频| 91美女片黄在线观看| 色屁屁一区二区| 欧美亚洲国产一区二区三区va| 91丝袜呻吟高潮美腿白嫩在线观看| 波多野结衣在线一区| av不卡免费电影| 日本高清不卡一区| 制服丝袜在线91| 精品久久久久久久一区二区蜜臀| 欧美成人福利视频| 国产午夜精品久久久久久久| 国产精品理论片在线观看| 亚洲精品乱码久久久久久黑人| 一区二区三区美女| 日本不卡的三区四区五区| 久久er99热精品一区二区| 国产高清成人在线| 91麻豆精品一区二区三区| 欧美日韩一二三| 精品国产一区二区在线观看| 国产三级欧美三级日产三级99 | 成人免费高清在线观看| 91免费小视频| 欧美福利视频导航| 欧美国产日韩a欧美在线观看| 国产精品乱码人人做人人爱 | 亚洲免费在线看| 性感美女极品91精品| 激情伊人五月天久久综合| 成人av网站大全| 欧美电影在线免费观看| 久久蜜桃香蕉精品一区二区三区| 亚洲美女在线国产| 蜜臀91精品一区二区三区 | 丁香啪啪综合成人亚洲小说 | 日韩高清欧美激情| 国产高清久久久久| 欧美精品三级日韩久久| 国产欧美精品在线观看| 一区二区在线观看免费视频播放| 秋霞影院一区二区| 日本道色综合久久| 国产亚洲欧美日韩俺去了| 亚洲欧洲综合另类| 韩国精品一区二区| 欧美日韩国产经典色站一区二区三区| 亚洲午夜久久久久久久久久久| 美女爽到高潮91| 在线观看不卡视频| 日本一区二区三区高清不卡 | 丝袜诱惑亚洲看片| 高清在线观看日韩| 日韩欧美三级在线| 亚洲蜜桃精久久久久久久| 日本一区二区三区四区| 91九色02白丝porn| 91福利国产精品| 91精品国产手机| 日韩美女视频一区二区 | 一区二区三区美女视频| 国产精品77777竹菊影视小说| 欧美日韩一卡二卡三卡| 国产精品国产三级国产| 精一区二区三区| 91黄色激情网站| 亚洲欧洲99久久| 国产精品99久久久久久似苏梦涵 | 日韩女优视频免费观看| 亚洲精品日日夜夜| 成人黄色软件下载| 久久精品亚洲精品国产欧美| 日韩国产精品久久| 欧美美女黄视频| 亚洲一区在线看| 99re8在线精品视频免费播放| 久久久久97国产精华液好用吗| 日韩av一二三| 91精品国产乱码久久蜜臀| 亚洲一区二区三区在线| 色婷婷久久久久swag精品 | 美女视频一区在线观看| 欧美日韩在线播放三区| 一区二区三区色| 99re成人在线| 一区二区在线电影| 色美美综合视频| 一二三区精品福利视频| 91麻豆国产香蕉久久精品| 亚洲蜜桃精久久久久久久| 色婷婷av久久久久久久| 亚洲精品视频一区| 色综合久久综合网欧美综合网 | 国产精品久久久久久户外露出| 国产美女精品人人做人人爽| 久久免费偷拍视频| 国产高清视频一区| 欧美国产精品中文字幕| 成人国产精品免费网站| 国产亚洲成av人在线观看导航| 国产成人aaaa| 亚洲视频一二区| 色哟哟精品一区| 肉色丝袜一区二区| 精品国产免费一区二区三区香蕉| 激情欧美一区二区三区在线观看| 久久综合丝袜日本网| 东方欧美亚洲色图在线| 亚洲欧美一区二区三区极速播放| 日本高清成人免费播放| 天天影视色香欲综合网老头| 日韩一区二区视频在线观看| 激情图区综合网| 国产精品免费久久| 欧美日韩综合一区| 精品一区二区三区在线播放视频| 欧美国产国产综合| 色综合视频在线观看| 日产国产欧美视频一区精品| 精品黑人一区二区三区久久| 国产a久久麻豆| 一区二区三区日韩精品视频| 在线播放国产精品二区一二区四区| 蜜桃在线一区二区三区| 国产精品欧美精品| 欧美日韩小视频| 国产露脸91国语对白| 亚洲女爱视频在线| 欧美哺乳videos| 91首页免费视频| 久久成人免费网| 亚洲天天做日日做天天谢日日欢| 欧美猛男gaygay网站| 国产一区二区三区黄视频| 亚洲日本丝袜连裤袜办公室| 欧美日韩国产综合一区二区| 狠狠色狠狠色综合日日91app| 中文字幕一区二区三中文字幕| 69堂精品视频| www..com久久爱| 蜜桃视频在线一区| 亚洲精品成人悠悠色影视| 精品国产污网站| 欧美性受极品xxxx喷水| 国产一区二区三区四| 亚洲综合一区在线| 国产午夜精品福利| 欧美一卡二卡三卡| 91福利视频在线| 丰满亚洲少妇av| 蜜桃视频一区二区三区在线观看| 亚洲欧美日韩综合aⅴ视频| 精品国产一区二区三区久久久蜜月 | 欧美吻胸吃奶大尺度电影 | 亚洲动漫第一页| 欧美激情一区二区三区不卡|