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

📄 linreg.cpp

📁 c++的数学物理方程数值算法源程序。这是"Numerical Methods for Physics"第二版的源程序。
💻 CPP
字号:
#include "NumMeth.h"void linreg(Matrix x, Matrix y, Matrix sigma,            Matrix &a_fit, Matrix &sig_a, Matrix &yy, double &chisqr) {// Function to perform linear regression (fit a line)// Inputs//   x       Independent variable//   y       Dependent variable//   sigma   Estimated error in y// Outputs//   a_fit   Fit parameters; a(1) is intercept, a(2) is slope//   sig_a   Estimated error in the parameters a()//   yy      Curve fit to the data//   chisqr  Chi squared statistic  //* Evaluate various sigma sums  int i, nData = x.nRow();  double sigmaTerm;  double s = 0.0, sx = 0.0, sy = 0.0, sxy = 0.0, sxx = 0.0;  for( i=1; i<=nData; i++ ) {    sigmaTerm = 1.0/(sigma(i)*sigma(i));      s += sigmaTerm;                  sx += x(i) * sigmaTerm;    sy += y(i) * sigmaTerm;    sxy += x(i) * y(i) * sigmaTerm;    sxx += x(i) * x(i) * sigmaTerm;  }  double denom = s*sxx - sx*sx;  //* Compute intercept a_fit(1) and slope a_fit(2)  a_fit(1) = (sxx*sy - sx*sxy)/denom;  a_fit(2) = (s*sxy - sx*sy)/denom;  //* Compute error bars for intercept and slope  sig_a(1) = sqrt(sxx/denom);  sig_a(2) = sqrt(s/denom);  //* Evaluate curve fit at each data point and compute Chi^2  chisqr = 0.0;  for( i=1; i<=nData; i++ ) {    yy(i) = a_fit(1)+a_fit(2)*x(i);     // Curve fit to the data    double delta = (y(i)-yy(i))/sigma(i);    chisqr += delta*delta;  // Chi square  }}

⌨️ 快捷键说明

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