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_w
对 d
不同值的依赖性(从 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);
这应该会给出一个结果。如果不是预期的,则需要进一步研究假设、方程和代码。
我有以下功能:
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_w
对 d
不同值的依赖性(从 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);
这应该会给出一个结果。如果不是预期的,则需要进一步研究假设、方程和代码。