Solving a differential equation numerically (in Octave, Matlab &c.)

Click For Summary
SUMMARY

The discussion focuses on solving a second-order non-linear differential equation numerically using GNU Octave, which is compatible with Matlab. The original equation, involving constants k, m, and g (where g is 9.81), has been decomposed into a system of two first-order equations. The user has attempted to implement a numerical approximation using the lsode function in Octave but seeks further assistance in computing the complete system of differential equations.

PREREQUISITES
  • Understanding of second-order non-linear differential equations
  • Familiarity with GNU Octave and its syntax
  • Knowledge of numerical methods for solving differential equations
  • Basic programming skills in Octave or Matlab
NEXT STEPS
  • Research the use of the lsode function in GNU Octave for solving systems of differential equations
  • Explore the Runge-Kutta method for numerical approximation of differential equations
  • Learn about converting higher-order differential equations into first-order systems
  • Investigate tutorials on solving differential equations in Matlab for comparative techniques
USEFUL FOR

This discussion is beneficial for students, researchers, and engineers working with numerical methods in physics or engineering, particularly those dealing with differential equations in Octave or Matlab.

ejlflop
Messages
2
Reaction score
0

Homework Statement



I have a second-order non-linear differential equation that I am trying to solve. So far I have decomposed it into a system of 2 first-order equations, and have (possibly) determined that it cannot be solved analytically. So I am trying to do a nice numerical approximation using GNU Octave (basically compatible with Matlab, so if you can do it with Matlab please can you help too :-D).

Octave needs the equation expressed as first-order DEs -- which I think I've done -- I'm just not sure how to go about doing the actual approximation.


Homework Equations



Original second-order DE:
[tex]\frac{d^2 \theta}{dt^2} + \frac{k}{m}\cdot\frac{d\theta}{dt} - g\cdot\sin\theta = 0[/tex]

Note that [tex]k, m, g[/tex] are arbitrary constants (yes, [tex]g[/tex] is 9.81!)

The Attempt at a Solution



Substitute:
[tex]\frac{d\theta}{dt} = w[/tex]

Hence:

[tex]\frac{d^2 \theta}{dt^2} = w\frac{dw}{d\theta}[/tex]

[tex]w\frac{dw}{d\theta} + (\frac{k}{m}\cdot w) - (g\cdot\sin\theta) = 0[/tex]

Attempt at Octave program to approximate it a bit:

Code:
function wdot = f (w, theta)
  g = 9.8
  k = 1
  m = 0.1
  wdot = (g*sin(theta) - (k/m)*w)/w
endfunction

theta = linspace(0, 20, 400);
y = lsode ("f", 1, theta);
plot (y, theta);

So this gives me a nice little graph, but obviously it's not a total solution -- that would involve computing the whole system of 2 DEs, which is what I don't know how to do!
Any help much appreciated, thanks.
 
Physics news on Phys.org
No worries; I found a nice tutorial on how to do it in matlab, and adapted it for my own purposes.
If anyone has a similar problem, see this youtube video, it's very good:
https://www.youtube.com/watch?v=http://www.youtube.com/watch?v=fx3bl4oA_0U
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 14 ·
Replies
14
Views
2K
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 21 ·
Replies
21
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
Replies
3
Views
2K