# Help in writing a function

2 ビュー (過去 30 日間)
Paul Rogers 2020 年 10 月 31 日
コメント済み: Star Strider 2020 年 11 月 4 日
Hi everyone, I need to write a function to solve this system: Until now all I can came up with was:
function dz = control1(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.9;
gammaT_min = 0.61;
A = (gammaT_max - gammaT_min)/2; %amplitude
b = gammaT_max - ((gammaT_max - gammaT_min)/2);
hertz = 50;
w=hertz*2*pi;
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
which is obviously wrong since gammaT = @(t) A*sin(w*t)+b shoouldn't be define this way.
I think gammaT should be written in that way but the time in the argument of the sin should be rearranged in some way I don't know

サインインしてコメントする。

### 採用された回答

Star Strider 2020 年 10 月 31 日
which is obviously wrong since gammaT = @(t) A*sin(w*t)+b shoouldn't be define this way.
Why? It appears to be coded correctly with respect to the posted image. It’s being evaluated with respect to your independent variable ‘v’, that appears to be correct. If it should actually be a different variable (such as time), it would be necessary to define the time in the context of the existing variables. We would need more information in order to help you with that.
For what it’s worth, the function runs without error for me using:
parameters = rand(8,1);
and:
[V,Z] = ode45(@(v,z)control1(v,z,parameters), [0 10], rand(2,1));
figure
plot(V, Z)
grid
.
##### 30 件のコメント表示 29 件の古いコメント非表示 29 件の古いコメント
Star Strider 2020 年 11 月 4 日
As always, my pleasure!
(I can Comment again!)

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeOrdinary Differential Equations についてさらに検索

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!