laxwen1.c++

来自「卡尔曼滤波类」· C++ 代码 · 共 51 行

C++
51
字号
// laxwen1.cpp		implementation of 1-D single step Lax-Wendroff#include <laxwen1.hpp>float null_rhs(Vector&, int){	return 0;}LaxWendroff1::LaxWendroff1(SpaceDeriv fin, float dxin, float dtin, int ni,			 SpaceDeriv user_rhs) : f(fin),			Dynamics(ni,dtin,"Single-step Lax-Wendroff"){	u_new.resize(n);	r = dt / dxin;	        if ( user_rhs == NULL )		rhs = null_rhs;	else		rhs = user_rhs;}void LaxWendroff1::step(const int steps){	int it, j, jm, jp;	for (it = 0; it < steps; it++)	{		for (j = 0; j < n; j++)		{			jp = j + 1;			if ( jp >= n )				jp -= n;			jm = j - 1;			if ( jm < 0 )				jm += n;			u_new[j] = u[j] - 0.5 * r * (f(u,jp) - f(u,jm))				      + 0.5 * r * r * (f(u,jp) - 2 *						f(u,j) + f(u,jm) )					+ dt * rhs(u,j);			}                u = u_new;	}	}

⌨️ 快捷键说明

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