Här kan du få ett exempel på hur filen där du definierar differentialekvationen ska se ut. Detta exempel är från någon gång för länge sedan då jag roade mig med att räkna på en railgun med koaxialt tvärsnitt.
Funktionen som sparas som diffsystem.m:
function xprime = diffsystem(t,x,PAR)
%test for the solution
% b=20e-3;
% a=10e-3;
% L=1e-7;
mu0=4*pi*1e-7;
% m=1e-3;
% Lprim=1e-7;
% C=1e-3;
% R=0.0001;
%PAR=[a b R C Lrail LprimRail]
a=PAR(1);
b=PAR(2);
R=PAR(3);
C=PAR(4);
Lrail=PAR(5);
LprimRail=PAR(6);
m=PAR(7);
L0=PAR(8)
%L=l*(mu0/(2*pi))*(0.25 + log(b/a)); %Total inductance of the rails
%LprimRail=Lrail/l; %Inductance gradient
%zrail=[0:l/100:l];
%Lz=LprimRail*zrail;
%Lrail=interp1(zrail,Lz,x(length(x),4),'spline');
% Since the states are passed in as a single vector, let
% x(1) = Q =dq/dt = I
% x(2) = v =speed
% x(3) = q =charge
% x(4) = z =position
%Eq1
xprime(1)=-(1/(L0 + LprimRail*x(4)))*((1/C)*x(3) + x(1)*LprimRail*x(2) + R*x(1));
xprime(2)=mu0*((x(1))^2)*log(b/a)/(2*pi*m);
xprime(3)=x(1);
xprime(4)=x(2);
xprime = xprime(

;
% This ensures that the vector returned is a column vector
Anropet sker från main_railgun.m:
InitCond=[Q0 v0 q0 z0]
PAR=[a b R C Lrail LprimRail m L0]
t0 = 0; % Start time
tf = 1e-2; % Stop time
tode=[0:tf/1000:tf]
options=[];
[t,x] = ode45(@diffsystem,tode,InitCond,options,PAR);
Q = x(:,1);
v = x(:,2);
q = x(:,3);
z = x(:,4);
Notera att jag har plockat bort alla deklarareringar/beräkningar av parametrar. Detta är enbart för att visa strukturen som ditt problem kommer att få.
Lycka till
edit. Det blev visst en smiley mitt i koden, men du förstår att det ska vara ( : )