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

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

?? dogleg.c

?? 該文件為c++的數學函數庫!是一個非常有用的編程工具.它含有各種數學函數,為科學計算、工程應用等程序編寫提供方便!
?? C
字號:
/* 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;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产免费一区二区三区四区 | 亚洲综合av网| 视频一区二区三区入口| 国产sm精品调教视频网站| 911精品国产一区二区在线| 中文子幕无线码一区tr| 日韩高清不卡一区二区三区| 成人国产亚洲欧美成人综合网 | 国产.精品.日韩.另类.中文.在线.播放| 99视频一区二区| 精品国产99国产精品| 亚洲高清视频的网址| 91视频国产观看| 国产视频一区二区在线| 久久成人免费网| 国产精品少妇自拍| 韩日av一区二区| 日韩亚洲国产中文字幕欧美| 一区二区成人在线视频| 成人av电影免费在线播放| 精品91自产拍在线观看一区| 日韩国产一二三区| 欧美婷婷六月丁香综合色| 国产精品成人午夜| 国产999精品久久久久久绿帽| 欧美va亚洲va国产综合| 蜜臀久久99精品久久久画质超高清| 欧美日本韩国一区| 亚洲视频一二三| 成人av免费在线播放| 国产精品天美传媒沈樵| 国产成人av网站| 欧美极品美女视频| 成人一区二区视频| 国产精品视频yy9299一区| 大桥未久av一区二区三区中文| 国产日韩成人精品| av成人免费在线| 亚洲天堂2016| 色综合久久久久网| 亚洲mv在线观看| 欧美精品aⅴ在线视频| 三级欧美韩日大片在线看| 欧美精品日韩一区| 国产在线一区观看| 国产精品高清亚洲| 欧美视频中文一区二区三区在线观看| 国产一区二区美女| 欧美绝品在线观看成人午夜影视| 亚洲亚洲人成综合网络| 欧美肥妇free| 国产精品原创巨作av| 欧美国产1区2区| 在线观看亚洲精品| 久久精品国产一区二区三| 国产欧美日韩在线视频| 色综合久久88色综合天天免费| 一区二区三区鲁丝不卡| 日韩欧美美女一区二区三区| 国产精品夜夜爽| 一区二区三区不卡在线观看| 欧美一区二区三区精品| 成人丝袜18视频在线观看| 亚洲成人自拍网| 久久精品男人天堂av| 欧美综合在线视频| 欧美性xxxxxx少妇| 日韩精品色哟哟| 国产午夜精品一区二区三区四区 | 高清在线不卡av| 亚洲一线二线三线久久久| 欧美一级电影网站| 99国内精品久久| 另类欧美日韩国产在线| 国产精品私人自拍| 日韩欧美一级二级三级| 99re66热这里只有精品3直播| 午夜电影网亚洲视频| 国产精品色眯眯| 日韩欧美久久久| 色婷婷久久久亚洲一区二区三区 | 免费观看一级欧美片| 国产欧美日韩在线看| 7777精品久久久大香线蕉 | 久久精品视频一区| 制服丝袜亚洲网站| 色综合激情久久| 国产馆精品极品| 奇米精品一区二区三区在线观看| 日韩伦理av电影| 国产欧美一区二区精品久导航| 51精品秘密在线观看| 色综合视频一区二区三区高清| 国产麻豆成人传媒免费观看| www.久久久久久久久| 麻豆成人久久精品二区三区小说| 亚洲精品欧美专区| 中文字幕欧美国产| 久久亚洲一区二区三区四区| 欧美夫妻性生活| 欧美色成人综合| 在线观看亚洲一区| 色999日韩国产欧美一区二区| 成人av在线资源网| 丁香婷婷综合五月| 国产传媒久久文化传媒| 韩国av一区二区三区在线观看| 日韩av电影天堂| 午夜视频一区二区三区| 亚洲国产精品久久艾草纯爱| 亚洲精品中文在线观看| 综合电影一区二区三区| 亚洲三级免费观看| 亚洲柠檬福利资源导航| 综合欧美一区二区三区| 亚洲欧美偷拍卡通变态| 亚洲色欲色欲www| 亚洲欧美日韩人成在线播放| 自拍偷拍国产精品| 亚洲精品成人悠悠色影视| 亚洲精品五月天| 国产人伦精品一区二区| 欧美一级夜夜爽| 欧美成人猛片aaaaaaa| 日韩一区二区三区精品视频| 亚洲天堂成人网| 一卡二卡三卡日韩欧美| 五月综合激情网| 免费观看在线综合| 国产麻豆成人传媒免费观看| 成人免费视频网站在线观看| 成人sese在线| 欧美日韩亚洲综合一区二区三区| 欧美午夜免费电影| 日韩欧美一区在线| 久久精品欧美日韩精品 | 亚洲丝袜精品丝袜在线| 亚洲乱码中文字幕综合| 视频一区欧美精品| 国产精品亚洲一区二区三区妖精 | 激情综合色综合久久| 国产91精品精华液一区二区三区| av不卡在线观看| 欧美三级电影在线观看| 日韩三级av在线播放| 国产精品久久久久aaaa| 亚洲综合一区二区精品导航| 日本不卡中文字幕| 国产99久久久国产精品| 欧美日韩中文一区| 精品国产1区二区| 亚洲日本青草视频在线怡红院| 午夜伊人狠狠久久| 国产精品一区一区| 欧美最猛性xxxxx直播| 久久综合999| 亚洲成av人片一区二区| 国产福利视频一区二区三区| 色88888久久久久久影院野外 | 精品视频在线免费看| 午夜精品福利一区二区三区av| 久久精品99国产精品| 91在线视频在线| 2024国产精品| 亚洲成精国产精品女| 高清成人免费视频| 日韩亚洲欧美在线| 亚洲国产sm捆绑调教视频| 国产大片一区二区| 日韩一区二区电影网| 亚洲另类在线一区| 国产99精品国产| 精品国产凹凸成av人网站| 亚洲一二三区不卡| 97se亚洲国产综合自在线| 精品国产亚洲在线| 日韩精品亚洲一区二区三区免费| 91天堂素人约啪| 国产欧美中文在线| 黄色精品一二区| 欧美一区二区三区免费大片| 亚洲国产精品一区二区久久恐怖片 | 精品国产精品一区二区夜夜嗨| 亚洲一区二区三区国产| 99国产精品久久久久| 国产欧美日产一区| 国产精品88av| 久久众筹精品私拍模特| 精品一区二区在线播放| 欧美一二三区在线| 日韩国产在线观看一区| 欧美人与z0zoxxxx视频| 亚洲自拍偷拍九九九| 在线观看免费视频综合| 亚洲美女在线一区| 色综合天天综合网天天看片| 久久www免费人成看片高清| 欧美色手机在线观看| 亚洲夂夂婷婷色拍ww47| 欧美怡红院视频|