Problem with a function
1 回表示 (過去 30 日間)
古いコメントを表示
Hello everyone, I wrote this function:
function dz = nocontrol(v,z,parameters)
gammaT=??????????;
phi_0 =0.6;
psi_0 =0.6857;
psi_c0 = 0.3;
B=1.8;
Lc = 3; %m
W = 0.25;
H = 0.18;
C = 0;
dz = zeros(2,1);
dz(1)=(1/(4*B*B*Lc))*(z(2)-gammaT*(z(1))^0.5);
psi_c=psi_c0+H*(1+1.5*(z(2)/W-1)-0.5*(z(2)/W-1).^3);
dz(2) =(1/Lc)*(psi_c-z(1));
end
my problem is that I don't know how to write properly gammaT. I'd like to express it as a function, something like this:
gammaT_max = 0.8;
gammaT_min = 0.7;
A = (gammaT_max - gammaT_min)/2; %amplitude
b = gammaT_max - ((gammaT_max - gammaT_min)/2);
gammaT = A*sin(w*t)+b
but I don't know how.
2 件のコメント
madhan ravi
2020 年 10 月 21 日
what's your question? Are you asking if the way you defined the gamma function is correct?
採用された回答
Walter Roberson
2020 年 10 月 21 日
You have defined gammaT as a variable that you multiply by, but it needs to be a function of time. You will likely need something like
gammaT = @(t) A*sin(w*t)+b
dz(1)=(1/(4*B*B*Lc))*(z(2)-gammaT(SOMETHING)*(z(1))^0.5);
The SOMETHING would have to be replaced with your time variable, but it is not obvious that you have a time variable. Perhaps v is your time variable.
3 件のコメント
Walter Roberson
2020 年 10 月 22 日
You do not have a time variable, so I had to substitute the closest I could find.
function dz = nocontrol(v,z,parameters)
gammaT=parameters(1);
phi_0=parameters(2);
psi_0=parameters(3);
psi_c0=parameters(4);
B=parameters(5);
Lc=parameters(6);
W=parameters(7);
H=parameters(8);
C = 0;
gammaT_max = 0.8;
gammaT_min = 0.7;
A = (gammaT_max - gammaT_min)/2; %amplitude
b = gammaT_max - ((gammaT_max - gammaT_min)/2);
gammaT = @(t) A*sin(W*t)+b
dz = zeros(2,1);
dz(1)=(1/(4*B*B*Lc))*(z(2)-gammaT(v)*(z(1))^0.5);
psi_c=psi_c0+H*(1+1.5*(z(2)/W-1)-0.5*(z(2)/W-1).^3);
dz(2) =(1/Lc)*(psi_c-z(1));
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!