📄 xmmid.cpp
字号:
#include <iostream>
#include <iomanip>
#include "nr.h"
using namespace std;
// Driver for routine mmid
void derivs(const DP x, Vec_I_DP &y, Vec_O_DP &dydx)
{
dydx[0]= -y[1];
dydx[1]=y[0]-(1.0/x)*y[1];
dydx[2]=y[1]-(2.0/x)*y[2];
dydx[3]=y[2]-(3.0/x)*y[3];
}
int main(void)
{
const int NVAR=4;
const DP X1=1.0,HTOT=0.5;
int i;
DP b1,b2,b3,b4,xf=X1+HTOT;
Vec_DP y(NVAR),yout(NVAR),dydx(NVAR);
y[0]=NR::bessj0(X1);
y[1]=NR::bessj1(X1);
y[2]=NR::bessj(2,X1);
y[3]=NR::bessj(3,X1);
derivs(X1,y,dydx);
b1=NR::bessj0(xf);
b2=NR::bessj1(xf);
b3=NR::bessj(2,xf);
b4=NR::bessj(3,xf);
cout << "First four Bessel functions:" << endl;
cout << fixed;
for (i=5;i<=50;i+=5) {
NR::mmid(y,dydx,X1,HTOT,i,yout,derivs);
cout << setprecision(2);
cout << endl << "x=" << setw(5) << X1 << " to ";
cout << setw(5) << (X1+HTOT) << " in " << i << " steps" << endl;
cout << setprecision(6);
cout << setw(13) << "integration" << setw(10) << "bessj" << endl;
cout << setw(12) << yout[0] << setw(12) << b1 << endl;
cout << setw(12) << yout[1] << setw(12) << b2 << endl;
cout << setw(12) << yout[2] << setw(12) << b3 << endl;
cout << setw(12) << yout[3] << setw(12) << b4 << endl;
cout << endl << "Press RETURN to continue..." << endl;
cin.get();
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -