⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp7_1.m

📁 使用matlab软件编制的计算程序
💻 M
字号:
% exp7_1.m --- 学习一阶常微分方程(组)初值问题的求解命令

function study_ode45
% [简介]  ode45 是解一阶常微分方程(组)初值问题的命令
%         基于 4-5 阶的 Runge-Kutta 法(自适应(变步长))
%         其基本原理是在每一步中计算6个近似斜率 K1,K2,...,K6
%         用其中 4 个可得一个 4 阶的 RK 法,用其中 5 个可得一个 5 阶的 RK 法
%         两个结果进行比较,若两个结果相近则接受该近似值,若两个结果超出指定的精度,则减小步长.
%         若超过要求的有效位数,则增加步长.

% [例]    求解下面方程组
%               y1' = f1(x,y1,y2) =  y2 ,  y1(0) = -1
%               y2' = f2(x,y1,y2) = -y1 ,  y2(0) =  0
%         写成向量形式
%                Y' = F(x,Y)
%         其中
%                    | y1(x)|       | f1(x,y1,y2)|          | -1|
%                Y = |      | , F = |            | , Y(0) = |   |
%                    | y2(x)|       | f2(x,y1,y2)|          |  0|
%         精确解
%               y1 = -cos(x), y2 = sin(x)
%         即
%                    | -cos(x)| 
%                Y = |        | 
%                    |  sin(x)|
% [调用方法]  见下

ab = [0,7];              % 求解区间(节点的离散是自动的,不一定等分)
                         % 如果 ab =[x1,x2,...,xn] 则在这些节点上求解,如 ab = 0:0.2:7;
Y0 = [-1,0];             % 初值 

[x,Y]=ode45(@F,ab,Y0);   % x 是离散的自变量(列向量)
                         % Y 是数值解,Y 的第 k 列 Y(:,k) 存放第 k 个函数的数值解

% 作图比较
xx = 0:0.1:7; yy1 = -cos(xx); yy2 = sin(xx);

figure(1)
plot(xx,yy1,'k-',x,Y(:,1),'r.','MArkerSize',6);
legend('精确解','数值解')
title('第一个函数','Color','b')
text(1.7,0,'\leftarrow y = -cos(x)')

figure(2)
plot(xx,yy2,'k-',x,Y(:,2),'r.','MArkerSize',6);
legend('精确解','数值解')
title('第二个函数','Color','b')
text(1.7,0,'   y = sin(x) \rightarrow')
% ------------------------------------------
function Z = F(x,Y)
% x 必须是标量, Z 必须列向量
Z = [ Y(2)
     -Y(1)];
 

% ********** 你的实验 ********** 
% (1) 用ode45解 P182 例8,作图比较数值解与精确解
% (2) 用ode45解 P187 实验课题(三)(1),作图同上要求

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -