小弟我想在OnTimer函数中计算一个离散化后的微分方程组,小弟我的想法是定时器每20ms刷新一次,那么OnTimer中的程序就执行一次,那么得到的变量就是新的

我想在OnTimer函数中计算一个离散化后的微分方程组,我的想法是定时器每20ms刷新一次,那么OnTimer中的程序就执行一次,那么得到的变量就是新的
如题,然后我的另外程序就可以不停的调用这些新解出来的变量,但我运行后感觉这些变量没有变化。大家帮忙看看,给点意见。变量都已定义,运行没错,就是想法估计有错。
void CKetishiyan4View::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
///////////////////////////////////////////////////////////////////////////
// 添加定时器响应函数和厂家更新函数
Invalidate(FALSE);
  ///////////////////////////////////////////////////////////////////////////
x[0]=10;y[0]=10;z[0]=12;
k1=(-3)*x[0]+2*y[0];
m1=(-2.667)*x[0]-10.333*y[0]-0.667*z[0];
n1=(-6.667)*x[0]-5.333*y[0]-4.667*z[0];

k2=(-3)*(x[0]+k1*(h/2.0))+2*(y[0]+m1*(h/2.0));
m2=(-2.667)*(x[0]+k1*(h/2.0))-10.333*(y[0]+m1*(h/2.0))-0.667*(z[0]+n1*(h/2.0));
n2=(-6.667)*(x[0]+k1*(h/2.0))-5.333*(y[0]+m1*(h/2.0))-4.667*(z[0]+n1*(h/2.0));
 
  k3=(-3)*(x[0]+k2*(h/2.0))+2*(y[0]+m2*(h/2.0));
m3=(-2.667)*(x[0]+k2*(h/2.0))-10.333*(y[0]+m2*(h/2.0))-0.667*(z[0]+n2*(h/2.0));
n3=(-6.667)*(x[0]+k2*(h/2.0))-5.333*(y[0]+m2*(h/2.0))-4.667*(z[0]+n2*(h/2.0));

k4=(-3)*(x[0]+k3*(h/2.0))+2*(y[0]+m3*(h/2.0));
  m4=(-2.667)*(x[0]+k3*(h/2.0))-10.333*(y[0]+m3*(h/2.0))-0.667*(z[0]+n3*(h/2.0));
n4=(-6.667)*(x[0]+k3*(h/2.0))-5.333*(y[0]+m3*(h/2.0))-4.667*(z[0]+n3*(h/2.0));

x[1]=x[0]+h*(k1+2*k2+2*k3+k4)/6.0;
  y[1]=y[0]+h*(k1+2*k2+2*k3+k4)/6.0;
z[1]=z[0]+h*(k1+2*k2+2*k3+k4)/6.0;

x[0]=x[1];
y[0]=y[1];
z[0]=z[1];
CView::OnTimer(nIDEvent);
}

------解决方案--------------------
看完代码,你代码内所有的变量都在一次执行过程中重新计算一遍。可是你的初始值好像都是一样的。所以你的计算必然是一样的。如果你认为不一样的话,你能告诉你在哪修改这些值了么???
------解决方案--------------------
你的settimer函数是怎么调用的