Azzera filtri
Azzera filtri

Matlab, how to know time step size in the plot or how can i get the output of time step size?

6 visualizzazioni (ultimi 30 giorni)
Since i am using matlab ode23s solver, it contains two matlab files . One contain the differential equations and another contains plotting and to run the m-files. The code are working perfectly. Now i want to know the time step size that is using on the plot. How can i get the output of time step size. I would like to know the time step size that is using on the plot too. please help me.
=>
% 3 Nonlinear differential equations after Asymptotic expansion
% with 1-c in dc/dt differential equation
function xpr= no(t,x)
%values of parameters
k_f= 6.7*10.^7;
k_d= 6.03*10.^8;
k_n=2.92*10.^9;
k_p=4.94*10.^9;
%Unknown parameters
lambda_b= 0.0087;
% scale parameters
K_F= k_f * 10.^-9;
K_D= k_d * 10.^-9;
K_N= k_n * 10.^-9;
K_P= k_p * 10.^-9;
LAMBDA_B= lambda_b*10.^-9;
%Pool Values
P_C= 3 * 10.^(11);
P_Q= 2.87 * 10.^(10);
% initial conditions
c_0=x(1);
s_0=x(2);
q_0=x(3);
%Non-linear differential equations.
% dc_0/dtau= c_0*(- K_F - K_D - K_N * s_0 - K_P*(1-q_0))
% ds_0/dtau = Lambda_B * c* P_C *(1-s_0)
% dq_0/dtau = (1-q_0)* K_P * c_0 *(P_C / P_Q)
xpr= zeros(3,1);
xpr(1)= c_0*(- K_F - K_D - K_N * s_0 - K_P*(1-q_0));
xpr(2)= LAMBDA_B * c_0* P_C *(1-s_0);
xpr(3)= (1-q_0)* K_P * c_0 *(P_C / P_Q);
xpr= [xpr(1);xpr(2);xpr(3)];
% TO RUN the 3 nonlinear differential equations after asymptotic expansion. % with 1-c in dc/dt differential equation
format bank
close all;
clear all;
clc;
%time interval
ti=0;
tf=0.2;
tspan=[ti tf];
x0=[0.25 0.02 0.98]; %initial conditions
%time interval of [0 2] with initial condition vector [0.25 0.02 0.98] at time 0.
options= odeset('RelTol',1e-4, 'AbsTol',[1e-4 1e-4 1e-4]);
[t,x]= ode23s(@no,tspan,x0,options);
tDiffs = diff(t);
%Plotting the graphs:
figure
subplot(3,1,1), plot(t,x(:,1),'r'),grid on;
title('3 nonlinear differential equations (with 1-c)'),ylabel('c_0');
subplot(3,1,2), plot(t,x(:,2),'b'),grid on;
ylabel('s_0');
subplot(3,1,3), plot(t,x(:,3),'g'),grid on;
ylabel('q_0');xlabel('Time')

Risposte (1)

Geoff Hayes
Geoff Hayes il 16 Lug 2014
Just after your code executes
[t,x]= ode23s(@no,tspan,x0,options);
add
tDiffs = diff(t);
which will return the difference between adjacent elements in t...which should correspond to the time step sizes used in the plots (as t is used in each plot call).
  4 Commenti
dave
dave il 17 Lug 2014
yes. the code is in this order
[t,x]= ode23s(@no,tspan,x0,options);
tDiffs = diff(t);
Now how can i see the time step size it is using in the plot?
Geoff Hayes
Geoff Hayes il 17 Lug 2014
Look at tDiffs - it will be the difference between adjacent elements, and this difference should be the time step size. Are each of the values in tDiffs identical?

Accedi per commentare.

Categorie

Scopri di più su Function Creation in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by