c6.cpp
上传用户:zhdd911129
上传日期:2007-05-11
资源大小:722k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. //C6.cpp
  2. //Adanved Euler's Methom
  3. #include<iostream.h>
  4. const N=20;
  5. double f(double x,double y)
  6. {
  7. return x*y*y*(-1);
  8. }
  9. //n为[0,5]之间欲求离散点个数,将会设为20
  10. void EulerMethom(double x0,double y0,int n)
  11. {
  12. double y1,h;
  13. int i;
  14. h=5/(double)n;
  15. for (i=0;i<n;i++)
  16. {
  17. y1=y0+h*f(x0+i*h,y0);
  18. y1=y0+h*(f(x0+(i+1)*h,y1)+f(x0+i*h,y0))/2;
  19. cout<<"The vaule at "<<(i+1)*h<<"is: "<<y1<<endl;
  20. y0=y1;
  21. }
  22. }
  23. void main()
  24. {
  25. double x0=0,y0=2;   
  26. EulerMethom(x0,y0,N);
  27. }
  28. //N=500时,y(2.5)=0.275871
  29. //N=20时,y(2.5)=0.282357,距精确值0.275862相当远
  30. //迭代次数对结果精确性影响非常大,N=500时,程序耗时2秒多
  31. //且有相当的误差,Euler法确实不敢恭维