⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thybrd1.c

📁 该程序实现了非线性最小二乘问题和非线性方程组的解法
💻 C
字号:
/*      driver for hybrd1 example. */#include <stdio.h>#include <math.h>#include <cminpack.h>int fcn(void *p, int n, const double *x, double *fvec, int iflag);int main(){  int j, n, info, lwa;  double tol, fnorm;  double x[9], fvec[9], wa[180];  n = 9;/*      the following starting values provide a rough solution. */  for (j=1; j<=9; j++)    {      x[j-1] = -1.;    }  lwa = 180;/*      set tol to the square root of the machine precision. *//*      unless high solutions are required, *//*      this is the recommended setting. */  tol = sqrt(dpmpar(1));  info = hybrd1(fcn, 0, n, x, fvec, tol, wa, lwa);  fnorm = enorm(n, fvec);  printf("     final L2 norm of the residuals %15.7g\n", fnorm);  printf("     exit parameter                 %10i\n", info);  printf("     final approximates solution\n");  for (j=1; j<=n; j++) printf("%s%15.7g",j%3==1?"\n     ":"", x[j-1]);  printf("\n");  return 0;}int fcn(void *p, int n, const double *x, double *fvec, int iflag){/*      subroutine fcn for hybrd1 example. */  int k;  double one=1, temp, temp1, temp2, three=3, two=2, zero=0;  for (k=1; k <= n; k++)    {      temp = (three - two*x[k-1])*x[k-1];      temp1 = zero;      if (k != 1) temp1 = x[k-1-1];      temp2 = zero;      if (k != n) temp2 = x[k+1-1];      fvec[k-1] = temp - temp1 - two*temp2 + one;    }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -