精华内容
下载资源
问答
  • 2021-04-20 05:06:51

    共回答了19个问题采纳率:89.5%

    function dx=appollo(t,x)

    mu=1/82.45;

    mustar=1-mu;

    r1=sqrt((x(1)+mu)^2+x(3)^2);

    r2=sqrt((x(1)-mustar)^2+x(3)^2);

    dx=[x(2)

    2*x(4)+x(1)-mustar*(x(1)+mu)/r1^3-mu*(x(1)-mustar)/r2^3

    x(4)

    -2*x(2)+x(3)-mustar*x(3)/r1^3-mu*x(3)/r2^3];

    --------------------------------------------------------------------------------------

    x0=[1.2;0;0;-1.04935751];%x0(i)对应与xi的初值

    options=odeset('reltol',1e-8);%该命令的另一种写法是options=odeset;options.reltol=1e-8;

    tic

    [t,y]=ode45(@appollo,[0,20],x0,options);%t是时间点,y的第i列对应xi的值,t和y的行数相同

    toc

    plot(y(:,1),y(:,3))%绘制x1和x3,也就是x和y的图形

    title('Appollo卫星运动轨迹')

    xlabel('X')

    ylabel('Y')

    1年前

    10

    更多相关内容
  • matlab求解微分方程组代码 计算方法(calculation methodb) 该项目是《计算方法》一书中提到的经典方法和算法的matlab程序实现,包含代码详解和运行过程。 :grinning_face_with_big_eyes: 1.简介 2.线性方程组的...
  • MATLAB求解微分方程及微分方程组方法介绍和例子。Matlab
  • TMU_BME_2013 Topic: 如何使用 MATLAB微分方程组 a.What ? 微分方程 指描述未知函数的导数与自变 量之间的关系的方程未知函数是一元函 数的微分方程称作 常微分方程 未知函数 是多元函数的微分方程称作 偏...
  • 精通matlab求解微分方程组和相平面图
  • matlab求解微分方程组代码 Gauss-Elimination A java project for qlz's Linear Algebra Collaborators: @NJUBrocoli @RosalieMiao 一个极其虐待用户的项目 一份极其丢人的文档 妈妈再也不用担心我的线代作业算不对...
  • //函数定义,用于计算微分方程组中各方程右端函数值,连分式法对微分方程组积分一步函数pbs1将调用该函数f。 //t为自变量,x,y为函数值,dx,dy为右端函数值(即微分方程的值)。 f(t,x,y,dx,dy)= { dx=-(x^3)-y, dy...

    !using["XSLSF"];                //使用命名空间XSLSF

    //数组xArray存放x的值;ti为当前有效值的个数;tmax为ti对应的时间;tmin为起始时间。

    xt(t:k:xArray,ti,tmax,tmin)=

    {

    k=(t-tmin)/(tmax-tmin)*ti-1,

    if[k<0, k=0], if[k>=ti, k=ti-1],

    xArray.getrai[k]

    };

    //数组yArray存放y的值;ti为当前有效值的个数;tmax为ti对应的时间;tmin为起始时间。

    yt(t:k:yArray,ti,tmax,tmin)=

    {

    k=(t-tmin)/(tmax-tmin)*ti-1,

    if[k<0, k=0], if[k>=ti, k=ti-1],

    yArray.getrai[k]

    };

    //函数定义,用于计算微分方程组中各方程右端函数值,连分式法对微分方程组积分一步函数pbs1将调用该函数f。

    //t为自变量,x,y为函数值,dx,dy为右端函数值(即微分方程的值)。

    f(t,x,y,dx,dy)=

    {

    dx=-(x^3)-y,

    dy=x-y^3

    };

    //用连分式法对微分方程组进行积分,获得理论值。

    //t1,t2为积分的起点和终点。

    //h,s为自动变量。

    //模块变量:hf为函数f的句柄,要预先获得该句柄;Array为工作数组;step为积分步长;eps为积分精度。

    积分(t1,t2:h,s:hf,Array,step,eps)=

    {

    s=ceil[(t2-t1)/step],        //计算积分步数

    h=(t2-t1)/s,                 //重新计算积分步长

    {   pbs1[hf,t1,Array,h,eps], //对微分方程组积分一步

    t1=t1+h                  //积分步长增加

    }.until[abs(t1-t2)

    };

    数据(:i,h,t1,t2,x,y,static,free:hf,Array,step,eps,max,xArray,yArray,ti,tmax,tmin)= //微分方程组积分获得数据

    {

    if[free,delete(Array),delete(xArray),delete(yArray),return(0)],

    hf=HFor("f"),                               //模块变量hf保存函数f的句柄,预先用函数HFor获得该句柄

    step=0.01,eps=1e-6,                         //积分步长step要合适,积分精度eps越小越精确,用于对微分方程组积分一步函数pbs1

    Array=new[rtoi(real_s),rtoi(2*15)],         //申请工作数组

    max=1001,

    xArray=new[rtoi(real_s),rtoi(max)],         //申请工作数组

    yArray=new[rtoi(real_s),rtoi(max)],         //申请工作数组

    Array.setra(0,1,0.5),                         //设置积分初值,通过模块变量Array传递,Array是一个数组

    xArray.setra(0,1),                          //设置xArray的第一个值

    yArray.setra(0,0.5),                          //设置yArray的第一个值

    ti=1, h=step*3, tmin=0, tmax=0, t1=0, t2=h,

    i=1,(i

    积分(&t1,t2),                             //从t1积分到t2

    Array.getra(0,&x,&y),                     //从数组Array获得t2时的积分值

    xArray.setra(i,x), yArray.setra(i,y),     //将积分值保存到数组

    ti=i+1, tmax=t1, t2=t2+h,

    i++

    }

    };

    //绘制函数图形

    (::hxt,hyt)= hxt=HFor("xt"), hyt=HFor("yt");  //获得函数xt和yt的句柄,保存在模块变量中

    gleDrawScene[HFor("Scene")],stop();      //设置场景绘制函数后退出

    Scene(::hxt,hyt,tmax,tmin)=

    {

    glClear[],                           //清除屏幕以及深度缓存

    glLoadIdentity[],                    //重置视图

    glTranslated[0,0,-20],               //移动坐标,向屏幕里移动10个单元

    glColor3d[0,0,1],                    //设置颜色

    fgPlot[hxt,tmin,tmax,FG_Y,-1,2],   //绘制一元函数图象

    glColor3d[1,0,0],                    //设置颜色

    fgPlot[hyt,tmin,tmax,FG_Y,-1,2]    //绘制一元函数图象

    };

    展开全文
  • Matlab 求解微分方程(ODE)
  • Matlab求解微分方程()及偏微分方程()
  • MATLAB解微分方程组

    千次阅读 多人点赞 2019-01-22 18:55:09
    单一微分方程组 S=dsolve(eqn,cond) eqn是微分方程等式,其中微分用diff函数表示,cond是确定微分方程不定系数的条件。注意函数要用带括号的形式定义。即: y(x)=2∗x;y(x)=2*x;y(x)=2∗x; 不能是 y=2∗x;y=2*x...

    解单一微分方程组

    S=dsolve(eqn,cond)

    eqn是微分方程等式,其中微分用diff函数表示,cond是确定微分方程不定系数的条件。注意函数要用带括号的形式定义。即:
    y ( x ) = 2 ∗ x ; y(x)=2*x; y(x)=2x; 不能是 y = 2 ∗ x ; y=2*x; y=2x;
    确定初始条件时要设置一个新变量:
    D y = d i f f ( y , x ) D y ( 0 ) = = 1 Dy=diff(y,x)\quad Dy(0)==1 Dy=diff(y,x)Dy(0)==1
    如果没有cond则为解中含有不定系数C。

    举例

    求解微分方程: y ′ ′ ′ − 3 y ′ ′ + 3 y ′ − y = − 1 y&#x27;&#x27;&#x27;-3y&#x27;&#x27;+3y&#x27;-y=-1 y3y+3yy=1
    初始条件 y ′ ′ ( 0 ) = y ′ ( 0 ) = 1 , y ( 0 ) = 2 y&#x27;&#x27;(0)=y&#x27;(0)=1,\quad y(0)=2 y(0)=y(0)=1,y(0)=2
    在这里插入图片描述

    解微分方程组

    Y=dsolve(eqns,cond)

    Y、eqn的形式和solve中的Y相同(参见解方程组部分)

    举例

    { x ′ − 2 y ′ ′ − 2 y = 0 , x ( 0 ) = x ′ ( 0 ) = 0 x ′ ′ − 2 y ′ = 2 s i n ( t ) , y ( 0 ) = y ′ ( 0 ) = 1 \left\{ \begin{aligned} x&#x27;-2y&#x27;&#x27;-2y=0,\quad x(0)=x&#x27;(0)=0\\ x&#x27;&#x27;-2y&#x27;=2sin(t),\quad y(0)=y&#x27;(0)=1 \end{aligned} \right. {x2y2y=0,x(0)=x(0)=0x2y=2sin(t),y(0)=y(0)=1在这里插入图片描述

    展开全文
  • 求解微分方程组 依赖 用 Fortran 90 编写的代码 gfortran 编译器 使用 Matlab/Octave 绘制解决方案 如何使用 运行代码 代码在 Fortran 90 中运行,您将需要一个 Fortran 编译器,例如 gfortran。 在代码中更改了...
  • 如何用matlab求解非线性微分方程组(基于龙格库塔的数值微分算法)?.docx
  • Matlab求解微分方程组

    万次阅读 多人点赞 2017-04-26 16:55:58
    (1)求解普通微分方程组:使用ode45方法 1. 创建一个函数文件eq2.m,在函数文件中描述这个微分方程组: %eq2.m文件 %描述微分方程组 function dy=eq2(t,y) %说明微分变量是二维的,令y(1)=x,y(2)=y ...

    我们采用ode方法:


    (1)求解普通微分方程组:使用ode45方法


    1. 创建一个函数文件eq2.m,在函数文件中描述这个解的微分方程组:

    %eq2.m文件
    %描述微分方程组
    
    function dy=eq2(t,y) 
     %说明微分变量是二维的,令y(1)=x,y(2)=y
    dy=zeros(2,1); 
    %微分方程组
    dy(1)=5*(1-y(1))/sqrt((1-y(1))^2+(t-y(2))^2);
    dy(2)=5*(1-y(2))/sqrt((1-y(1))^2+(t-y(2))^2);
    end


    2.外部调用ode45函数求解微分方程组:

    [t,y]=ode45(@eq2,[0,2],[0,0]);

    ode45函数说明:第一个参数是方程的名称,第二个参数是指求解时t的范围,第三组参数是指y中每个元素的初值。

    [t,y]=ode45(@eq2,[t1,t2],[y1(0),y2(0)]);


    3.绘制响应曲线

     plot(t,y(:,1),'-',t,y(:,2),'*')
     

    y(1)用-绘制,y(2)用*绘制(下面的两条曲线重合了)





    展开全文
  • matlab求解含时微分方程组-ode45龙格库塔方法.docx
  • matlab解微分方程组代码下载pde1d 用于Octave和MATLAB的一维偏微分方程求解器 pde1d在单个空间变量和时间中求解偏微分方程组。 输入大部分与MATLAB函数pdepe兼容。 许多pdepe示例仅需很小的改动就可以与pde1d一起...
  • 文章目录前言求解微分方程组求解矩阵微分方程组总结 前言 上一篇我已经详细讲过求微分方程,这一篇是对上一篇的补充,也就是变得稍微复杂一点,就是要求方程组了,如果你学会了上一篇,那么求解方程组其实并不难了。...
  • 一般微分方程的数值解法很大一类是关于微分方程初值问题的数值解法,这类问题需要用一阶显式的微分方程组来描述为 x˙(t)=f(t,x(t))\dot{\boldsymbol{x}}(t)=\boldsymbol{f}(t, \boldsymbol{x}(t))
  • Matlab求解微分方程组及偏微分方程组.doc
  • 基于Matlab常系数线性微分方程组求解.pdf
  • 龙格库塔法是用于非线性常微分方程的重要的一类隐式或显式迭代法。
  • matlab常微分方程和常微分方程组求解-matlab常微分方程和常微分方程组求解.pdf matlab常微分方程和常微分方程组求解
  • MATLAB算法-求解微分方程数值和解析.ppt
  • MATLAB求解微分方程

    万次阅读 多人点赞 2020-04-21 02:52:30
    一、微分方程的符号 dsolve(‘方程1’,‘方程2’,…,‘方程n’,‘初始条件’,‘自变量’) ...例1:求解微分方程: y=dsolve('D2y-2*Dy+y-x^2=0','x') 例2: : y=dsolve('D2y+4*Dy+29*y','y(...
  • matlab求解微分方程组和相平面图,通过编程实战掌握具体应用。包括matlab求解微分方程组和相平面图前、matlab求解微分方程组和相平面图中、matlab求解微分方程组和相平面图后。
  • matlab求解微分方程的解析

    千次阅读 2022-03-21 10:08:38
    本文将研究微分方程的解析算法,介绍在MATLAB 环境中如何用微分方程求解函数直接得出线性微分方程组的解析,并对一阶简单的非线性微分方程的解析解求解进行探讨,从而得出结论,一般非线性微分方程是没有解析...
  • matlab求解微分方程

    千次阅读 2021-04-23 13:17:10
    二、函数功能介绍及例程1、dsolve 函数dsolve函数用于求常微分方程组的精确 也称为常微分方程的符号。如果没有初始条件或边界条件 则求出通 如果有 则求出特。1)函数格式Y dsolve(‘eq1,eq2,...
  • matlab解微分方程组

    2020-02-11 23:15:55
    解微分方程组: x’=-x^3-y,x(0)=1 y’=x-y^3,y(0)=0.5 0<t<30 编辑器窗口: %M函数eg6_3fun.m function f=eg6_3fun(t,x) f(1)=-x(1)^3-x(2); f(2)=x(1)-x(2)^3; f=f(????;%注意要保证f为列向量 指令窗口: ...
  • matlab求解微分方程组代码 [removed] 操纵性大作业说明文档 实验目标 基于Abkowitz非线性数学模型,构建关于船舶运动与舵角的操纵性常微分方程,求解模拟船舶在下列三个试验中的运动状态: 回转试验 回舵试验 Z形...
  • 对于偏微分方程求解Matlab提供了两种工具。第一种是pdepe()函数,它的特点是通用性好,不受求解阶次的限制,不足之处是只支持命令行的格式;第二种是PDE工具箱,它的特点是提供了一个GUI界面,简洁易懂可视,...
  • 高阶常微分方程组 例题2 三. 刚性微分方程 例题3 例题4 四. 隐式微分方程 例题5 一. 单个高阶常微分方程 一个高阶常微分方程的一般形式如下: 输出变量y(t)的各阶导数初始值为如下: 选择一组状态...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,894
精华内容 2,757
关键字:

matlab求解微分方程组

matlab 订阅