我有以下功能:
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)?
uj5u.com熱心網友回復:
收集總結我的意見:
首先d在ODE函式中明確引數
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);
這應該給出一個結果。如果不是預期的,則需要進一步研究假設、方程和代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/467374.html
