中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
改进Eular方法解常微分方程
作者:未知 时间:2005-07-27 23:27 出处:CSDN 责编:chinaitpower
              摘要:改进Eular方法解常微分方程

/**
***改进Eular方法***

  预报:*Y(n+1)=Y(n) + h * f( x(n) , y(n) );
 
  改进:Y(n+1)=Y(n) + h/2 *[ f( x(n) , y(n) ) + f( x(n+1) , *Y(n+1) ) ]

  h=x(n+1)-x(n)

  平均化形式:
  Yp= Yn + hf( X(n),Y(n) )
  Yc= Yn + hf( X(n+1),Y(p) )
  Y(n+1)= 1/2 * ( Yc+Yp )

  属性:差分方法

 《数值分析简明教程》-2 Editon -高等教育出版社- page 100 算法流程图
  
  代码维护:2005.6.14  DragonLord

**/

#include<iostream.h>
#include<stdio.h>
#include<math.h>
/*
  举例方程:
 
 y'= y - 2*x / y ( 0<x<1 )
    y(0) = 1

*/
double f(double x,double y) //方程形式
{
 double re;
 if(x==0)re=1;
 else
 re=y-2*x/y;
 return re;
}
int main()
{
 double x0,y0,x1,y1,y;
 double yp,yc,h;
 int N;
 while(cin>>x0>>y0>>h>>N)
 {
       
  int n=0;
  for(;n<N;n++)
  {
   x1=x0+h;
   y=sqrt(1+2*x1); //精确值
   
   yp=y0+h*f(x0,y0);
   yc=y0+h*f(x1,yp);
   
   y1=(yp+yc)/2.0;
   printf("%.1f %.4f %.4f\n",x1,y1,y); //输出与精确值比较
   x0=x1;
   y0=y1;
  }
 }
 return 0;
}


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有