如何用matlab获得这些微分方程的数值解

问题描述

|| 我有从流行病传播衍生出来的微分方程。我想获得数值解。这是方程式 t是一个自变量,范围为
[0,100]
。 初始值为
y1 = 0.99; y2 = 0.01; y3 = 0;
起初,我计划在matlab中使用ode45函数来处理这些问题,但是,我不知道如何表达系列和组合。所以我在这里寻求帮助。 ** 问题在于如何将等式的右侧表示为odefun,它是ode45函数中的一个参数。 **     

解决方法

 function demo(a_in)
 X = [0;0;0];
  T = [0:.1:100];
  a = a_in; % for nested scope

  [Xout,Tout ]= ode45( @myFunc,T,X );

    function [dxdt] = myFunc( t,x )
         % nested function accesses \"a\"
         dxdt = 0*x + a; 
         % Todo: real value of dxdt. 
    end
  end
那怎么办,您只需要在上面的数学中填写dxdt?数字四舍五入是否重要还有待观察... 编辑:由于1 = y1 + y2 + y3约束,因此存在一个严重的问题。由于您有一个IVP,给出了3个初始值和3个一阶ODE,这甚至允许吗?如果该约束是方程式的自然结果,则可能不需要。     ,Matlab具有计算二项式系数(组合数)的功能,有限级数可以表示为矩阵乘法。我将在第一个方程式中说明如何求和。注意使用算术运算符的逐元素\“点\\”形式。 用总和中的常数系数计算行向量
coefs
octave-3.0.0:33> a = 0:20;
octave-3.0.0:34> coefs = log2(a * 0.05 + 1) .* bincoeff(20,a);
变量组合成另一个向量:
octave-3.0.0:35> y1 = 0.99;
octave-3.0.0:36> y2 = 0.01;
octave-3.0.0:37> z = (y2 .^ a) .* ((1 - y2) .^ a) .* (y1 .^ a);
然后将总和评估为内部乘积:
octave-3.0.0:38> coefs * z\'
其他金额相似。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...