实验4(延伸) MATLAB与微分方程
Posted 从零开始的智障生活
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验4(延伸) MATLAB与微分方程相关的知识,希望对你有一定的参考价值。
实验4(延伸) MATLAB与微分方程
由于 实验4 的导弹飞机追击问题需要用到,微分方程的概念,但MATLAB更偏向于离散型概念理解,直接应用并理解比较困难,所以这里单独将微分方程概念抽出来。本文将着重阐述微分方程的概念以及常见应用。关于解微分方程的 MATLAB 命令介绍在本文最下面。
一、微分方程的基本概念
% 初值条件:微分方程过点(1,2)
% 方程建立:任一点(x,y)处的切线的斜率为2x
clear;close all;clc;
syms f(x);
eqn=diff(f,x)==2*x;
cond=f(1)==2;
dsolve(eqn,cond);
disp(ans);% 输出 1 + x^2
% 2. 方程建立:加速度:(ds/dt)/dt=-0.4,本体是利用微分方程的特性求解
% 利用初值条件求s特解,能不能直接在dsolve中加上两个特解去解啊?能
clear;close all;clc;
syms s(t);
eqna=diff(s,t,2)==-0.4; % 基于要求的通解,先建立一个微分方程;但注意这是二阶,一般需要两个初值条件
v=diff(s,t); % 再基于要求的通解,建立一个相关函数,这里是v,目的是给第二个初值条件创建函数
cond=[s(0)==0,v(0)==20]; % 一个初值条件是通解来的,一个条件是上面v给的。
s=dsolve(eqna,cond);% 获取s特解
disp(s);
% 车量停止的速率v=0;即diff(s,t)==0,解出t,
eqnv=diff(s,t)==0;
tend=solve(eqnv,t);
% 当车量停止的时刻是tend,代入s(t),得出结果,符号函数要用命令eval;
t=tend;
fprintf("制动结束时间:%.2fs,制动距离:%.2fm\\n",tend,eval(s));
二、可分离变量的微分方程
这一节我们讨论一阶微分方程。
>> syms y(x);
>> eqn=diff(y,x)==2*x*y;
>> y=dsolve(eqn);
>> y
y = C6*exp(x^2)
>> syms M(t) r M0;
>> eqn=diff(M,t)==-r*M;
>> cond=M(0)==M0;
>> M=dsolve(eqn,cond);
>> disp(M);
M0*exp(-r*t)
clear;close all;clc;
syms m g k v(t)
eqn=diff(v,t)==g-k*v/m;
cond=v(0)==0;
v=dsolve(eqn,cond);
disp(v); % 输出:(g*m - g*m*exp(-(k*t)/m))/k
三、齐次方程
这一节我们导论一阶微分方程。
clear;close all;clc;
syms y(x) ;
eqn=diff(y,x)==y^2/(x*y-x^2);
y=dsolve(eqn);
disp(y);
clear;close all;clc;
syms y(x);
eqn=diff(y,x)==y/(sqrt(x^2+y^2)+x);
dsolve(eqn);
fprintf("以y为因变量,x为自变量:\\n");
disp(ans);
% 以y为因变量,x为自变量:
% 0 这个是当y=0时
% (C20*(C20 + 2*x))^(1/2) 这个与结果是一样的 y>0
% -(C20*(C20 + 2*x))^(1/2) 这个与结果是相反数的,因为y<0是人为规定的
% x*1i 这个结果是虚数
% -x*1i 这个结果是虚数
syms x(y);
eqn=diff(x,y)==(sqrt(x^2+y^2)+x)/y;
dsolve(eqn);
fprintf("以x为因变量,y为自变量:\\n");
disp(ans);
% 以x为因变量,y为自变量:
% ((C22^2*y^2)/4 - 1)/C22
% y*1i
% -y*1i
四、一阶线性微分方程
这一节我们讨论一阶微分方程。
五、可降阶的高阶微分方程
六、高阶线性微分方程
七、常系数齐次微分方程
八、常系数非齐次线性微分方程
九、常系数线性微分方程组解法举例
帮助说明:
以上是关于实验4(延伸) MATLAB与微分方程的主要内容,如果未能解决你的问题,请参考以下文章
数值分析实验之矩阵的LU分解及在解线性方程组中的应用(MATLAB 代码)
SOR迭代法实验报告c语言,数学实验“线性方程组的J-迭代,GS-迭代,SOR-迭代解法”实验报告(内含matlab程序代码).doc...