2016-09-18 5 views
2

Я пытаюсь моделировать распространение болезни, используя дифференциальные уравнения, данные на этом сайте http://www.maa.org/press/periodicals/loci/joma/the-sir-model-for-spread-of-disease-the-differential-equation-model с Wolfram Mathematica.Wolfram Mathematica, входящие в дифференциальные уравнения

я вошел:

NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}] 

и получил ошибку NDSolve вызвана с 2 аргументами; Ожидается 3 или более аргументов.

Я также попытался

NDSolve[{i'[t]== 1/2s[t]i[t]-1/3i[t], s[t]==-1/2s[t]i[t],r[t]==1/3i[t], r[0] ==0, s[0]==1, i[0]==1.27*10^-6,s'[0]==0} i, {t, 0, 100}] 

и получил ту же ошибку

Я новичок в обоих дифференциальных уравнений и Mathematica, так что я был бы признателен, если кто-то может помочь.

+2

Может быть лучше подходят на http://mathematica.stackexchange.com –

+3

Вы пропускаете запятую в середине это s '[0] == 0} i, и если вы сделаете это s' [0] == 0}, тогда он будет работать. – Bill

ответ

1

Поскольку Билл сказал, что это не кома. Второй аргумент NDSolve - это набор функций. Вы можете ввести его без аргументов или аргументов. Ваш код должен выглядеть следующим образом:

sol = NDSolve[ 
    {i'[t] == 1/2 s[t] i[t] - 1/3 i[t], 
    s[t] == -1/2 s[t] i[t], r[t] == 1/3 i[t], 
    r[0] == 0, 
    s[0] == 1, 
    i[0] == 1.27*10^-6, 
    s'[0] == 0}, {i[t], s[t], r[t]}, {t, 0, 10}] 

Он генерирует ошибки, связанные с численными проблемами:

NDSolve :: ivres: NDSolve вычислил начальные значения, которые дают нулевой остаток для дифференциально-алгебраических систем, но некоторые компоненты отличаются от указанных. Если вам нужно, чтобы они удовлетворялись, рекомендуется указать начальные условия для всех зависимых переменных и их производных. >>

Но вы можете распечатать результаты:

Plot[{Evaluate[i[t] /. sol], Evaluate[s[t] /. sol], 
    Evaluate[r[t] /. sol]}, {t, 0, 10}] 

solution2.png

 Смежные вопросы

  • Нет связанных вопросов^_^