matlab解微分方程:方向场

这篇具有很好参考价值的文章主要介绍了matlab解微分方程:方向场。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在微分方程中,常见的形式是:

x ′ = f ( x , t ) x'=f(x,t) x=f(x,t)
方向场的每一个矢量可以形象地刻画一阶微分方程的解。在方向场中的每个点处,都会出现一条其斜率等于通过该点的微分方程解的矢量。给定一个初值,微分方程对应一条curve曲线,点上的方向矢量和相切。

例子:解析解

d x d t = x − t 2 \frac{d x}{d t}=x-t^{2} dtdx=xt2

我们可以求得解析解:

x ( t ) = C e t + t 2 + 2 t + 2 x(t)=C e^{t}+t^{2}+2 t+2 x(t)=Cet+t2+2t+2

编写matlab代码:

clc 
clear
% 创建一个区域
[t,x] = meshgrid(-2:0.2:3,-1:0.2:2);
% 计算方向向量的斜率
slope = x - t.*t;
% find the length of the vector (1,slope)
length = sqrt(1 + slope .* slope);
% 绘制方向矢量
quiver(t,x,1./length,slope./length,0.5,'Color',	'#0072BD')
axis equal equal
hold on
% 给定不同的初值求解析解
tt = [-2:0.2:3];
for cval = -10:1:10
x_exact = cval * exp(tt) + tt.*tt + 2*tt + 2;
plot(tt,x_exact,'Color','#D95319')
end
xlim([-2,3]);
ylim([-1,2]);
xlabel('t','Fontsize',20)
ylabel('x','Fontsize',20)

matlab解微分方程:方向场,MATLAB,matlab,方向场,微分方程

例子:数值解

还是上面的这个方程,如果我们解不出解析解,那么我们就用数值解来算一下。

d x d t = f ( x , t ) = x − t 2 \frac{d x}{d t}=f(x,t)=x-t^{2} dtdx=f(x,t)=xt2

使用前向欧拉法的迭代方法:
x k + 1 = x k + h f ( x k , t k ) x_{k+1}=x_{k}+hf(x_k,t_k) xk+1=xk+hf(xk,tk)

clc 
clear
% 创建一个区域
[t,x] = meshgrid(-2:0.2:3,-1:0.2:2);
% 计算方向向量的斜率
slope = x - t.*t;
% find the length of the vector (1,slope)
length = sqrt(1 + slope .* slope);
% 绘制方向矢量
quiver(t,x,1./length,slope./length,0.5,'Color',	'#0072BD')
axis equal equal
hold on
% 给定不同的初值求数值解
tt = [-2:0.2:3];
t_step = 0.2;
k=1;
for x0 = linspace(0.5,2,15)
    x_numer(1) = x0;
    for t_numer = tt(1:end-1)
        k = k + 1;
        slope_numer = x_numer(k-1) - t_numer.*t_numer;
        x_numer(k) = x_numer(k-1) + slope_numer * t_step;
    end
    plot(tt,x_numer,'Color','#D95319');
    k=1;
end
xlim([-2,3]);
ylim([-1,2]);
xlabel('t','Fontsize',20)
ylabel('x','Fontsize',20)

matlab解微分方程:方向场,MATLAB,matlab,方向场,微分方程文章来源地址https://www.toymoban.com/news/detail-644797.html

