实验五 欧拉法Matlab实验报告

合集下载

MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程

MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程

姓名:樊元君学号:02 日期:一、实验目的掌握MATLAB语言、C/C++语言编写计算程序的方法、掌握改进欧拉法与四阶龙格-库塔求解一阶常微分方程的初值问题。

掌握使用MATLAB程序求解常微分方程问题的方法。

:二、实验内容1、分别写出改进欧拉法与四阶龙格-库塔求解的算法,编写程序上机调试出结果,要求所编程序适用于任何一阶常微分方程的数值解问题,即能解决这一类问题,而不是某一个问题。

实验中以下列数据验证程序的正确性。

求,步长h=。

*2、实验注意事项的精确解为,通过调整步长,观察结果的精度的变化^)三、程序流程图:●改进欧拉格式流程图:~|●四阶龙格库塔流程图:]四、源程序:●改进后欧拉格式程序源代码:function [] = GJOL(h,x0,y0,X,Y)format longh=input('h=');…x0=input('x0=');y0=input('y0=');disp('输入的范围是:');X=input('X=');Y=input('Y=');n=round((Y-X)/h);\i=1;x1=0;yp=0;yc=0;for i=1:1:nx1=x0+h;yp=y0+h*(-x0*(y0)^2);%yp=y0+h*(y0-2*x0/y0);%·yc=y0+h*(-x1*(yp)^2);%yc=y0+h*(yp-2*x1/yp);%y1=(yp+yc)/2;x0=x1;y0=y1;y=2/(1+x0^2);%y=sqrt(1+2*x0);%fprintf('结果=%.3f,%.8f,%.8f\n',x1,y1,y);:endend●四阶龙格库塔程序源代码:function [] = LGKT(h,x0,y0,X,Y)。

format longh=input('h=');x0=input('x0=');y0=input('y0=');disp('输入的范围是:');"X=input('X=');Y=input('Y=');n=round((Y-X)/h);i=1;x1=0;k1=0;k2=0;k3=0;k4=0;for i=1:1:n~x1=x0+h;k1=-x0*y0^2;%k1=y0-2*x0/y0;%k2=(-(x0+h/2)*(y0+h/2*k1)^2);%k2=(y0+h/2*k1)-2*(x0+h/2)/(y0+h/2*k1);% k3=(-(x0+h/2)*(y0+h/2*k2)^2);%k3=(y0+h/2*k2)-2*(x0+h/2)/(y0+h/2*k2);% k4=(-(x1)*(y0+h*k3)^2);%k4=(y0+h*k3)-2*(x1)/(y0+h*k3);%…y1=y0+h/6*(k1+2*k2+2*k3+k4);%y1=y0+h/6*(k1+2*k2+2*k3+k4);%x0=x1;y0=y1;y=2/(1+x0^2);%y=sqrt(1+2*x0);%fprintf('结果=%.3f,%.7f,%.7f\n',x1,y1,y);end·end*五、运行结果:改进欧拉格式结果:;}四阶龙格库塔结果:步长分别为:和时,不同结果显示验证了步长减少,对于精度的提高起到很大作用,有效数字位数明显增加。

【原创】MATLAB实验报告-第二次-用MATLAB实现计算数据可视化-北京交通大学

【原创】MATLAB实验报告-第二次-用MATLAB实现计算数据可视化-北京交通大学

MATLAB上机实验报告(2)实验容:一、试用如下几种方法来建立向量,观察结果(1)x=1:5, x=(1:5)’实验结果:x=1:5 是行向量,x=(1:5)’是列向量.且1为初始值,5为终止值,默认的步长为1.>> x=1:5x =1 2 3 4 5>> x=(1:5)'x =12345(2)x=0:pi/4:pi实验结果: x=0:pi/4:pi指的是x=(0,0.25*pi,0.50*pi,0.75*pi,pi).其中pi为圆周率,初始值为0,终止值为pi,步长为pi/4.>> x=0:pi/4:pix =0 0.7854 1.5708 2.3562 3.1416(3)x=(0:0.2:3)’, y=exp(-x).*sin(x)实验结果: x的初始值为0,终止值为3,步长为0.2.而函数y 表示将x向量中的每一个数代入函数y=e^(-x)*sin(x)得到的函数值组成的向量.>> x=(0:0.2:3)', y=exp(-x).*sin(x)x =0 0.2000 0.4000 0.60000.80001.0000 1.2000 1.4000 1.60001.80002.0000 2.2000 2.4000 2.60002.80003.0000 y =0.16270.26100.30990.32230.30960.28070.24300.20180.16100.12310.08960.06130.03830.02040.0070(4)k=linspace(-pi,pi,5), k=logspace(-3,-1,5)实验结果:k=linspace(-pi,pi,5),产生的是初始值为-pi,终止值为pi,元素总数为5的行向量,即k的步长为pi/2.k=logspace(-3,-1,5)产生的是初始值为10^(-3),终止值为10^(-1),元素总数为5的列向量.其中第n个元素为10^(-3+0.5*n).>> k=linspace(-pi,pi,5), k=logspace(-3,-1,5)k =-3.1416 -1.5708 0 1.5708 3.1416k =0.0010 0.0032 0.0100 0.0316 0.1000二、已知x=[1 2 3],y=[4 5 6],试计算z=x.*y, x.\y和x./y。

matlab 数学实验 实验报告 欧拉公式 ROSSLER微分方程

matlab 数学实验 实验报告 欧拉公式 ROSSLER微分方程

数学实验—实验报告一、实验项目: 二、实验目的和要求1、本章将对人口变化、动物种群变迁、网络系统的可靠性分析,介绍微分方程(组)的模型建立、数值解和图形解等方法,并用MATLAB 几何直观地展示各种求解方法的求解结果。

