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

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

?? dogleg.c

?? GNU Scientific Library,C語言開發(fā)的數(shù)值方面的函數(shù)庫(kù)
?? C
字號(hào):
/* multiroots/dogleg.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., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "enorm.c"static void compute_diag (const gsl_matrix * J, gsl_vector * diag);static void update_diag (const gsl_matrix * J, gsl_vector * diag);static double compute_delta (gsl_vector * diag, gsl_vector * x);static void compute_df (const gsl_vector * f_trial, const gsl_vector * f, gsl_vector * df);static void compute_wv (const gsl_vector * qtdf, const gsl_vector *rdx, const gsl_vector *dx, const gsl_vector *diag, double pnorm, gsl_vector * w, gsl_vector * v);static double scaled_enorm (const gsl_vector * d, const gsl_vector * f);static double scaled_enorm (const gsl_vector * d, const gsl_vector * f) {  double e2 = 0 ;  size_t i, n = f->size ;  for (i = 0; i < n ; i++) {    double fi= gsl_vector_get(f, i);    double di= gsl_vector_get(d, i);    double u = di * fi;    e2 += u * u ;  }  return sqrt(e2);}static double enorm_sum (const gsl_vector * a, const gsl_vector * b);static double enorm_sum (const gsl_vector * a, const gsl_vector * b) {  double e2 = 0 ;  size_t i, n = a->size ;  for (i = 0; i < n ; i++) {    double ai= gsl_vector_get(a, i);    double bi= gsl_vector_get(b, i);    double u = ai + bi;    e2 += u * u ;  }  return sqrt(e2);}static voidcompute_wv (const gsl_vector * qtdf, const gsl_vector *rdx, const gsl_vector *dx, const gsl_vector *diag, double pnorm, gsl_vector * w, gsl_vector * v){  size_t i, n = qtdf->size;  for (i = 0; i < n; i++)    {      double qtdfi = gsl_vector_get (qtdf, i);      double rdxi = gsl_vector_get (rdx, i);      double dxi = gsl_vector_get (dx, i);      double diagi = gsl_vector_get (diag, i);      gsl_vector_set (w, i, (qtdfi - rdxi) / pnorm);      gsl_vector_set (v, i, diagi * diagi * dxi / pnorm);    }}static voidcompute_df (const gsl_vector * f_trial, const gsl_vector * f, gsl_vector * df){  size_t i, n = f->size;  for (i = 0; i < n; i++)    {      double dfi = gsl_vector_get (f_trial, i) - gsl_vector_get (f, i);      gsl_vector_set (df, i, dfi);    }}static voidcompute_diag (const gsl_matrix * J, gsl_vector * diag){  size_t i, j, n = diag->size;  for (j = 0; j < n; j++)    {      double sum = 0;      for (i = 0; i < n; i++)        {          double Jij = gsl_matrix_get (J, i, j);          sum += Jij * Jij;        }      if (sum == 0)        sum = 1.0;      gsl_vector_set (diag, j, sqrt (sum));    }}static voidupdate_diag (const gsl_matrix * J, gsl_vector * diag){  size_t i, j, n = diag->size;  for (j = 0; j < n; j++)    {      double cnorm, diagj, sum = 0;      for (i = 0; i < n; i++)        {          double Jij = gsl_matrix_get (J, i, j);          sum += Jij * Jij;        }      if (sum == 0)        sum = 1.0;      cnorm = sqrt (sum);      diagj = gsl_vector_get (diag, j);      if (cnorm > diagj)        gsl_vector_set (diag, j, cnorm);    }}static doublecompute_delta (gsl_vector * diag, gsl_vector * x){  double Dx = scaled_enorm (diag, x);  double factor = 100;  return (Dx > 0) ? factor * Dx : factor;}static doublecompute_actual_reduction (double fnorm, double fnorm1){  double actred;  if (fnorm1 < fnorm)    {      double u = fnorm1 / fnorm;      actred = 1 - u * u;    }  else    {      actred = -1;    }  return actred;}static doublecompute_predicted_reduction (double fnorm, double fnorm1){  double prered;  if (fnorm1 < fnorm)    {      double u = fnorm1 / fnorm;      prered = 1 - u * u;    }  else    {      prered = 0;    }  return prered;}static void compute_qtf (const gsl_matrix * q, const gsl_vector * f, gsl_vector * qtf){  size_t i, j, N = f->size ;  for (j = 0; j < N; j++)    {      double sum = 0;      for (i = 0; i < N; i++)        sum += gsl_matrix_get (q, i, j) * gsl_vector_get (f, i);      gsl_vector_set (qtf, j, sum);    }}static void compute_rdx (const gsl_matrix * r, const gsl_vector * dx, gsl_vector * rdx){  size_t i, j, N = dx->size ;  for (i = 0; i < N; i++)    {      double sum = 0;      for (j = i; j < N; j++)        {          sum += gsl_matrix_get (r, i, j) * gsl_vector_get (dx, j);        }      gsl_vector_set (rdx, i, sum);    }}static voidcompute_trial_step (gsl_vector *x, gsl_vector * dx, gsl_vector * x_trial){  size_t i, N = x->size;  for (i = 0; i < N; i++)    {      double pi = gsl_vector_get (dx, i);      double xi = gsl_vector_get (x, i);      gsl_vector_set (x_trial, i, xi + pi);    }}static intnewton_direction (const gsl_matrix * r, const gsl_vector * qtf, gsl_vector * p){  const size_t N = r->size2;  size_t i;  int status;  status = gsl_linalg_R_solve (r, qtf, p);#ifdef DEBUG  printf("rsolve status = %d\n", status);#endif  for (i = 0; i < N; i++)    {      double pi = gsl_vector_get (p, i);      gsl_vector_set (p, i, -pi);    }  return status;}static voidgradient_direction (const gsl_matrix * r, const gsl_vector * qtf,                    const gsl_vector * diag, gsl_vector * g){  const size_t M = r->size1;  const size_t N = r->size2;  size_t i, j;  for (j = 0; j < M; j++)    {      double sum = 0;      double dj;      for (i = 0; i < N; i++)        {          sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i);        }      dj = gsl_vector_get (diag, j);      gsl_vector_set (g, j, -sum / dj);    }}static voidminimum_step (double gnorm, const gsl_vector * diag, gsl_vector * g){  const size_t N = g->size;  size_t i;  for (i = 0; i < N; i++)    {      double gi = gsl_vector_get (g, i);      double di = gsl_vector_get (diag, i);      gsl_vector_set (g, i, (gi / gnorm) / di);    }}static voidcompute_Rg (const gsl_matrix * r, const gsl_vector * gradient, gsl_vector * Rg){  const size_t N = r->size2;  size_t i, j;  for (i = 0; i < N; i++)    {      double sum = 0;      for (j = i; j < N; j++)        {          double gj = gsl_vector_get (gradient, j);          double rij = gsl_matrix_get (r, i, j);          sum += rij * gj;        }      gsl_vector_set (Rg, i, sum);    }}static voidscaled_addition (double alpha, gsl_vector * newton, double beta, gsl_vector * gradient, gsl_vector * p){  const size_t N = p->size;  size_t i;  for (i = 0; i < N; i++)    {      double ni = gsl_vector_get (newton, i);      double gi = gsl_vector_get (gradient, i);      gsl_vector_set (p, i, alpha * ni + beta * gi);    }}static intdogleg (const gsl_matrix * r, const gsl_vector * qtf,        const gsl_vector * diag, double delta,        gsl_vector * newton, gsl_vector * gradient, gsl_vector * p){  double qnorm, gnorm, sgnorm, bnorm, temp;  newton_direction (r, qtf, newton);#ifdef DEBUG  printf("newton = "); gsl_vector_fprintf(stdout, newton, "%g"); printf("\n");#endif  qnorm = scaled_enorm (diag, newton);  if (qnorm <= delta)    {      gsl_vector_memcpy (p, newton);#ifdef DEBUG      printf("took newton (qnorm = %g  <=   delta = %g)\n", qnorm, delta);#endif      return GSL_SUCCESS;    }  gradient_direction (r, qtf, diag, gradient);#ifdef DEBUG  printf("grad = "); gsl_vector_fprintf(stdout, gradient, "%g"); printf("\n");#endif  gnorm = enorm (gradient);  if (gnorm == 0)    {      double alpha = delta / qnorm;      double beta = 0;      scaled_addition (alpha, newton, beta, gradient, p);#ifdef DEBUG      printf("took scaled newton because gnorm = 0\n");#endif      return GSL_SUCCESS;    }  minimum_step (gnorm, diag, gradient);  compute_Rg (r, gradient, p);  /* Use p as temporary space to compute Rg */#ifdef DEBUG  printf("mingrad = "); gsl_vector_fprintf(stdout, gradient, "%g"); printf("\n");  printf("Rg = "); gsl_vector_fprintf(stdout, p, "%g"); printf("\n");#endif  temp = enorm (p);  sgnorm = (gnorm / temp) / temp;  if (sgnorm > delta)    {      double alpha = 0;      double beta = delta;      scaled_addition (alpha, newton, beta, gradient, p);#ifdef DEBUG      printf("took gradient\n");#endif      return GSL_SUCCESS;    }  bnorm = enorm (qtf);  {    double bg = bnorm / gnorm;    double bq = bnorm / qnorm;    double dq = delta / qnorm;    double dq2 = dq * dq;    double sd = sgnorm / delta;    double sd2 = sd * sd;    double t1 = bg * bq * sd;    double u = t1 - dq;    double t2 = t1 - dq * sd2 + sqrt (u * u + (1-dq2) * (1 - sd2));    double alpha = dq * (1 - sd2) / t2;    double beta = (1 - alpha) * sgnorm;#ifdef DEBUG    printf("bnorm = %g\n", bnorm);    printf("gnorm = %g\n", gnorm);    printf("qnorm = %g\n", qnorm);    printf("delta = %g\n", delta);    printf("alpha = %g   beta = %g\n", alpha, beta);    printf("took scaled combination of newton and gradient\n");#endif    scaled_addition (alpha, newton, beta, gradient, p);  }  return GSL_SUCCESS;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日本韩国| 一级中文字幕一区二区| jlzzjlzz欧美大全| 亚洲一区二区三区三| 日韩欧美中文一区| 91视视频在线观看入口直接观看www | 国产精品丝袜黑色高跟| 欧美中文字幕一区二区三区亚洲| 韩国理伦片一区二区三区在线播放| 国产精品久久久久影院| 制服丝袜亚洲播放| 97精品超碰一区二区三区| 奇米精品一区二区三区在线观看| 中文字幕一区视频| 日韩午夜三级在线| 欧美丝袜丝交足nylons| 国产一区不卡视频| 日本不卡不码高清免费观看| 成人免费在线观看入口| 日韩精品一区二区三区蜜臀 | 亚洲精品乱码久久久久久黑人 | 国内精品不卡在线| 亚洲午夜影视影院在线观看| 国产精品欧美精品| 精品久久久影院| 538在线一区二区精品国产| 97久久超碰国产精品| 国产成人在线视频播放| 免费人成在线不卡| 日日夜夜精品视频天天综合网| 最新国产の精品合集bt伙计| 久久久www免费人成精品| 日韩一级免费一区| 欧美高清激情brazzers| 在线观看区一区二| 色域天天综合网| 成人性色生活片免费看爆迷你毛片| 久久国产精品99精品国产| 亚洲成在线观看| 一区二区三区美女视频| 国产精品第四页| 中国av一区二区三区| 国产欧美综合在线观看第十页| 久久先锋资源网| 精品少妇一区二区三区| 精品欧美一区二区三区精品久久| 欧美伦理电影网| 欧美日韩国产综合一区二区| 在线观看91精品国产入口| www.亚洲在线| 91蜜桃网址入口| 91蜜桃网址入口| 在线免费观看日韩欧美| 欧美视频三区在线播放| 欧美日韩国产一级片| 欧美麻豆精品久久久久久| 69精品人人人人| 欧美丰满高潮xxxx喷水动漫| 欧美精品xxxxbbbb| 91精品国产aⅴ一区二区| 欧美一区二区视频观看视频| 日韩欧美一二区| 亚洲精品一区二区三区福利 | 精品区一区二区| 国产午夜亚洲精品不卡| 国产精品视频观看| 亚洲精品国产精华液| 午夜精品福利一区二区三区av | 在线观看欧美精品| 欧美一区二区在线播放| 久久奇米777| 综合久久久久综合| 亚洲精品国产a久久久久久| 亚洲国产色一区| 麻豆传媒一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 91亚洲精品久久久蜜桃| 欧美人动与zoxxxx乱| 精品国产制服丝袜高跟| 综合在线观看色| 日韩有码一区二区三区| 国产麻豆成人精品| 91在线免费看| 日韩视频123| 中文字幕中文字幕中文字幕亚洲无线| 亚洲永久精品大片| 久久99精品国产麻豆婷婷| 成人免费高清在线| 欧美日韩成人高清| 久久毛片高清国产| 亚洲一区二区三区在线看| 一本久久a久久精品亚洲| 欧美美女一区二区| 国产精品久久久久久妇女6080| 亚洲一区二区三区视频在线| 国产精品18久久久久久久久久久久 | 国产精品视频观看| 日韩国产一区二| 成人av网址在线观看| 日韩午夜在线播放| 亚洲欧美日韩国产中文在线| 久久国产精品99久久久久久老狼| 99久久夜色精品国产网站| 日韩午夜激情视频| 亚洲综合激情另类小说区| 久久成人免费网| 欧美视频完全免费看| 亚洲国产精品成人综合色在线婷婷| 亚洲国产sm捆绑调教视频| 岛国精品在线观看| 欧美成人一区二区三区在线观看| 一区二区在线观看免费| 国产精品一区二区在线观看不卡| 欧美日韩精品久久久| 亚洲欧美在线aaa| 国产一区二区不卡| 6080国产精品一区二区| 亚洲欧美一区二区三区久本道91| 久久 天天综合| 91麻豆精品国产91久久久久久久久 | 国产天堂亚洲国产碰碰| 日本中文字幕不卡| 欧美午夜片在线观看| 亚洲日韩欧美一区二区在线| 国产乱子轮精品视频| 日韩视频在线你懂得| 亚洲第一电影网| 欧美亚洲一区二区在线| 综合色天天鬼久久鬼色| 99视频在线观看一区三区| 国产欧美一区二区精品久导航| 久久精品国产色蜜蜜麻豆| 欧美精品xxxxbbbb| 午夜精品久久久久久| 欧美三区在线视频| 亚洲伊人伊色伊影伊综合网| 91麻豆精品在线观看| 人妖欧美一区二区| 欧美妇女性影城| 日韩中文字幕区一区有砖一区| 欧美亚洲图片小说| 亚洲福利一二三区| 欧美三级电影在线看| 亚洲第一在线综合网站| 欧美老女人第四色| 视频一区欧美日韩| 3d动漫精品啪啪| 免费成人美女在线观看.| 日韩一区二区麻豆国产| 久久99精品久久久久久动态图| 日韩欧美在线网站| 国产主播一区二区| 国产喂奶挤奶一区二区三区| 成人在线视频一区二区| 亚洲欧美影音先锋| 91成人在线免费观看| 午夜精品在线视频一区| 欧美一区二区三区四区久久| 久久国产精品99精品国产| 久久久91精品国产一区二区精品 | 成人国产电影网| 亚洲免费观看高清| 欧美日韩国产一二三| 日本午夜一区二区| 久久久午夜电影| 成人av资源网站| 亚洲综合在线免费观看| 7777精品伊人久久久大香线蕉完整版 | 欧美喷水一区二区| 麻豆精品视频在线观看| 国产无人区一区二区三区| 91偷拍与自偷拍精品| 亚洲成人免费影院| 欧美mv日韩mv国产| 99久久精品免费看国产免费软件| 亚洲黄一区二区三区| 欧美精品乱人伦久久久久久| 国内一区二区视频| 亚洲欧美日韩一区二区三区在线观看| 欧美色网一区二区| 久草这里只有精品视频| 亚洲欧洲综合另类| 91精品国产乱| 99久久婷婷国产| 日本va欧美va精品发布| 国产精品乱子久久久久| 欧美伦理电影网| www.日本不卡| 日本中文字幕一区| 中文字幕中文字幕在线一区| 制服.丝袜.亚洲.中文.综合| 成人一区二区在线观看| 亚洲电影在线免费观看| 欧美国产欧美综合| 欧美蜜桃一区二区三区| 成人av在线看| 精品一区二区三区视频在线观看| 《视频一区视频二区| 精品日韩一区二区三区| 色视频一区二区|