到了这里,关于matlab解微分方程:方向场的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模\MATLAB】掌握用Matlab求解微分方程问题

    d y d t = a y 2 cfrac{dy}{dt}=ay^2 d t d y ​ = a y 2 结果 d 3 y d t 3 = b y cfrac{d^3y}{dt^3}=by d t 3 d 3 y ​ = b y 结果 x 2 + y + ( x − 2 y ) y ′ = 0 x^2+y+(x-2y)yprime=0 x 2 + y + ( x − 2 y ) y ′ = 0 结果: d 2 y d t 2 = a y , 初 始 条 件 为 y ( 0 ) = 5 , y ′ ( 0 ) = 1 cfrac{d^2y}{dt^2}=ay, text初始条件为y(0)=5,yprime(

    2024年02月03日
    浏览(45)
  • Matlab偏微分方程拟合 | 完整源码 | 视频教程

    作者简介:工学博士,高级工程师,专注于工业软件算法研究 本文已收录于专栏:《 复杂函数拟合案例分享 》本专栏旨在提供 1.以 案例 的形式讲解各类复杂函数拟合的程序实现方法,并提供所有案例 完整源码 ;2. 复杂函数 包含:分段函数、积分函数、常/偏微分函数、隐

    2024年04月10日
    浏览(92)
  • matlab使用教程(25)—常微分方程(ODE)选项

            解算 ODE 经常要求微调参数、调整误差容限或向求解器传递附加信息。本主题说明如何指定选项以及每个选项与哪些微分方程求解器兼容。         使用 odeset 函数创建 options 结构体,然后将其作为第四个输入参数传递给求解器。例如,要调整相对和绝对误差容

    2024年02月11日
    浏览(58)
  • matlab求解时变系统的Riccati矩阵微分方程

    对于代数Riccati方程的求解网上能找到很多的资源,matlab也有成熟的函数,但是对于时变系统的Riccati矩阵微分方程,能找到的资料还比较少。 可以在网上找到很多资料,如 https://blog.csdn.net/m0_62299908/article/details/127807014 matlab也有相应的一系列函数 lqr、icare等。 对于这些函数不

    2024年02月05日
    浏览(46)
  • 用MATLAB求一阶微分方程(组)数值解

    标准形式要先写成左边是y的导数右边是本身函数或者自变量,然后写成.m文件类似: 如果有多个微分方程,dy=zeros(3,1);% 一定要写成列向量 3、[0,1,1]都是方程(组)的初始值,并且初始值的x=0; 就会得到一系列x,y值; ode45(最常用) **问题类型:**非刚性 **精准度:**中等 ode15s

    2024年02月11日
    浏览(57)
  • MATLAB求解偏微分方程【PDE和差分法】

    目录 前言  1.用差分法求解 显示差分 其他方程举例 : r是什么 2.PDETOOL 3.pdepe函数 示例:热方程 代码:   在我们处理一些公式时,常常会有偏微分方程出现,所以我今天整理了一下求解偏微分方程的常用方法,希望有所帮助 在1979年复旦大学学者的一篇论文里,谈到了偏微分

    2024年02月04日
    浏览(50)
  • 40.利用欧拉法求解微分方程组(matlab程序)

    1. 简述        求解微分方程的时候,如果不能将求出结果的表达式,则可以对利用数值积分对微分方程求解,获取数值解。欧拉方法是最简单的一种数值解法。前面介绍过MATLAB实例讲解欧拉法求解微分方程,今天实例讲解欧拉法求解一阶微分方程组。 本文理论部分来自知乎

    2024年02月14日
    浏览(58)
  • matlab使用教程(27)—微分代数方程(DAE)求解

            微分代数方程是一类微分方程,其中一个或多个因变量导数未出现在方程中。方程中出现的未包含其导数的变量称为代数变量,代数变量的存在意味着您不能将这些方程记为显式形式 y ′ = f t , y 。相反,您可以解算下列形式的 DAE:         • ode15s 和 ode23t

    2024年02月11日
    浏览(47)
  • matlab使用教程(28)—微分方程(ODE)求解常见问题

            本博客说明如何将 ODE 解约束为非负解。施加非负约束不一定总是可有可无,在某些情况下,由于方程的物理解释或解性质的原因,可能有必要施加非负约束。仅在必要时对解施加此约束,例如不这样做积分就会失败或者解将不适用的情况。         如果解的

    2024年02月11日
    浏览(55)
  • matlab解常微分方程常用数值解法2:龙格库塔方法

    总结和记录一下matlab求解常微分方程常用的数值解法,本文将介绍龙格库塔方法(Runge-Kutta Method)。 龙格库塔迭代的基本思想是: x k + 1 = x k + a k 1 + b k 2 x_{k+1}=x_{k}+a k_{1}+b k_{2} x k + 1 ​ = x k ​ + a k 1 ​ + b k 2 ​ k 1 = h f ( x k , t k )  and  k 2 = h f ( x k + B 1 k 1 , t k + A 1 h ) k_{1}=h

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包