cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Need to share some code when posting a question or reply? Make sure to use the "Insert code sample" menu option. Learn more! X

Coronavirus SIR models using Euler's method

KhariH
5-Regular Member

Coronavirus SIR models using Euler's method

Having issues programming an Euler's method for ODEs. Can't get past error in magnitude of numbers. 

1 ACCEPTED SOLUTION

Accepted Solutions

You an improve the situation with m(t) by multiplying numerator and denominator by exp(-10(t-10)).  For example:

 

g0.jpg

 

Alan

 

View solution in original post

5 REPLIES 5
StuartBruff
23-Emerald II
(To:KhariH)

It's the exponential in your m(t) expression blowing up.

 

2020 05 02 A.png

 

 

If you want to use B within your program, you'd probably be better of defining it as a local function at the top of the program (B(t)<-m(t)*p

 

Stuart

Just as a quick follow-up to my previous post, here's one possibility for making Euler a bit easier to use (as it's already tailored to your problem, it's a reasonable option).

 

2020 05 02 B.png

 

Unfortunately, I've only got Prime Express so can't run programs, but you should be able to check it making B return 5 (to behave like your earlier, simpler Euler function).

 

Stuart

KhariH
5-Regular Member
(To:StuartBruff)

Right thanks, I know the exp function was going to infinity and mathcad won't handle it. In that same mathcad sheet over off to the right in the worksheet I have another disabled program where I tried to address that issue with an if/else statement. I know the exp blows up around iteration 10 so for k<10 I wanted to calculate m(t) and k>10 just print the 'ms' value. 

You an improve the situation with m(t) by multiplying numerator and denominator by exp(-10(t-10)).  For example:

 

g0.jpg

 

Alan

 

KhariH
5-Regular Member
(To:AlanStevens)

Thank you! I now have a more streamlined program that is at least plotting but the curves just settle around iteration 11. The graphs should look like the image attached. It that program I had a constant value for 'm' but now I want to do one that varies as a function of time.

Top Tags