精华内容
下载资源
问答
  • 2022-02-10 01:03:38
    function main() % 后欧拉一阶法
    clear all
    clc
    hold off
    T = 1
    dt = 10e-5;
    y0=[2,1]'; % y[0] X, y[1] Y
    minx=0.2;
    n = (T-minx)/dt;   %the number of required time steps
    tspan = [minx,T]
    a = -20201;
    b = 20402;
    c = 20000;
      options = optimoptions ( 'fsolve', 'Display', 'off' );
      m = length ( y0 );
      t = zeros ( n + 1, 1 );
      y = zeros ( n + 1, m );
      dt = ( tspan(2) - tspan(1) ) / n;
      t(1,1) = tspan(1);
      y(1,:) = y0(:);
      for i = 1 : n
        to = t(i,1);
        yo = y(i,:);
        tp = to + dt; 
        %size(yo) % 初始的yo
        yp = yo + dt *  ( f (yo ) );
        rhs= f(yp) ;
     [yp, fval] = fsolve(@(yp)fsolve_test_1_function_1(yp,yo,dt,rhs), yp, options);
       t(i+1,1) = tp;
        y(i+1,:) = yp;
    %     return 
      end
      plot(t,y(:,1),'r-')
      hold on
      plot(t,y(:,2),'b-')
      title ("BFD1")
      
    function  res= f( yp)
    a = -20201;
    b = 20402;
    c = 20000;
    res (1,1)= a*yp(1,1) + b *yp(1,2);
    res (1,2)= c*yp(1,1) + a *yp(1,2) ;
    
    function F = fsolve_test_1_function_1(yp,yo,dt, rhs)
    F(1) = yp(1)-yo(1)- dt* rhs(1);
    F(2)= yp(1)-yo(1)- dt* rhs(2);
    

    技术难题: 利用fsolve 反解y(n+1) 

    题目是:两个一阶微分方程

    上面的是BDF1,  至于BDF2可联系博主。

    更多相关内容
  • 根据隐式欧拉公式: 但是我们并不知道此时的值 所以每次迭代前都需要先计算此时的,以便算出 matlab代码如下: a=0; b=5; y0=2; h=0.01; s=(b-a)/h; X=zeros(1,s+1); Y=zeros(1,s+1); X=a:h:b; Y(1)=y0; q=@...

    根据题目微分方程:{y}'=-2y-4x

    根据初值y(0)=2,将x的区间为[0,5]

    根据隐式欧拉公式:y_{n+1}=y_{n}+hf\left ( x_{n+1},y_{n+1} \right )

    但是我们并不知道y_{n+1}此时的值

    所以每次迭代前都需要先计算此时的y_{n+1}=y_{n}+hf\left ( x_{n},y_{n} \right ),以便算出f\left ( x_{n+1},y_{n+1} \right )

    matlab代码如下:

    
    
    
    a=0;
    b=5;
    y0=2;
    h=0.01;
    s=(b-a)/h;
    X=zeros(1,s+1);
    Y=zeros(1,s+1);
    X=a:h:b;
    Y(1)=y0;
    q=@lin;
    for k=1:s
        k1=q(X(k),Y(k));%yn+1=yn+hq(xn,yn)
        k2=q(X(k+1),Y(k)+h*k1);%yn+1=yn+hq(xn+1,yn+1)
        Y(k+1)=Y(k)+h*k2;
    end
    x=X';
    y=Y';
    
    f1=exp(-2*x)-2*x+1;
    figure(1);
    subplot(1,2,1);
    plot(x,y);
    hold on;
    plot(x,f1);
    
    subplot(1,2,2);
    plot(x,f1-y);
    
    function f=lin(c,d)
    f=-2*d-4*c;
    end

     

    展开全文
  • 前向后项差分和显式隐式欧拉法

    千次阅读 2021-04-18 11:30:15
    摘要:本文主要介绍前向后向差分,显式隐式欧拉法及其稳定性分析。前向差分对应显式方法,后向差分对应隐式方法。显式欧拉法是比较流行的显式方法,隐式欧拉法是比较流行的隐式方法。显式欧拉法条件稳定,对积分步长...

    摘要:

    本文主要介绍前向后向差分,显式隐式欧拉法及其稳定性分析。

    前向差分对应显式方法,后向差分对应隐式方法。显式欧拉法是比较流行的显式方法,隐式欧拉法是比较流行的隐式方法。

    显式欧拉法条件稳定,对积分步长有要求,隐式欧拉法无条件稳定,对积分步长无要求(理论上如此,但实际使用中对积分步长仍然有要求,只是比显式欧拉宽松)。

    1. 前向差分与后向差分

    设一元函数函数离散化为一系列的点,,其中,, , 称为步长。

    1.1 前向差分(Forward Difference)前向差分的定义:

    之所以称之为前向差分,是因为当前时刻的差分,是下一时刻位置(时间向前前进一步)与当前时刻位置之差。

    高阶前向差分

    根据上式递归可得k阶前向差分公式为:

    例如,二阶前向差分公式为:

    1.2 后向差分(Backward Difference)后向差分定义:

    由定义可以看出,当前时刻的差分,是当前时刻的位置与前一时刻的位置之差。

    高阶后向差分

    同上,k阶后向差分公式为:

    因此,二阶后向差分公式为:

    1.3 差商和导数差商就是差分除以步长,即,

    在数值计算中,需要以差商代替导数,即,如果使用前向差分,则为显式方法,例如,

    如果使用后向差分,则为隐式方法,例如,

    2. 显式欧拉和隐式欧拉

    设有一阶常微分方程很多时候我们无法求出函数的解析解,只能通过数值方法逼近,即,将时间离散为一系列的点其中, 我们要做的就是求函数在这些离散的时间点上的值

    2.1 显式欧拉(Explicit Euler)显式欧拉公式:

    之所以称之为显式,是因为下一时刻的值,可根据当前时刻的值及其导数 显式地给出。

    另一种角度看上面的公式:从当前时刻出发,根据当前时刻的函数值及其导数,可得到下一时刻的值。因此显式欧拉法又称为前向欧拉(Forward Euler)

    再从另一个角度看,我们把上面的公式做一下变形可得 即,显示欧拉就是用前向差商代替导数。

    2.2 隐式欧拉(Implicit Euler)隐式欧拉公式:

    之所以称之为隐式,是因为上式是一个隐式方程。

    另一种角度看上面的公式:将上式做一下变形可得:从当前时刻出发,根据当前时刻的函数值及其导数,可得到前一时刻函数的值。因此隐式欧拉法又称为后向欧拉(Backward Euler)

    再从另一个角度看,我们把上面的公式做一下变形可得 即,显示欧拉就是用后向差商代替导数。

    2.3 例证欧拉法的稳定性

    设有一阶常微分方程 我们知道,这个常微分方程的解析解为 当时, 那么分别用显式、隐式欧拉法会得到什么呢?

    1. 显式欧拉法条件稳定(Conditionally Stable)

    根据显式欧拉法公式,

    为了保证上式收敛,需要保证, 得,

    即,为了保证显式欧拉的稳定性,需要保证时间步长,即,条件稳定.

    2.隐式欧拉法无条件稳定(Unconditionally Stable)

    根据隐式欧拉公式,

    则,

    又,则恒大于1。即不管时间步长为多大,隐式欧拉始终稳定,即无条件稳定.

    注意:实际应用中,隐式欧拉需要求解隐式方程,通常也是使用逼近的方法(例如,Newton-Raphson)求解,因此实际的隐式欧拉方法并不是无条件稳定的。

    3.一般形式的稳定性分析,我目前还没有掌握。

    展开全文
  • 参考书籍:常用数值算法及其matlab实现,作者:夏省祥 %第10章 常微分方程初值问题的数值解法 %欧拉方法,例10.1 %书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法 %欧拉方法 function E ...

    参考书籍:常用数值算法及其matlab实现,作者:夏省祥
    %第10章 常微分方程初值问题的数值解法
    %欧拉方法,例10.1

    %书籍:常用数值算法及其matlab实现
    %第10章 常微分方程初值问题的数值解法
    %欧拉方法
    function E = eulerdif(fun, a, b, y0, h)
    %fun:微分方程的右表达式
    %a, b 为区间
    %y0 为初值
    M = floor(b-a)/h ;      %离散点的个数M+1
    T =zeros(1, M+1); Y =zeros(1, M+1);         %行向量
    T = a:h:b;
    Y(1) = y0;
    for i = 1:M
        Y(i+1) = Y(i) +h *feval(fun, T(i), Y(i));
    end
    E = [T' Y'];            %E是M+1行,2列
    
    % function E = eulerdif(fun, a, b, y0, h)
    % %fun:微分方程的右表达式
    % %a, b 为区间
    % %y0 为初值
    % M = floor(b-a)/h ;      %离散点的个数M+1
    % T =zeros( M+1,1); Y =zeros( M+1,1);         %列向量
    % T = a:h:b;
    % Y(1) = y0;
    % for i = 1:M
    %     Y(i+1) = Y(i) +h *feval(fun, T(i), Y(i));
    % end
    % E = [T  Y];            %E是M+1行,2列
    

    %书籍:常用数值算法及其matlab实现
    %第10章 常微分方程初值问题的数值解法
    %欧拉方法,例10.1
    %function E = eulerdif(fun, a, b, y0, h)
    clear all;clc;close  all;
    %fun =@(x,y)-3*x*y;
    fun = inline('-3*x*y');
    a = 0; b =2;
    y0 = 1;
    h = 0.1
    E = eulerdif(fun, a, b, y0, h);
    plot(E(:,1),E(:,2) ,'r*-');    hold on;
    
    exa10_1 = dsolve('Dy = -3*x*y', 'y(0) = 1', 'x');       %求出解析解
    ezplot(exa10_1, [0 2]);       %画出解析解的图像
    legend('数值解','解析解' )
    
    
    

    运行结果如下:

     

    展开全文
  • 隐式Euler格式 | matlab

    千次阅读 2020-07-10 15:33:34
    % 隐式欧拉格式 % f是带求函数的一阶导形式 % a,b分别是积分上下限 % y0 是初始条件y(0) % h是步长 s = (b - a) / h; % 求步数 X = zeros(1, s+1); Y = zeros(1, s+1); X = a:h:b; Y(1) = y0; for k = 1:s k1 =...
  • matlab:使用欧拉方法求解微分方程

    千次阅读 2022-04-18 10:27:59
    书目:《数值方法(matlab版)》,作者周璐等译 %欧拉方法求解微分方程 function [t,y] = my_euler(f, t0, tf , y0, h) %f-函数; t0,tf:区间; y0,初值;h 步长 M = floor((tf - t0)/h); % 离散点的个数 ...
  • 在质量弹簧阻尼器系统上比较隐式与显式欧拉隐式方法基于以下论文: D. Baraff 和 A​​. Witkin,“布料模拟中的大步骤”,第 25 届计算机图形和交互技术年会论文集 - SIGGRAPH '98,1998,第 43-54 页。
  • 用Eular解常微分方程组的数值解,使用了细胞数组,代码简洁,除注释外的有效代码只有二十行左右。(几年前上传的程序了,当时要20积分,现在为大家降到5个积分)
  • 欧拉法和改进欧拉法matlab求解

    千次阅读 2021-05-04 16:33:07
    欧拉法 function result = Euler(f,y0,x0,x1,h) F = matlabFunction(f); l = (x1-x0)/h; result = zeros(1,l); for i=1:l K1 = F(x0,y0); y0 = y0 + h * K1; x0 = x0 + h; result(i) = y0; end 改进欧拉法 ...
  • MATLAB程序分享使用欧拉Euler求解微分方程组源程序-MATLAB使用欧拉Euler求解微分方程组 源程序代码.rar 程序代码见附件,拿资料请顺便顶个贴~~ 如果下载有问题,请加我 qq 1530497909,给你在线传
  • 欧拉法(Euler)求解常微分方程的Matlab程序及案例

    万次阅读 多人点赞 2021-02-27 23:07:56
    算法2.1 显式欧拉法2.2 隐式欧拉法2.3 两步欧拉法2.4 改进欧拉法2.5 四种欧拉方法的对比3. 程序4. 案例5. 联系作者 1. 概念 1) 常微分方程 自变量只有一个的微分方程,称为常微分方程;自变量数量2个或以上时,称为...
  • 欧拉法matlab程序.doc

    千次阅读 2021-04-19 04:20:31
    欧拉法matlab程序.doc 1.Euler法function[x,y]=naeuler(dyfun,xspan,y0,h)x=xspan(1):h:xspan(2);y(1)=y0;forn=1:length(x)-1y(n+1)=y(n)+h*f(dyfun,x(n),y(n));endx=x ;y=y ;x1=0:0.2:1;y1=(1+2*x1).^0.5;plot(x,y,...
  • 欧拉方法matlab源代码布模拟 这是实现布料模拟的模拟。 该项目首先是使用Matlab实施的,然后是使用Processing的。 Matlab的 布模型的核心是弹簧减震器系统。 该模型建立在一个结构化的晶格上,该晶格由质量有限的...
  • 欧拉法matlab程序

    千次阅读 2021-05-07 08:29:42
    1.Eulerfunction [x,y]=naeuler(dyfun,xspan,y0,h) x=xspan(1):h:xspan(2);y(1)=y0;for n=1:length(x)-1y(n+1)=y(n)+h*feval(dyfun,x(n),y(n)); endx=x';y=y';x1=0:0.2:1;y1=(1+2*x1).^0.5;plot(x,y,x1,y1)>>...
  • 向后欧拉方法-隐式 ÿI + 1 = Y i + F(T I + 1,Y i + 1的)ΔT+ O(ΔT2) O(ΔT2) 中点 ÿI + 1 = Y的i-1 + 2F(T I,Y I)ΔT+ O(Δt的3) 使用泰勒展开的对称方法,仅涉及Δt的奇数次方 O(Δt的3) - >更...
  • 显式欧拉格式——matlab实现

    千次阅读 2020-03-16 15:13:56
    显式欧拉格式 格式为: 我运用显式欧拉格式计算三道例题,然后展现其效果,最后将我的代码展示出来 1. 2. 3. 呈现出这样的曲线的原因是该函数由一开始的极其陡峭变为后来的非常平稳,其中斜率的变化率非常之...
  • 微分方程的MATLAB实现与欧拉算法

    千次阅读 2021-11-16 21:05:13
    微分方程:模型建立与求解微分方程 ...1.MATLAB求解函数 desolve('Dy = 2(1-0.01y)y','y(0) = 20','t') result1=dsolve('Dy=2*(1-0.01*y)*y','y(0)=20','t') %符号型 syms y(t) %数值型 desolve(...
  • 在这篇报告中,我先使用了显示欧拉格式来求解微分方程,隐式欧拉格式中,我使用了改进的欧拉格式和修正的欧拉格式来进行求解。 这道题是这样的: 我们要做的是,通过已有的信息,求出 y(3)。 我使用matlab来实现这...
  • 参考书籍:常用数值算法及其matlab实现,作者夏省祥 %第10章 常微分方程初值问题的数值解法 %欧拉方法,例10.1 %书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法 %欧拉方法 function E = ...
  • 欧拉方程解偏微分方程
  • 西京学院数学软件实验任务书课程名称数学软件实验班级数0901学号0座机电话号码7姓名李亚强实验课题欧拉数值算法(显式,隐式欧拉预估-校正),Runge-Kutta数值算法实验目的熟悉欧拉数值算法(显式,隐式欧拉预估-...
  • matlab的欧拉方法代码纳欧拉法 这是德克萨斯大学圣安东尼奥分校提供的课程的源代码。 尽管很多代码比我计划的要详尽得多,但这将帮助您继续学习。 由于这些方程式易于实现,因此我的大部分精力都放在简化输出上。 该...
  • 3种欧拉法的比较

    2022-03-13 20:38:51
    向前欧拉,向后欧拉,改进欧拉三种方法的简单比较
  • 工具Taylor展开欧拉法的局部截断误差§3 Convergency and Stability §3 Convergency and Stability §3 Convergency and Stability 例:隐式龙格-库塔法 而显式 1~ 4 阶方法的绝对稳定区域为 其中2阶方法 的绝对...
  • 完美运行的 龙格-库塔法与欧拉法的比较 Matlab仿真实例%数值积分方法求解连续系统输出(龙格-库塔法与欧拉法的比较)clear all; close all;h=0.3; L=15/h; %h计算步长、L为仿真步数z=[-1 -2]; p=[-4 -0.5+j -0.5-j]; k...
  • 《解微分方程欧拉法,R-K法及其MATLAB实例》由会员分享,可在线阅读,更多相关《解微分方程欧拉法,R-K法及其MATLAB实例(4页珍藏版)》请在人人文库网上搜索。1、解微分方程的欧拉法,龙格-库塔法及其MATLAB简单实例...
  • 瞬态一维热传导求解器,采用有限差分隐式后向欧拉时间方案。 更新(08-24-2019) 添加了Jupyter笔记本作为求解器的演示案例。 非常简单,结果绘制精美。 享受! 特征: 1. Fully modularized, easy to customize...
  • 欧拉法、改进的欧拉法、龙格-库塔法求解初值问题

    万次阅读 多人点赞 2019-10-14 16:37:48
    求解初值问题简介前期准备欧拉法改进的欧拉法龙格-库塔法三级三阶显式Kutta公式三级四阶显式Heun公式四级四阶显式Kutta公式四级四阶显式Gill公式 简介 通过求解简单的初值问题: {dudx=f(x,u)(1)u(x0)=u0(2) \begin{...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 186
精华内容 74
关键字:

matlab 隐式欧拉法

matlab 订阅
友情链接: ulim.zip