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

Community Tip - Stay updated on what is happening on the PTC Community by subscribing to PTC Community Announcements. X

Coronavirus SIR models using Euler's method

KhariH
8-Gravel

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. 

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 III
(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

StuartBruff
23-Emerald III
(To:StuartBruff)

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

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

 

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.

Announcements

Top Tags