非线性动力系统matlab编程简介.doc
MATLAB编程简介编程简介、、先介绍MATLAB里几个挺好用,但是大家以前可能没用到的命令,用过MATLAB的从例子都应该能看明白用法,所以我基本不加注释。1、求解初等方程02+SOLVE X2W2 ANSIWIW2、求解微分方程,以及求函数的导数。X2XTDSOLVE D2XW2X , T ,YTDIFFXT, T XTC1SINWTC2COSWTYTC1COSWTWC2SINWTW3、符号作图SINTAYSYMST这个命令用来声明下面要用到的符号变量。EZPLOTSINTPI/6,0,2PIAXIS0,2PI,1,1目录第2页(共16页)01234561080604020020406081TSINT1/64、符号作带等高线曲面图221XYZSYMSXYWEZSURFCYY/22XX,4,4,8,85、画向量场XYXQYXPSIN,,U4034非线性动力系统第3页(共16页)X,YMESHGRIDU这个命令用来先生成一个数据网格以画向量场。QUIVERX,Y,Y,SINX5432101234554321012346、极坐标作图2ERTHETA00015PIPOLARTHETA,1/SQRT1EXP2THETA, R 02040608130210602409027012030015033018007、画等高线21YXZ目录第4页(共16页)SYMSXYEZCONTOURXXX1X1YY,03,13,05,05XYX2X12Y202002040608112050403020100102030405二、MATLAB的一些目前可能用到的命令列表,需要知道更详细的格式,可以在MATLAB中查在线帮助。EZMESH画网格图EZMESHC画带等高线的网格图EZSURF画曲面图EZSURFC画带等高线的曲面图EZPLOT符号曲线图EZPLOT3三维符号曲线图EZPOLAR极坐标曲线图EZCONTOUR画等高线图EZCONTOURF画填充等高线图PLOT数值二维图POAR数值极坐标图PLOT3数值三维图MESH数值网格图MESHC数值带等高线图SURF数值曲面图SURFC数值带等高线图QUIVER矢量图SOLVE符号解代数方程DSOLVE符号解微分方程MESHGRID产生数据网格GRADIENT求数值梯度非线性动力系统第5页(共16页)三、微分方程的数值解法微分方程,其中为矢量。以下以简谐振动方程为例,UTFXY4记MU1、欧拉法1HUTFUMM,1H0001N216T0HNHXZEROSSIZETYZEROSSIZET可以直接取XZEROS1,N1但是一来容易范少算一个点的错误,二来下次改T的长度时,还得记得改X的长度,这样编程X的长度随时间变量T自动取比较好X11Y10FORI1N这里的循环次数极容易弄错,要么多算要么少算一个点,这种错误往往还查不出来。XI1XIYIHYI1YI4XIHENDPLOTX,Y目录第6页(共16页)15105005115252151050051152252、龙格库塔法B2261431MMMHUB3,21,3432HUTFTFMMH0001H2H/2H6H/6N219此处设置两个变量H2和H6是为了减少下面的大循环中的除法的次数,记住一个原则如果在循环里有某个量与循环变量无关,那么所有关于这个量的运算能算好的都先算好。T0HNHXZEROSSIZETYZEROSSIZETX11Y10FORI1NUXXIUYYIWX1UYWY14UXUXXIWX1H2UYYIWY1H2WX2UYWY24UX非线性动力系统第7页(共16页)UXXIWX2H2UYYIWY2H2WX3UYWY34UXUXXIWX3HUYYIWY3HWX4UYWY44UXXI1XIWX12WX22WX3WX4H6YI1YIWY12WY22WY3WY4H6END在上面的循环里,我设了两个临时变量UX,UY,目前大家能看到的是两个优点,一个是程序结构非常清楚,另一个优点是这个程序的可移植性非常强,如果算另一个方程,只要作极小的改动就行了,见下一个例子至于用两个临时变量是否能加快运行速度,这个例子体现不出来,而下一个例子,则会有显著区别PLOTX,Y10806040200204060812151050051152由以上两个图形明显看出欧拉算法的精度远远不及龙格库塔法。前面的欧拉法只算了N216个点,图像已经成了椭圆环了,而后面的龙格-库塔法,算了N219,是前者的8倍,图像仍然是一个漂亮的椭圆3、程序的优化下面我们用龙格-库塔法来画下面方程的轨线YXCOSIN1不良编程的典范TICH0001N219T0HNHXZEROSSIZETYZEROSSIZETX11Y10FORI1NWX1SINYICOSXIWY1XICOSYIWX2SINYIWY1H/2COSXIWX1H/2WY2XIWX1H/2COSYIWY1H/2WX3SINYIWY2H/2COSXIWX2H/2WY3XIWX2H/2COSYIWY2H/2WX4SINYIWY3HCOSXIWX3HWY4XIWX3HCOSYIWY3HXI1XIWX12WX22WX3WX4H/6YI1YIWY12WY22WY3WY4H/6目录第8页(共16页)ENDPLOTX,YTOCELAPSEDTIMEIS15092000SECONDS11522533500204060811214162常量的使用TICH0001H2H/2H6H/6N219T0HNHXZEROSSIZETYZEROSSIZETX11Y10FORI1NWX1SINYICOSXIWY1XICOSYIWX2SINYIWY1H2COSXIWX1H2WY2XIWX1H2COSYIWY1H2WX3SINYIWY2H2COSXIWX2H2WY3XIWX2H2COSYIWY2H2WX4SINYIWY3HCOSXIWX3HWY4XIWX3HCOSYIWY3HXI1XIWX12WX22WX3WX4H6YI1YIWY12WY22WY3WY4H6ENDPLOTX,YTOCELAPSEDTIMEIS13559000SECONDS非线性动力系统第9页(共16页)1152253350020406081121416现在我们看到,常量H2和H6的引入使得我们的一条轨道的计算时间减少了15秒。我们还可以进一步改进,引进局部变量。3使用局部变量TICH0001H2H/2H6H/6N219T0HNHXZEROSSIZETYZEROSSIZETX11Y10FORI1NUXXIUYYIWX1SINUYCOSUXWY1UXCOSUYUXXIWX1H2UYYIWY1H2WX2SINUYCOSUXWY2UXCOSUYUXXIWX2H2UYYIWY2H2WX3SINUYCOSUXWY3UXCOSUYUXXIWX3HUYYIWY3HWX4SINUYCOSUXWY4UXCOSUYXI1XIWX12WX22WX3WX4H6YI1YIWY12WY22WY3WY4H6ENDPLOTX,YTOCELAPSEDTIMEIS11958000SECONDS目录第10页(共16页)