在Matlab中,如何确定绘图中的时间步长或如何获得时间步长的输出?

时间:2014-07-16 01:53:19

标签: matlab math

我正在使用matlab ode23s解算器,它有两个matlab文件。一个包含微分方程,另一个包含绘图和m文件。代码工作正常,但我想知道在绘图上使用的时间步长。如何获得时间步长的输出?我还想知道在情节上使用的时间步长。请帮我。

=>

%3渐近展开后的非线性微分方程 dc / dt微分方程中1-c的百分比

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)];

%运行渐近展开后的3个非线性微分方程。 dc / dt微分方程中1-c的百分比

 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); 

  %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') 

0 个答案:

没有答案