2、利用欧拉公式求解方程三、实验题目问题一:求微分方程的解析解,并画出它们的图形, y ’=y +2x , y (0)=1, 0<x <1;问题二:用向前欧拉公式和改进的欧拉公式求方程y ’=y -2x /y , y (0)=1的数值解(0≤x ≤1 , h =0.1) 要求编写程序。

问题三:Rossler 微分方程组当固定参数b=2, c=4时,试讨论随参数a 由小到大变化(如a ∈(0,0.65])而方程解的变化情况,并且画出空间曲线图形,观察空间曲线是否形成混沌状?问题四:水的流出时间一横截面积为常数A ,高为H 的水池内盛满水,由池底一横截面积为B 的小孔放水。

设水从小孔流出的速度为v=(2gh)0.5,求在任意时刻的水面高度和将水放空所需的时间。

时间t →高度h 。

问题五:考虑相互竞争模型两种相似的群体之间为了争夺有限的同一种事物来源和生存空间而进行生死存亡竞争时,往往是竞争力较弱的种群灭亡,而竞争力较强的种群达到环境容许的最大数量假设有甲、乙两个生物种群,当它们各自生存于一个自然环境中,均服从Logistics 规律。

三、实验过程问题一:用matlab 编写代码: x=[0,1]y=dsolve('Dy=y+2*x')y=dsolve('Dy=y+2*x', 'y(0)=1', 'x')ezplot(x,y)输出:y =-2*x+exp(t)*C1 (通解)y =-2*x-2+3*exp(x) 画图:x=0:0.01:1;y =-2*x-2+3*exp(x);plot(x,y)'''()x y z y x ayz b z x c =--⎧⎪=+⎨⎪=+-⎩0.10.20.30.40.50.60.70.80.91问题二: 1、分析:解:(1)解析解法得到其精确解:(2) 向前欧拉法:1(2/)n n n n n y y h y x y +=+- (1)2/n n nh y h x y =+- 迭代公式为 n+1y 1.10.2/n n n y x y =-,其中0y =y(0)=1(3)改进欧拉法:n+1nn n n n+1n +1n n n n n n n n n n n nn2n nnnn y =y +(h /2)*[(y -2x /y )+(y -2x /y )]=y +(h /2)*[(y -2x/y )+(y +h -2(x+h )/(yh ))] =y+(h /2)*[2y2x /y2(x +h )/(y+h )]=(1+h )y /2x/y(x +h )/(y+h )h h h h +--+-- 迭代公式为 n+1y 1.10.1/0.1()/()0.005n n n n n y x y x h y h =--+++,其中0y =y(0)=12、Matlab 编码x1(1)=0;y1(1)=1;y2(1)=1;h=0.1; for k=1:10 x1(k+1)=x1(k)+h;y1(k+1)=(1-h)*y1(k)+2*h*x1(k)/y1(k);y2(k+1)=(1+h)*y2(k)+(h*h)/2-h*x1(k)/y2(k)-h*(x1(k)+h)/(y2(k)+h); end x=0:0.1:1; y=(2*x+1).^(1/2);x1=x1(1:11),y=y(1:11),y1=y1(1:11),y2=y2(1:11), plot(x,y,x1,y1,'k:',x1,y2,'r--')显示图像及结果:x1 = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000y = 1.0000 1.0954 1.1832 1.2649 1.3416 1.4142 1.4832 1.5492 1.6125 1.6733 1.7321y1 = 1.0000 0.9000 0.8322 0.7971 0.7926 0.8143 0.8557 0.9103 0.9731 1.0402 1.1092y2 = 1.0000 1.0959 1.1847 1.2679 1.3468 1.4222 1.4948 1.5653 1.6340 1.7016 1.768300.10.20.30.40.50.60.70.80.910.811.21.41.61.82图中,蓝色曲线是精确解,红色曲线是向前欧拉法曲线,黑色曲线是改进后欧拉法曲线问题三1、matlab 编程function r=rossler(t,x) global a; global b; global c;r=[-x(2)-x(3);x(1)+a*x(2);b+x(3)*(x(1)-c)];global a; global b; global c; b=2; c=4; t0=[0,200]; for a=0:0.02:0.65[t,x]=ode45('rossler',t0,[0,0,0]); subplot(1,2,1);plot(t,x(:,1),'r',t,x(:,2),'g',t,x(:,3),'b');title('x(ºìÉ«),y(ÂÌÉ«),z(ÀºÉ«)Ëæt±ä»¯Çé¿ö');xlabel('t'); subplot(1,2,2);plot3(x(:,1),x(:,2),x(:,3))title('Ïàͼ');xlabel('x');ylabel('y');zlabel('z'); pause end当a=0时,图像如下50100150200-1-0.8-0.6-0.4-0.200.20.40.6x(红色),y(绿色),z(篮色)随t 变化情况t-0.5相图z当a=0时,(x,y,z)收敛于(0,0.5,0.5)当a=0.12时,图像如下50100150200-1.2-1-0.8-0.6-0.4-0.200.20.40.6x(红色),y(绿色),z(篮色)随t 变化情况t-0.5相图z当a=0.28时,(x,y ,z)仍然收敛,但是收敛速度大大降低。

matlab实验报告总结

matlab实验报告总结

matlab实验报告总结1.求一份matlab的试验报告计算方法试验报告3【实验目的】检查各种数值计算方法的长期行为【内容】给定方程组x'(t)=ay(t),y'(t)=bx(t), x(0)=0, y(0)=b的解是x-y 平面上的一个椭圆,利用你已经知道的算法,取足够小的步长,计算上述方程的轨道,看看那种算法能够保持椭圆轨道不变。

(计算的时间步长要足够多)【实验设计】用一下四种方法来计算:1. Euler法2. 梯形法3. 4阶RK法4. 多步法Adams公式【实验过程】1. Euler法具体的代码如下:clear;a=2;b=1;A=[0 a; -b0];U=[];u(:,1)=[0;b];n=1000000;h=6*pi/n;fori=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5; u(:,i+1)=u(:,i)+h*A*u(:,i);endt=1:n+1;subplot(1, 2,1);plot(1:n,delta);gridon;subplot(1,2,2);plot(u(1,:),u(2,:));gridon;max(abs(delta-ones(1,length(delta))));结果如下:2. 梯形法具体的代码如下:clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=300;h=6*pi/n;for i=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5;v1=u(:,i)+h*A*u(:,i);v2=u(:,i)+h*A*(u(:,i)+v1)/2;1u(:,i+1)=u(:,i)+h*A*(u(:,i)+v2)/2;endt=1:n+1;sub plot(1,2,1);plot(1:n,delta);gridon;subplot(1,2,2);结果如下 3. 4阶RK法clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=70;h=6*pi/n;for i=1:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5;k1=A*u(:,i); k2=A*(u(:,i)+h/2*k2); k3=A*(u(:,i)+h*k3); k4=A*(u(:,i)+h*k3); u(:,i+1)=u(:,i)+h/6*(k1+2*k2+2*k3+k4);endt=1:n+1 ;subplot(1,2,1);plot(1:n,delta);gridon;subplot(1,2,2);结果如下:4. 多步法Adams公式clear;a=2;b=1;A=[0 a; -b 0];U=[];u(:,1)=[0;b];n=200;h=6*pi/n;u(:;2)=u(u,1)+h*A*u(:,1);u(:;3)=u(u,2)+h/2*A*(3*u(:,2)-u(:,1));u(:;4)=u(u,3)+h/12*A*(23*u(:,3)-16*u(:,2)+5*u(:, 1)); delta(1)=((u(1,1)/a)^2+(u(2,1)/b^2)^0.5 delta(2)=((u(1,2)/a)^2+(u(2,2)/b^2)^0.5delta(3)=((u(1,3)/a)^2+(u(2,3)/b^2)^0.5for i=4:n delta(i)=((u(1,i)/a)^2+(u(2,i)/b)^2)^0.5;u(:,i+1)=u(:,i)+h/24*A*(55*u(:,i)-59*u(:,i-1)+37 *u(:,i-1)+37*u(:,i-2)-9*u(:,i-3));endt=1:n+1;sub plot(1,2,1);plot(1:n,delta);gridon;subplot(1,2,2);结果如下:【实验分析】通过这几种方法对比,发现最为稳定的是多步法Adams公式和4阶RK法,其次是梯形法,而欧拉法最为不稳定。

matlab 实验报告

matlab 实验报告

matlab 实验报告Matlab 实验报告引言:Matlab(Matrix Laboratory)是一种强大的科学计算软件,它为科学家、工程师和研究人员提供了一个强大的计算环境。

本实验报告旨在介绍我对Matlab的实验结果和使用体验,以及对其优点和局限性的思考。

一、Matlab的基本功能和特点Matlab是一种高级编程语言和开发环境,它具有广泛的数学和工程计算功能。

通过Matlab,我可以进行矩阵运算、数值计算、数据可视化、算法开发等一系列操作。

Matlab的语法简洁易懂,可以快速实现复杂的计算任务。

此外,Matlab还提供了大量的工具箱,如信号处理、控制系统、图像处理等,使得各种领域的科学研究和工程应用变得更加便捷。

二、实验结果与应用案例在本次实验中,我选择了一个经典的数值计算问题——求解非线性方程。

通过Matlab的数值计算能力,我可以使用不同的迭代方法来求解方程的根。

在实验中,我使用了牛顿迭代法、二分法和割线法来求解方程。

通过对比这些方法的收敛速度和精度,我得出了不同方法的优缺点。

在实际应用中,Matlab可以广泛应用于信号处理、图像处理、数据分析等领域。

例如,在信号处理中,我可以使用Matlab的信号处理工具箱来进行滤波、频谱分析等操作。

在图像处理中,我可以利用Matlab的图像处理工具箱进行图像增强、边缘检测等操作。

这些应用案例充分展示了Matlab在科学计算和工程应用中的重要性和灵活性。

三、Matlab的优点1. 强大的计算功能:Matlab提供了丰富的数学和工程计算函数,可以高效地进行复杂的计算任务。

2. 简洁的语法:Matlab的语法简洁易懂,使得编程变得更加高效和便捷。

3. 丰富的工具箱:Matlab提供了大量的工具箱,覆盖了各种领域的科学计算和工程应用需求。

4. 可视化能力强:Matlab提供了丰富的绘图函数,可以直观地展示数据和计算结果。

四、Matlab的局限性1. 高昂的价格:Matlab是一款商业软件,其价格较高,对于个人用户而言可能不太容易承受。

matlab实验报告(实验5)

matlab实验报告(实验5)
学生实验报告
一、 实验目的
开课学院及实验室:机电学院
2012 年 12 月 28 日
机电学
学院

实验课程名称
年级、专 业、班
1、 掌握 M 脚本文件和函数文件的创建方法,理解两者在形式上和运行上的区别; 2、 理解基本空间和函数空间的含义。 3、 掌握以控制流进行 MATLAB 程序设计的方法以及向量化程序设计方法,了解两者之间的异同; 二、
为频域抽样间隔, 2 1 为带宽。 K
四、实验报告要求
1、简述实验目的、实验原理及其要点; 2、把所有实验内容涉及的指令都以 M 文件方式创建并运行,保存实验结果图形。 3、总结实验中的主要结论。
按照实验内容 1 定义的 f(t)及时域采样方式,并取频域抽样点数 K=100,利用 MATLAB 编程,使用 for 循 环结构计算 F ( ) 在 [8 ,8 ] 在各个频域采样点的值,并画出其频谱图形。
T N 1 F (1 k ) f (t1 nt )e j (1 k )(t1 nt ) N n 0
其中,
(2.1)
根据以上两个等式,利用 MATLAB 编程,使用向量化计算的方法重新完成实验内容 2 和实验内容 3,并把计算结 果与实验内容 2 和实验内容 3 的结果进行比较是否相同(通过计算两者之间的最大绝对误差,观察其值是否接 近 0) 。 6、利用实验内容 5 的代码,把傅里叶变换和傅里叶逆变换分别写为两个 M 函数文件,函数定义形式为: function [F, w] = Fourier_lab2(f, N, T, K) function [f, t] = iFourier_lab2(F, K, W, N) 其中,f 为时域信号,t 为对时域信号 f 的采样点(即采样时刻) 为对时域信号 f 的采用点数,T 为 f 的 ,N 持续时间,K 为频域采样点数,F 为 f 的傅里叶变换,w 为对 F 的频域采样点,W 为 F 的频域带宽。 利用以上两个函数,写出 M 脚本文件重新完成实验内容 5。

matlab实验报告总结精选

matlab实验报告总结精选

matlab实验报告总结电气工程学院自动化102班 2012年12月21日实验一 MATLAB环境的熟悉与基本运算一、实验目的1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验基本知识1.熟悉MATLAB环境MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路径浏览器。

2.掌握MATLAB常用命令变量与运算符变量命名规则如下:变量名可以由英语字母、数字和下划线组成变量名应以英文字母开头长度不大于31个区分大小写MATLAB中设置了一些特殊的变量与常量,列于下表。

MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符表2 MATLAB算术运算符表3 MATLAB关系运算符表4 MATLAB逻辑运算符表5 MATLAB特殊运算的一维、二维数组的寻访表6 子数组访问与赋值常用的相关指令格式的基本运算表7 两种运算指令形式和实质内涵的异同表的常用函数表8 标准数组生成函数表9 数组操作函数三、实验内容1、新建一个文件夹2、启动,将该文件夹添加到MATLAB路径管理器中。

3、保存,关闭对话框4、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye5、学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。

6、初步程序的编写练习,新建M-file,保存,学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。

注意:每一次M-file的修改后,都要存盘。

练习A:help rand,然后随机生成一个2×6的数组,观察command window、command history和workspace等窗口的变化结果。

学习使用clc、clear,了解其功能和作用。

答:clc是清除命令窗体内容 clear是清除工作区间输入C=1:2:20,则C表示什么?其中i=1,2,3,?,10。

实验五(欧拉法)

实验五(欧拉法)
2. 更进一步学习 Matlab ,了解 Matlab 中有关循环和函数的相应使用,掌握其 具体编程方式。
二 实验内容
实验具体问题说明
取步长为 h=0.1,用显式欧拉法求初值问题(精解: y x ex ):
y' y x 1

y(0)

1
并讨论 h 值对解的影响。
实验过程
图 2 各解的曲线对比图 从上图中可以更形象直观的看出,h 的值越小(当 h=0.1 时),解的曲线越 接近精确解的曲线图,与计算结果的分析一致,同样验证了 h 值越小,解越精 确,越接近近似值的这一猜想。 三 本次实验总结 在更进一步熟悉 Matlab 中数组运算以及相关绘图函数使用的基础上,了解了更 多 Matlab 中有关于解决各种数学问题的函数,例如:函数 ode45、ode23 等的使用。 另外,通过本次实验,使自己对显式欧拉法及其它的改进方法以及梯形公式法 等都有了更深一步的理解,并对它们的解做了一定的对比,方便以后选用合适的算 法求解此类数学问题。
更直接的说明。因此编写了如下绘图程序:
%h=0.1 时
x0=[0.1,0.2,0.3,0.4,0.5]; y0=[1,1.01,1.029,1.0561,1.09049];
%h=0.2 时
x1=[0.2,0.4,0.6,0.8,1]; y1=[1,1.04,1.112,1.2096,1.32768];
%h=0.3 时
x2=[0.3,0.6,0.9,1.2,1.5]; y2=[1,1.09,1.243,1.4401,1.66807];
第3页共4页
%取精确解时 x=0:0.2:1; y=x+exp(-x); plot(x0,y0,':',x1,y1,'--',x2,y2,'-.',x,y,'-'); xlabel('x'); ylabel('y'); legend('h=0.1','h=0.2','h=0.3','精解'); 最终得到的图像如下:

matlab实例讲解欧拉法求解微分方程

matlab实例讲解欧拉法求解微分方程

欧拉法是数值分析中常用的一种方法,用于求解常微分方程的数值解。

在MATLAB中,可以通过编写相应的代码来实现欧拉法求解微分方程。

下面我们将通过具体的实例来讲解MATLAB中如何使用欧拉法求解微分方程。

我们要了解欧拉法的基本原理。

欧拉法是一种通过迭代逼近微分方程解的方法,它基于微分方程的定义,通过离散化的方法逼近微分方程的解。

其基本思想是利用微分方程的导数定义,将微分方程以差分形式进行逼近。

具体而言,欧拉法通过将微分方程转化为差分方程的形式,然后通过迭代逼近得到微分方程的数值解。

接下来,我们通过一个具体的实例来讲解MATLAB中如何使用欧拉法求解微分方程。

假设我们要求解以下的一阶常微分方程:(1) dy/dx = x + y(2) y(0) = 1现在我们来编写MATLAB代码来实现欧拉法求解这个微分方程。

我们需要确定微分方程的迭代步长和迭代范围。

假设我们将x的范围取为0到10,步长为0.1。

接下来,我们可以编写MATLAB代码如下:```matlab欧拉法求解微分方程 dy/dx = x + y定义迭代步长和范围h = 0.1;x = 0:h:10;初始化y值y = zeros(1,length(x));y(1) = 1;使用欧拉法迭代求解for i = 1:(length(x)-1)y(i+1) = y(i) + h * (x(i) + y(i));end绘制图像plot(x,y,'-o');xlabel('x');ylabel('y');title('欧拉法求解微分方程 dy/dx = x + y');```在这段MATLAB代码中,我们首先定义了迭代的步长和范围,并初始化了微分方程的初始值y(0) = 1。

然后通过for循环使用欧拉法进行迭代求解微分方程,最后绘制出了微分方程的数值解的图像。

通过以上的实例讲解,我们可以看到,在MATLAB中使用欧拉法求解微分方程是非常简单而直观的。

(2021年整理)Matlab实验报告

(2021年整理)Matlab实验报告

Matlab实验报告编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(Matlab实验报告)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为Matlab实验报告的全部内容。

实验一:Matlab操作环境熟悉一、实验目的1.初步了解Matlab操作环境.2.学习使用图形函数计算器命令funtool及其环境.二、实验内容熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:1.单函数运算操作。

求下列函数的符号导数(1)y=sin(x); (2) y=(1+x)^3*(2—x);求下列函数的符号积分(1)y=cos(x);(2)y=1/(1+x^2);(3)y=1/sqrt(1-x^2);(4)y=(x1)/(x+1)/(x+2)求反函数(1)y=(x—1)/(2*x+3); (2) y=exp(x); (3) y=log(x+sqrt(1+x^2));代数式的化简(1)(x+1)*(x-1)*(x-2)/(x—3)/(x—4);(2)sin(x)^2+cos(x)^2;(3)x+sin(x)+2*x-3*cos(x)+4*x*sin(x);2.函数与参数的运算操作。

从y=x^2通过参数的选择去观察下列函数的图形变化(1)y1=(x+1)^2(2)y2=(x+2)^2(3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4(6) y6=x^2/23.两个函数之间的操作求和(1)sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5乘积(1)exp(-x)*sin(x) (2) sin(x)*x商(1)sin(x)/cos(x);(2) x/(1+x^2); (3) 1/(x-1)/(x-2); 求复合函数(1)y=exp(u) u=sin(x) (2) y=sqrt(u) u=1+exp(x^2) (3) y=sin(u) u=asin(x)(4) y=sinh(u) u=-x实验二:MATLAB基本操作与用法一、实验目的1.掌握用MATLAB命令窗口进行简单数学运算。

matlab用欧拉法求常微分方程初值

matlab用欧拉法求常微分方程初值

Matlab中欧拉法求解常微分方程初值问题一、概念介绍在数学和工程领域,常微分方程初值问题是一个广泛应用的数学概念。

它描述了一个未知函数在给定初始条件下的行为。

而欧拉法则是一种常用的数值方法,用来解决常微分方程初值问题。

在Matlab中,我们可以利用欧拉法来求解常微分方程问题,从而得到函数在给定初始条件下的近似解。

二、欧拉法的基本原理欧拉法的基本思想是通过离散化微分方程,将其转化为递推的差分方程。

考虑一个一阶常微分方程初值问题:\[ \frac{dy}{dx} = f(x, y), \quad y(x_0) = y_0 \]在欧拉法中,我们采用递推的方式,根据已知的初始条件和微分方程的性质,通过迭代来得到逼近解的数值结果。

具体地,我们首先将自变量$x$的范围进行等间距分割,得到$x_0, x_1, x_2, ..., x_n$,并将步长记为$h$。

根据微分方程的性质,我们可以根据已知的初始条件$y(x_0) = y_0$,通过迭代计算得到近似解$y(x_1), y(x_2), ..., y(x_n)$。

三、Matlab中的欧拉法求解在Matlab中,我们可以利用欧拉法来求解常微分方程初值问题。

以求解一阶常微分方程为例,假设我们需要求解以下的常微分方程初值问题:\[ \frac{dy}{dx} = -2xy, \quad y(0) = 1 \]我们可以利用欧拉法的思想,将自变量$x$的范围进行离散化,然后根据欧拉法的递推公式,利用迭代的方式得到近似解的数值结果。

具体地,在Matlab中,我们可以编写如下代码来实现欧拉法的求解过程:```matlabfunction y = euler_method(f, x0, y0, h, n)% 初始化存储结果的数组x = zeros(1, n+1);y = zeros(1, n+1);% 将初始条件存入数组x(1) = x0;y(1) = y0;% 利用欧拉法进行迭代for i = 1:nx(i+1) = x(i) + h;y(i+1) = y(i) + h * f(x(i), y(i));end% 返回近似解的数值结果plot(x, y); % 绘制解的图像end```在上述代码中,我们定义了一个名为`euler_method`的函数,其中包含了欧拉法的计算过程。

MATLAB数值分析实验五(欧拉法,荣格-库塔法解常微分方程)

MATLAB数值分析实验五(欧拉法,荣格-库塔法解常微分方程)

佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 常微分方程问题初值问题数值解法 专业班级 姓 名 学 号 指导教师 陈剑 成 绩 日 期一. 实验目的1、理解如何在计算机上实现用Euler 法、改进Euler 法、Runge -Kutta 算法求一阶常微分方程初值问题⎩⎨⎧=∈='1)(],[),,()(y a y b a x y x f x y 的数值解。

2、利用图形直观分析近似解和准确解之间的误差。

二、实验要求(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。

(5) 写出实验报告。

三、实验步骤1、用Matlab 编写解常微分方程初值问题的Euler 法、改进Euler 法和经典的四阶Runge-Kutta 法。

2、给定初值问题⎪⎩⎪⎨⎧=≤≤-=;1)1(,21,1')1(2y x xy x y⎪⎩⎪⎨⎧=≤≤++-=31)0(10,25050')2(2y x x x y y 要求:(a )用Euler 法和改进的Euler 法(步长均取h=0.05)及经典的四阶Runge-Kutta 法(h=0.1)求(1)的数值解,并打印)10,....2,1,0(1.01=+=i i x 的值。

(b) 用经典的四阶Runge-Kutta 方法解(2),步长分别取h=0.1, 0.05,0.025,计算并打印)10,....2,1,0(1.0==i i x 个点的值,与准确解25031)(x e x y x +=-比较,并列表写出在x=0.2,0.5,0.8处,对于不同步长h 下的误差,讨论同一节点处,误差随步长的变化规律。

(c )用Matlab 绘图函数绘制(2)的精确解和近似解的图形。

四、实验结果 %Euler.mfunction y = Euler(x0,xn,y0,h) %Euler 法解方程f_xy ; %x0,y0为初始条件; %x0,xn 为求值区间; %h 为步长; %求区间个数: n = (xn-x0)/h;%矩阵x 存储n+1个节点: x = [x0:h:xn]';%矩阵y 存储节点处的值: y = [y0;zeros(n,1)];%矩阵y_存储节点处导数值: y_(1)= f_xy(x0,y0); y_ = [y_(1);zeros(n,1)];%进行迭代(欧拉法迭代;求导数): for i = 2:n+1y (i) = y(i-1)+h*y_(i-1); y_(i) = f_xy(x(i),y(i)); end%Imp_Euler.mfunction y = Imp_Euler(x0,xn,y0,h)%改进的Euler法解方程f_xy;%x0,y0为初始条件;%x0,xn为求值区间;%h为步长;%求区间个数:n = (xn-x0)/h;%矩阵x存储n+1个节点:x = [x0:h:xn]';%矩阵y存储节点处的值:y = [y0;zeros(n,1)];%矩阵y_存储节点处导数值:y_(1)= f_xy(x0,y0);y_ = [y_(1);zeros(n,1)];%使用改进Euler法求值(欧拉法求近似;近似点导数;梯形校正;求导):for i = 2:n+1y_l = y(i-1) + h*y_(i-1);y_l = f_xy(x(i),y_l);y(i) = y(i-1) + (h/2)*(y_(i-1)+y_l);y_(i)= f_xy(x(i),y(i));end%R_Kutta4.mfunction y = R_Kutta4(x0,xn,y0,h)%Runger_Kutta法解方程f_xy;%x0,y0为初始条件;%x0,xn为求值区间;%h为步长;%求区间个数:n = (xn-x0)/h;%矩阵x存储n+1个节点:x = [x0:h:xn]';%矩阵y存储节点处的值:y = [y0;zeros(n,1)];%矩阵k1,k2,k3,k4存储各节点(中点)数值:k1(1)= f_xy(x0,y0);k1 = [k1(1);zeros(n,1)];k2(1)= f_xy(x0+h/2,y0+h*k1(1)/2);k2 = [k2(1);zeros(n,1)];k3(1)= f_xy(x0+h/2,y0+h*k2(1)/2);k3 = [k3(1);zeros(n,1)];k4(1)= f_xy(x0+h,y0+h*k3(1));k4 = [k4(1);zeros(n,1)];for i= 2:n+1y(i) = y(i-1)+(h/6)*(k1(i-1)+2*k2(i-1)+2*k3(i-1)+k4(i-1));k1(i)= f_xy(x(i),y(i));k2(i)= f_xy(x(i)+h/2,y(i)+h*k1(i)/2);k3(i)= f_xy(x(i)+h/2,y(i)+h*k2(i)/2);k4(i)= f_xy(x(i)+h,y(i)+h*k3(i));end(a):%f_xy.mfunction y_=f_xy(x,y)%求解第五次作业第一题的点(x,y)处的导数;y_ = 1/(x^2) - y/x;%run521.mclc,clear;x0 = 1;xn = 2;h = 0.05;y0 = 1;%便于显示出x,与y对应:x = [x0:h:xn]';y = Euler(x0,xn,y0,h);YE =[x,y];y = Imp_Euler(x0,xn,y0,h); YIE= [x,y];h = 0.1;x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); YRK= [x,y];(b): %f_xy.mfunction y_=f_xy(x,y) %求第二个方程的导数: y_ = -50*y+50*(x^2)+2*x;%run522.mclc,clear; x0 = 0; xn = 1; y0 = 1/3; %步长0.1: h = 0.1; x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); y_r= f_Real(x); Y1 = [x,y,y_r];%步长0.05: h = 0.05; x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); y_r= f_Real(x); Y2 = [x,y,y_r]; %步长0.025: h = 0.025; x = [x0:h:xn]';y = R_Kutta4(x0,xn,y0,h); y_r= f_Real(x); Y3 = [x,y,y_r];五、讨论分析(a)从结果可以看出使用RK 方法,步长较大但是结果也更加精确; (b)分析求值结果的误差,可以发现当步长取0.1时,误差是超级大的(10^8数量级),但是当步长缩小一半取0.05时,误差就很小了,再缩小一半,误差就更小了。

高等数学数学实验报告(两篇)2024

高等数学数学实验报告(两篇)2024

引言概述:高等数学数学实验报告(二)旨在对高等数学的相关实验进行探究与研究。

本次实验报告共分为五个大点,每个大点讨论了不同的实验内容。

在每个大点下,我们进一步细分了五到九个小点,对实验过程、数据收集、数据分析等进行了详细描述。

通过本次实验,我们可以更好地理解高等数学的概念和应用。

正文内容:一、微分方程实验1.利用欧拉法求解微分方程a.介绍欧拉法的原理和步骤b.详细阐述欧拉法在实际问题中的应用c.给出具体的实例,展示欧拉法的计算步骤2.应用微分方程建立模型求解实际问题a.介绍微分方程模型的建立方法b.给出一个具体的实际问题,使用微分方程建立模型c.详细阐述模型求解步骤和结果分析3.使用MATLAB求解微分方程a.MATLAB求解微分方程的基本语法和函数b.给出一个具体的微分方程问题,在MATLAB中进行求解c.分析结果的准确性和稳定性二、级数实验1.了解级数的概念和性质a.简要介绍级数的定义和基本概念b.阐述级数收敛和发散的判别法c.讨论级数的性质和重要定理2.使用级数展开函数a.介绍级数展开函数的原理和步骤b.给出一个函数,使用级数展开进行近似计算c.分析级数近似计算的精确度和效果3.级数的收敛性与运算a.讨论级数收敛性的判别法b.介绍级数的运算性质和求和法则c.给出具体的例题,进行级数的运算和求和三、多元函数极值与最值实验1.多元函数的极值点求解a.介绍多元函数的极值点的定义和求解方法b.给出一个多元函数的实例,详细阐述求解过程c.分析极值点对应的函数值和意义2.多元函数的条件极值与最值a.讨论多元函数的条件极值的判定法b.给出一个具体的多元函数,求解其条件极值和最值c.分析条件极值和最值对应的函数值和意义3.利用MATLAB进行多元函数极值与最值的计算a.MATLAB求解多元函数极值与最值的基本语法和函数b.给出一个多元函数的具体问题,在MATLAB中进行求解c.分析结果的准确性和可行性四、曲线积分与曲面积分实验1.曲线积分的计算方法与应用a.介绍曲线积分的定义和计算方法b.给出一个具体的曲线积分问题,详细阐述计算过程c.分析曲线积分结果的几何意义2.曲线积分的应用举例a.讨论曲线积分在实际问题中的应用b.给出一个实际问题,使用曲线积分进行求解c.分析曲线积分结果的实际意义和应用价值3.曲面积分的计算方法与应用a.介绍曲面积分的定义和计算方法b.给出一个具体的曲面积分问题,详细阐述计算过程c.分析曲面积分结果的几何意义五、空间解析几何实验1.空间曲线的参数方程表示与性质a.介绍空间曲线的参数方程表示和性质b.给出一个具体的空间曲线,转化为参数方程表示c.分析参数方程对应的几何意义和性质2.平面与空间直线的位置关系a.讨论平面与空间直线的位置关系的判定方法b.给出一个具体的平面与空间直线的问题,判定其位置关系c.分析位置关系对应的几何意义和应用实例3.空间直线与平面的夹角和距离计算a.介绍空间直线与平面的夹角和距离的计算方法b.给出一个具体的空间直线和平面,计算其夹角和距离c.分析夹角和距离计算结果的几何意义总结:通过本次高等数学数学实验报告(二),我们深入了解了微分方程、级数、多元函数极值与最值、曲线积分、曲面积分以及空间解析几何的相关概念和应用。

数学实验“欧拉数值算法,Runge-Kutta数值算法”实验报告(内含matlab程序)

数学实验“欧拉数值算法,Runge-Kutta数值算法”实验报告(内含matlab程序)

西京学院数学软件实验任务书实验二十四实验报告一、实验名称:欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta 数值算法。

二、实验目的:进一步熟悉欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta 数值算法。

三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。

四、实验原理:1.欧拉数值算法(显式):微分方程里最简单的方程形式莫过于一阶常微分方程的初值问题,即:0(,)()dy f x y a x b dx y a y ⎧=≤≤⎪⎨⎪=⎩其中a ,b 为常数。

因为其简单但又是求解其他方程的基础,所以发展了许多典型的解法。

所有算法中的f 就是代表上式中(,)f x y ,而y f 表示(,)f x y y ∂∂,x f 表示(,)f x y x∂∂。

简单欧拉法是一种单步递推算法。

简单欧拉法的公式如下所示:1(,)n n n n y y hf x y +=+简单欧拉法的算法过程介绍如下:给出自变量x 的定义域[,]a b ,初始值0y 及步长h 。

对0,1,()/k b a h =-,计算1(,)k k k k y y hf x y +=+2.欧拉数值算法(隐式):隐式欧拉法也叫退欧拉法,隐式欧拉法的公式如下所示:111(,)n n n n y y hf x y +++=+隐式欧拉法是一阶精度的方法,比它精度高的公式是:111[(,)(,)]2n n n n n n h y y f x y f x y +++=++ 隐式欧拉的算法过程介绍如下。

给出自变量x 的定义域[,]a b ,初始值0y 及步长h 。

对0,1,()/k b a h =-,用牛顿法或其他方法求解方111(,)k k k k y y hf x y +++=+得出1k y +。

3.欧拉预估-校正法:改进欧拉法是一种二阶显式求解法,其计算公式如下所示:1[,(,)]22n n n n n n h h y y hf x y f x y +=+++11(,)[(,)(,)]2n n n n n n n n t y hf x y h y y f x y f x t ++=+⎧⎪⎨=++⎪⎩ 4.Runge-Kutta 数值算法:二阶龙格-库塔法有多种形式,除了改进的欧拉法外,还有中点法。

MATLAB基础性实验报告4

MATLAB基础性实验报告4

学生实验报告一、实验目的1. 归纳和学习求解常微分方程(组)的基本原理和方法;2. 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;3. 熟悉MATLAB软件关于微分方程求解的各种命令;4. 通过范例学习建立微分方程方面的数学模型以及求解全过程;通过该实验的学习,使学生掌握微分方程(组)求解方法(解析法、欧拉法、梯度法、改进欧拉法等),对常微分方程的数值解法有一个初步了解,同时学会使用MATLAB软件求解微分方程的基本命令,学会建立微分方程方面的数学模型。

这对于学生深入理解微分、积分的数学概念,掌握数学的分析思维方法,熟悉处理大量的工程计算问题的方法是十分必要的。

二、实验仪器、设备或软件:电脑,MATLAB软件三、实验内容1.微分方程及方程组的解析求解法;2.微分方程及方程组的数值求解法——欧拉、欧拉改进算法;3.直接使用MATLAB命令对微分方程(组)进行求解(包括解析解、数值解);4.利用图形对解的特征作定性分析;5.建立微分方程方面的数学模型,并了解建立数学模型的全过程。

四、实验步骤1.开启软件平台——MATLAB,开启MATLAB编辑窗口;2.根据微分方程求解步骤编写M文件3.保存文件并运行;4.观察运行结果(数值或图形);5.根据观察到的结果和体会写出实验报告。

五、实验要求与任务1.求微分方程的解析解,并画出它们的图形。

y '= y + 2 x, y (0) = 1, 0< x <1;解:命令为:dsolve('Dy=y+2*x','y(0)=0','x') 结果为:ans =2*exp(x) - 2*x – 2绘制图形程序:x=linspace(0,1,50);y=2*exp(x) - 2*x - 2;plot(x,y)图形如下:2.求微分方程⎪⎩⎪⎨⎧====-+]100[0)0(;0)0(01.03t uu u u u 的数值解,要求编写求解程序。

改进的欧拉法

改进的欧拉法
x0 = x1; y0 = y1;
}
Console.ReadKey();
}
}
}
通过这次实验我掌握了将得到的解进一步精确,而且要学会比较这几种方法的精确性,显然,四阶龙格库达比改进欧拉发精确,改进欧拉发比欧拉法精确。
实验难度不大,要比较n的取值不同,产生的影响不同。
代码
using System;
using System.Collections.Generic;
using System.Linq;
double x1 = 0, y1 = 0, yp, yc;
for (int n = 1; n <= N; n++)
{
x1 = x0 + h;
yp = y0 + h * f(x0, y0);
yc = y0 + h * f(x1, yp);
y1 = (yp + yc) / 2;
Console.WriteLine("x{0}={1:f2},y{2}={3:f4}", n, x1, n, y1);
Console.WriteLine("请输入h:");
double h = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入N:");
double N = Convert.ToDouble(Console.ReadLine());
{
Console.WriteLine("请输入x0:");
double x0 = Convert.ToDouble(Console.ReadLine());

Matlab实验报告五(微分方程求解Euler折线法)

Matlab实验报告五(微分方程求解Euler折线法)
y=1;
szj=[x,y];
fori=1:n-1
y=y+h*subs(f,{'x','y'},{x,y});
x=x+h;
szj=[szj;x,y];
end
Szj;
plot(szj(:,1),szj(:,2))
3.结果
4.结论及分析
通过实验,结论正确,证明分析无误。
三、实验小结
这次实验说实话不是很难,因为这两个题型老师在课堂上已经讲得很清楚了,再说课本上还有类试题型,所以很轻松地做出来了。
y =
2^(1/2)/(4*exp(2^(1/2)*t)) - (2^(1/2)*exp(2^(1/2)*t))/4
x =
cosh(2^(1/2)*t) - (2^(1/2)*sinh(2^(1/2)*t))/2
y =
-(2^(1/2)*sinh(2^(1/2)*t))/2
4.结论及分析
通过实验,结论正确,证明分析无误。
问题2.用Euler折现法求解常微分方程 的数值解(步长 ),求解范围 ,并作出去图像.
1.分析问题
本题是用Euler折线法根据已知条件求解微分方程组的数值解,并作出它的图形。
2.问题求解
clear
f=sym('y-12*x^2/y^3');
a=0;
b=2;
h=0.001;
n=(b-a)/h+1;
x=0;
x=simple(x)
y=simple(y)
ezplot(x,y,[0,0.5]);axisauto
3.结果
x =
exp(2^(1/2)*t)/2 + 1/(2*exp(2^(1/2)*t)) - (2^(1/2)*exp(2^(1/2)*t))/4 + 2^(1/2)/(4*exp(2^(1/2)*t))
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京理工大学珠海学院实验报告
ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY
班级2012电气2班学号120109021010姓名陈冲指导教师张凯成绩
实验题目(实验五)欧拉法实验地点及时间JD501 2014/1/2(6-7节)
一、实验目的
1.掌握用程序语言来编辑函数。

2.学会用MATLAB编写Euler.m以及TranEuler.m函数。

二、实验环境
Matlab软件
三、实验内容
1、以书中第124页题目11为例编辑程序来实现计算结果。

2、使用MATLAB进行编写:
第一步:编写Euler.m函数,代码如下
编写TranEuler.m函数,代码如下
第二步:利用上述函数编辑命令:(可见实验结果中的截图)
在此之前先建立一个名为f.m的M文件,代码如下
function z=f(x);
z=8-3y;
再编辑代码:
得到了欧拉法的结果:y(0.4)=2.47838030901267
编辑另一段命令:
得到改进欧拉法的结果:y(0.4)=2.46543714659780
在此基础上,我还编辑龙格库达的命令窗口代码,如下:
四、实验题目
用欧拉法和改进欧拉法求解初值问题'83,(0)2
y
=-=,试取步长0.2
y y y
h=计算(0.4)的近似值。

五、实验结果
六、总结
通过这次实验我掌握了将得到的解进一步精确,而且要学会比较这几种方法的精确性,显然,四阶龙格库达比改进欧拉发精确,改进欧拉发比欧拉法精确。

实验难度不大,要比较n的取值不同,产生的影响不同。

…….。

相关文档
最新文档