S.Pri
S.Pri

Reputation: 35

Octave: How to solve a one order differential equation with variable coefficients

I'm trying to solve a one order differential equation with variable coefficients of the following form:

xdot(1)=a(t)*x(1)+b;

where b=a constant and where a(t) = a time dependent function. I know that I can solve this equation by hand butt a(t) is a quite complex function. So, my problem is the following. a(t) is a function which I know its values from an experiment (I've got all the results in a file) --> a(t) is a vector (n x 1) which is a problem because x(1)= xdot(1)=a scalar. So, how could I solve this equation, with lsode ?

Upvotes: 0

Views: 252

Answers (1)

Clinton Winant
Clinton Winant

Reputation: 734

Possibly I have underestimated your problem, but the way I read it, you are asking to integrate a first order ODE. In general there are two ways to proceed,, implicit methods and explicit methods. Here is the crudest, but easiest to understand, method I can come up with:

nt=101;a=-ones(1,nt);b=1/2;x=NaN*ones(1,nt);x(1)=pi;dt=0.01;
for kt=2:nt
  dxdt=a(kt-1)*x(kt-1)+b;
  x(kt)=x(kt-1)+dxdt*dt;
endfor
plot(x)

I have assumed a<0 so there is no tendency to blow up. You will want to set it equal to your observed values.

Upvotes: 0

Related Questions