Как получить численное решение этих дифференциальных уравнений с помощью Matlab - PullRequest
1 голос
/ 25 мая 2011

У меня есть дифференциальные уравнения, полученные из эпидемического распространения.Я хочу получить численные решения.Вот уравнения:

enter image description here

t является независимой переменной и колеблется от [0,100].Начальное значение -

y1 = 0.99; y2 = 0.01; y3 = 0;

Сначала я планировал разобраться с этим с помощью функции ode45 в matlab, однако я не знаю, как выразить ряд и комбинацию.Поэтому я прошу помощи здесь.

**

Проблема в том, как выразить правую часть уравнений в виде odefun, который является параметром в функции ode45.

**

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

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'

Другие суммы аналогичны.

1 голос
/ 31 мая 2011
 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 первого порядка? Если это ограничение является естественным следствием уравнений, оно может не понадобиться.

...