visual c++常微分方程初值问题求解1.htm
来自「Visual C++常微分方程解法(转载)」· HTM 代码 · 共 327 行 · 第 1/2 页
HTM
327 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0043)http://www.yesky.com/20021122/1641169.shtml -->
<HTML xmlns="http://www.w3.org/TR/xhtml1/strict"><HEAD><TITLE>Visual C++常微分方程初值问题求解</TITLE>
<META http-equiv=Content-Type content="text/html; charset=GB2312"></META><LINK
href="Visual C++常微分方程初值问题求解1.files/cpcw.css" rel=stylesheet></LINK>
<STYLE>.nava {
FONT-SIZE: 9pt
}
</STYLE>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></META>
<SCRIPT language=JavaScript>function sendemail(){ OpenWindow = window.open('http://other.chinabyte.com/chinabyte/qin/sendemail.shtm?url=http%3A%2F%2Fwww.yesky.com/20021122/1641169.shtml&title=Visual C++常微分方程初值问题求解&channel=9','emailwin','toolbar=no,location=no,scrollbars=no,menubar=no,width=462,height=450')}</SCRIPT>
</HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=2 marginheight="0"
marginwidth="0">
<DIV align=center>
<TABLE height=90 cellSpacing=0 cellPadding=0 width=760 border=0>
<TBODY>
<TR>
<TD width=149> </TD>
<TD colSpan=2><A href="http://www.yesky.com/">首页</A> ·<A
href="http://www.yesky.com/ServerIndex/77124143618719744/index.shtml"><FONT
class=zzz>硬件</FONT> </A>· <A
href="http://www.chinabyte.com/Enterprise/218706056904179712/index.shtml">E企业
</A>·<A href="http://price.yesky.com/"> 商情 </A>·<A
href="http://www.yesky.com/Fashion/73746443898191872/index.shtml"> 数字电子
</A>·<A
href="http://www.yesky.com/SoftChannel/72339069014638592/index.shtml"> 软件
</A>· <A
href="http://www.yesky.com/Gameall/73183493944770560/index.shtml">游戏
</A>·<A href="http://download.yesky.com/"> 下载 </A>· <A
href="http://www.yesky.com/Etimes/74872343805034496/index.shtml">E时代</A>·
<A href="http://bbs.yesky.com/">论坛</A></TD></TR>
<TR>
<TD vAlign=top align=middle width=149 height=70><IMG height=60
src="Visual C++常微分方程初值问题求解1.files/bz2.gif" width=110></TD>
<TD vAlign=top width=474><IFRAME
src="Visual C++常微分方程初值问题求解1.files/y-soft-column-s.htm" frameBorder=0
width=500 scrolling=no height=90></IFRAME></TD>
<TD vAlign=top width=137><IFRAME
src="Visual C++常微分方程初值问题求解1.files/index.shtml" frameBorder=0 width=130
scrolling=no height=60></IFRAME></TD></TR></TBODY></TABLE><IFRAME
src="Visual C++常微分方程初值问题求解1.files/y-soft-column-1.htm" frameBorder=0 width=766
scrolling=no height=96> </IFRAME>
<TABLE cellSpacing=0 cellPadding=0 width=760 bgColor=#979797 border=0>
<TBODY>
<TR>
<TD width=10></TD>
<TD width=536><SPAN class=nava><FONT color=#ffffff>您现在的位置是: </FONT><A
href="http://www.yesky.com/72339069014638592/index.shtml"><FONT
color=#ffffff>软件</FONT></A><FONT color=#ffffff> > </FONT><A
href="http://www.yesky.com/72342367549521920/index.shtml"><FONT
color=#ffffff>开发者网络</FONT></A><FONT color=#ffffff> > </FONT><A
href="http://www.yesky.com/72342371844489216/index.shtml"><FONT
color=#ffffff>程序方舟</FONT></A><FONT color=#ffffff> > </FONT><A
href="http://www.yesky.com/72342371928375296/index.shtml"><FONT
color=#ffffff>开发专栏</FONT></A><FONT color=#ffffff> > </FONT><A
href="http://www.yesky.com/72342371928702976/index.shtml"><FONT
color=#ffffff>Visual C++开发</FONT></A><FONT color=#ffffff> >
</FONT><FONT color=#ffffff>正文</FONT></SPAN></TD>
<TD width=214 bgColor=#f7f7f7><IMG height=22
src="Visual C++常微分方程初值问题求解1.files/content-1.gif"
width=214></IMG></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=760 bgColor=#f7f7f7 border=0>
<TBODY>
<TR>
<TD width=149 height=10></TD>
<TD width=1 background="Visual C++常微分方程初值问题求解1.files/content-3.gif"
height=10></TD>
<TD width=610 height=10></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=760 bgColor=#f7f7f7 border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle width=149>·<A
href="http://www.chinabyte.com/20020731/1623017.shtml">速成电脑精英(包分配)白领高薪一族从这里开始</A></TD></TR>
<TR>
<TD vAlign=top align=middle width=149><IFRAME
src="Visual C++常微分方程初值问题求解1.files/softwaresv.htm" frameBorder=0 width=120
scrolling=no height=500></IFRAME><BR><BR>
<SCRIPT src="Visual C++常微分方程初值问题求解1.files/140_250.js"></SCRIPT>
<BR>
<TABLE cellSpacing=0 cellPadding=0 width=135 border=0>
<TBODY>
<TR>
<TD width=30 bgColor=#3d7b7b><IMG height=17
src="Visual C++常微分方程初值问题求解1.files/content-2.gif" width=24
align=absMiddle></IMG></TD>
<TD class=nava align=middle width=105 bgColor=#a0d0d0><A class=A1
href="http://www.yesky.com/72348964619288576/index.shtml"><FONT
color=#000000>T O P 排 行</FONT></A></TD></TR>
<TR>
<TD vAlign=top align=middle width="6%" bgColor=#ebebeb>-</TD>
<TD width="94%" bgColor=#ebebeb><A
href="http://www.yesky.com/20030110/1647918.shtml">Java套接字编程(下)</A><BR></TD></TR>
<TR>
<TD vAlign=top align=middle width="6%" bgColor=#ebebeb>-</TD>
<TD width="94%" bgColor=#ebebeb><A
href="http://www.yesky.com/20030108/1647533.shtml">MediaStudio Pro
6.5教程</A><BR></TD></TR>
<TR>
<TD vAlign=top align=middle width="6%" bgColor=#ebebeb>-</TD>
<TD width="94%" bgColor=#ebebeb><A
href="http://www.yesky.com/20030103/1646964.shtml">三款卸载软件最新试用</A><BR></TD></TR>
<TR>
<TD vAlign=top align=middle width="6%" bgColor=#ebebeb>-</TD>
<TD width="94%" bgColor=#ebebeb><A
href="http://www.yesky.com/20030102/1646785.shtml">基于Visual
C++的Winsock API研究</A><BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=135 border=0>
<TBODY>
<TR>
<TD width=30 bgColor=#3d7b7b><IMG height=17
src="Visual C++常微分方程初值问题求解1.files/content-2.gif" width=24
align=absMiddle></IMG></TD>
<TD class=nava align=middle width=105 bgColor=#a0d0d0><A class=A1
href="http://training.yesky.com/"><FONT color=#000000>网 校 热
门</FONT></A></TD></TR></TBODY></TABLE>
<SCRIPT src="Visual C++常微分方程初值问题求解1.files/softyesky.js"></SCRIPT>
</TD>
<TD width=1 background="Visual C++常微分方程初值问题求解1.files/content-3.gif"></TD>
<TD vAlign=top align=middle>
<TABLE cellSpacing=2 cellPadding=0 width=550 border=0>
<TBODY>
<TR>
<TD align=middle><B><FONT class=BHEAD color=#333399>Visual
C++常微分方程初值问题求解</FONT></B></TD></TR>
<TR>
<TD bgColor=#bbbbbb height=1></TD></TR>
<TR>
<TD align=middle><FONT face="Arial, Helvetica, sans-serif"><SPAN
class=nava>2002-11-22·
·信息产业部电子第二十二研究所青岛分所郎锐··YESKY<BR><BR></SPAN></FONT></TD></TR>
<TR>
<TD>
<P align=right><FONT color=red>1 <A
href="http://www.yesky.com/20021122/1641169_1.shtml">2</A> <A
href="http://www.yesky.com/20021122/1641169_1.shtml">下一页</A></FONT></P><SPAN
class=txt><IFRAME align=right marginWidth=0 marginHeight=0
src="Visual C++常微分方程初值问题求解1.files/cont_flash_software.html"
frameBorder=0 width=360 scrolling=no
height=300></IFRAME><BR> <B>摘要:</B>本文讲述了以计算机为辅助计算工具,分别使用欧拉算法、改进欧拉算法以及经典龙格-库塔算法对常微分方程的初值问题进行数值求解的实现算法。<BR><BR> <B><FONT
color=#ac000>一、
引言</FONT></B><BR><BR> 在工程计算中我们经常要去解一些常微分方程,虽然在高等数学和其他一些涉及微分方程的专业书籍中介绍了不少类型的常微分方程,及各自的解法。但工程技术人员在工程和科学研究中所关心的往往只是常微分方程的近似数值解,而非从事数学研究的技术人员所注重的"过程"。采用常规的人工推导、求解无疑是效率非常低下的,而且工程上的常微分方程往往结构非常复杂,要给出一般方程解的表达式也是非常困难的。实际上到目前为止,我们只能对有限的几种特殊类型的方程求精确解,这远不能满足工程需要,对那些不能用初等函数来表达的方程就只能去求其近似的数值解,而且这样还可以借助于运算速度快的计算机来进行辅助求解,大大提高求解的速度和精度,修改也比较灵活。<BR><BR> <B><FONT
color=#ac000>二、
使用欧拉算法及其改进算法进行一般求解</FONT></B><BR><BR> 所谓的数值求解,就是求问题的解y(x)在一系列点上的值y(xi)的近似值yi。欧拉(Euler)算法是其中最基本、最简单的算法,但其求解精度较低,一般不在工程中单独进行计算。其实现的依据是用向前差商来近似代替导数。对于常微分方程:<BR><BR> dy/dx=f(x,y),x∈[a,b]<BR> y(a)=y0<BR><BR> 可以将区间[a,b]分成n段,那么方程在第xI点有y'(xI)=f(xI,y(xI)),再用向前差商近似代替导数则为:(y(xI+1)-y(xI))/h=
f(xI,y(xI)),因此可以根据xI点和yI点的数值计算出yI+1来:<BR><BR> yI+1= yI+h*f(xI
,yI)<BR><BR> 下面就在Visual C++
6.0编程环境下对一个简单的常微分方程<BR><BR> y'=x-y+1,x∈[0,0.5]<BR> y(0)=1<BR><BR> 求近似数值解,由于该简单方程可以用数学方法求得其精确描述式y(x)=x+e-x,所以可以据此检验近似数值解同真实解的误差情况。对于其他一些结构复杂的常微分方程的数值解实现方法也是一样的。下面就通过代码来实现上述算法,并对计算结果作了比较:<BR><BR>
<TABLE width="100%" bgColor=#ffffff>
<TBODY>
<TR>
<TD>float y[6]; file://用于存放计算出的常微分方程数值解<BR>float r;
file://同真实解的误差情况<BR>memset(y,0,sizeof(float)*6);//清零<BR>y[0]=1;
file://y(0)=1<BR>……<BR>for(float x=0;x<0.6;x+=0.1)
file://区间分5段,步长为0.1<BR>{<BR>r=x+expf(-x);
file://真实解y(x)=x+e-x<BR>y[i+1]=y[i]+0.1*(x-y[i]+1);
file://数值解(近似)<BR>r=fabs(r-y[i]);
file://误差<BR>str.Format("y[%d]=%f
r=%f\r\n",i,y[i],r);<BR>i++;<BR>msg+=str;<BR>}<BR>AfxMessageBox(msg);<BR>……</TD></TR></TBODY></TABLE><BR> 经过程序计算,得出y(xi)在各点的近似数值解及各自同真实解的误差,现列表如下,以兹对照:<BR><BR>
<TABLE cellSpacing=0 width=600 align=center border=1>
<TBODY>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?