MATLAB 中的依赖图

The dependency graph in MATLAB

我有以下功能:

phi0 = [0; 0];   %initial values
[T,PHI] = ode45(@eqn,[0, 10], phi0,odeset('RelTol',2e-13,'AbsTol',1e-100));
plot(T, PHI(:,1),'-b',T, PHI(:,2),'-g');
title('\it  d = 0.1')
w1 = PHI(end,1)/(10000*2*pi)  %the limit frequency for phi1
w2 = PHI(end,2)/(10000*2*pi)  %the limit frequency for phi2
delta_w = w2 - w1
phi1_at_t_10k = PHI(end,1)    %the value phi1(t=10000)
phi2_at_t_10k = PHI(end,2)
function dy_dt = eqn(t,phi)
  d = 0.1; %synchronization parameter
  n = 3;   
  g = [ 1.01; 1.02];
  f = g-sin(phi/n);
  exch = [d;-d]*sin(phi(2)-phi(1));
  dy_dt = f+exch;
end

w的计算公式为:w_i = (1/2pi)(lim((phi(t)-phi(0))/t) 其中t->infinity(此处等于10000)。

问题是如何绘制 delta_wd 不同值的依赖性(从 d=0 到 d=5,步长 = 0.1)?

收集总结我的意见:

首先在ODE函数中显式d参数

function dy_dt = eqn(t,phi,d)
  n = 3;   
  g = [ 1.01; 1.02];
  f = g-sin(phi/n);
  exch = [d;-d]*sin(phi(2)-phi(1));
  dy_dt = f+exch;
end

然后将 ODE 积分和结果的评估放在自己的程序中

function delta_w = f(d)
  phi0 = [0; 0];   %initial values
  opts = odeset('RelTol',2e-13,'AbsTol',1e-100);
  [T,PHI] = ode45(@(t,y)eqn(t,y,d), [0, 10], phi0, opts);
  w1 = PHI(end,1)/(10000*2*pi);  %the limit frequency for phi1
  w2 = PHI(end,2)/(10000*2*pi);  %the limit frequency for phi2
  delta_w = w2 - w1;
end

最后评估 d 个正在考虑的值列表

d = [0:0.1:5];
delta_w = arrayfun(@(x)f(x),d);
plot(d,delta_w);

这应该会给出一个结果。如果不是预期的,则需要进一步研究假设、方程和代码。