计算方法试验报告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; -b 0];U=[];u(:,1)=[0;b];n=1000000;h=6*pi/n;for i=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);grid on;subplot(1,2,2);plot(u(1,:),u(2,:));grid on;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; u(:,i+1)=u(:,i)+h*A*(u(:,i)+v2)/2;endt=1:n+1;subplot(1,2,1);plot(1:n,delta);grid on;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);grid on;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.5 delta(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;subplot(1,2,1);plot(1:n,delta);grid on;subplot(1,2,2);结果如下:【实验分析】通过这几种方法对比,发现最为稳定的是多步法Adams公式和4阶RK法,其次是梯形法,而欧拉法最为不稳定。
MATLAB 基础知识
一、MATLAB简介
二、MATLAB基础知识
1、命令窗口是用户与MATLAB进行交互作业的主要场所,用户输入的MATLAB交互命令均在命令窗口执行。
例如:在MATLAB命令窗口下键入
a=[3 2 3;4 7 6;7 5 9]
按回车键后,显示结果
a=
3 2 3
4 7 6
7 5 9
2、求逆矩阵命令
格式:[变量]=inv(参数)
例如:输入b=inv(a),按回车后,显示
b= 1.3750 -0.1250 -0.3750
0.2500 0.2500 -0.2500
-1.2083 -0.0417 0.5417
3、MATLAB系统还具有保存历史纪录的功能,它将本次启动MATLAB系统之后,用户输入的命令和创建的所有变量的值保存起来,用户通过方向键可查找所需的命令。
MATLAB提供了存储变量和删除变量的命令。
SAVE [文件名] [变量名1,变量名2,。.]
功能:将命令中的变量保存在给出的文件中。
说明:(1)若过文件名省略,默认保存在MATLAB.MAT中。
(2)若变量名省略,则保存所有的变量到指定的文件中。
(3)若文件名和变量名都省略,则保存所有定义过的变量到MATLAB.MAT中。
例如:SAVE AA.MAT a b c %将变量a b c保存在文件AA.MAT中。
SAVE BB.MAT % 将所有的变量保存到文件BB.MAT中。
SAVE % 将所有变量保存到文件MATLAB.MAT中。
clear [变量名1 变量名2,。]
功能:删除指定的变量。
说明:若变量名表省略,表明删除当前工作空间中的所有变量。
例如:clear a b c %删除变量a b c
clear %删除当前工作空间的所有变量。
MATLAB还提供了一些命令,专门管理和控制命令窗口。例如:
clc
格式:clc
功能:清除命令窗口。
home
格式:home
功能:光标移动到左上角
who
格式:who
功能:查看当前的所有变量,只给出变量名。
whos
格式:whos
功能:查看当前的所有变量,给出变量的详细信息。信息同变量浏览器。
clear
格式:clear [变量名]
功能:删除后面列出的变量,如果变量名省略,则删除所有的变量。
4、MATLAB中的常量
MATLAB提供了整数、实数、复数和字符四种类型数据。对应的常量类型也是这四种。实数在屏幕显时默认的小数位数为4位。可以用命令改变实数的显示格式。
命令format
格式:format '格式'
例如:format long :输出实数为16位
format short e :5位加指数
format long e : 16位加指数
format rat : 有理数近似
矩阵操作
1、提取矩阵的元素
例如:A=[1 2 3 3; 3 2 4 1; 3 4 5 6]
执行b=A(1,2),结果为:
b= 2
执行v=A([1,2],[3,4]),结果为:
v= 3 3
4 1
对于第一个问题可以直接采用函数求解的方法 y1=dsolve('D2y+4*Dy+29*y=0','Dy(0)=15',' y(0)=0','x') y1=(3*sin(5*x))/exp(2*x) y2=dsolve('D2y-2*Dy+5*y=sin(2*x)') y2=sin(2*x)/5 + C5*cos(2*t)*exp(t) + C6*sin(2*t)*exp(t) 对于第三个问题,那么不能求出通解,所以只能借助于数值求解的方法来求解,数值求解采用ode45函数来求解的方法,具体过程如下: 先编写待求解的微分方程函数,打开编辑器: %编写要求解的微分方程组函数表达式! function dy = rigid(t,y) dy = zeros(3,1); % 定义数组函数! dy(1) = y(2) * y(3);%第一个微分方程; dy(2) = -y(1) * y(3);%第二个微分方程; dy(3) = -0.51 * y(1) * y(2);%第三个微分方程; 并以默认的文件名保存函数文件! 编写命令行,对微分方程求解: options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);%定义求解选项包含精度项! [T,Y] = ode45(@rigid,[0 12],[0 1 1],options);%采用ode45求解方程组,并把求解结果保存到数组T,Y中! plot(T,Y(:,1),'r-',T,Y(:,2),'b-.',T,Y(:,3),'k.')%作图! grid minor%网格化! 运行上面的代码就得到函数的解: 附上图片! 如果有什么问题可以问我!。
MATLAB 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB 语言在各国高校与研究单位起着重大的作用。
补充:
MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。MATLAB自问世以来,就是以数值计算称雄。MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使得MATLAB高度“向量化”。经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。美国许多大学的实验室都安装有MATLAB供学习和研究之用。在那里,MATLAB是攻读学位的大学生硕士生、博士生必须掌握的基本工具。MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列 MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。 MATLAB5.3中包括了图形界面编辑GUI,改变了以前单一的“在指令窗通过文本形的指令进行各种操作”的状况。这可让使用者也可以象VB、VC、VJ、DELPHI等那样进行一般的可视化的程序编辑。在命令窗口(matlab command window)键入simulink,就出现(SIMULINK) 窗口。以往十分困难的系统仿真问题,用SIMULINK只需拖动鼠标即可轻而易举地解决问题,这也是近来受到重视的原因所在。
作图的plot函数和ezplot比较常见
差分的没看,不知道
线性的linprog或者用牛顿法,都可以,前面的比较好用
非线性用最小二乘或者lsqcurvefit非线性拟合
优化的有很多,黄金分割,进退法,这些都可以,最速下降法都可以,这几个也是可以用手算的,当然最速下降法手算有点难,因为当他接近目标的时候会很慢,算很多次,一般先最速下降,后牛顿,这样配合比较好
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.646秒