MATLAB Answers

0

Can't figure out how to iterate a variable defined in ode45 function.

Trent Barbusca さんによって質問されました 2019 年 3 月 7 日
最新アクティビティ Torsten
さんによって 回答されました 2019 年 3 月 7 日
I want to run a for loop where every time I increase the size of b by one and use the data for a plot. b is a constant used in the function sdot. Basically I don't know how to change the variable b outside of sdot which should be defined in sdot.
t0 = 0;tf = 10;
l0 = 0; ldot0 = 5;
tspan = [t0,tf];
BC = [l0,ldot0];
[time,s] = ode45(@dampedspring,tspan,BC);
l = s(:,1);
ldot = s(:,2);
figure(1);
plot(time,ldot);
for i = 1:length(l)
y(i) = 0;
end
for i = 1:10
b = i;
[time,s] = ode45(@dampedspring,tspan,BC,b);
l = s(:,1);
ldot = s(:,2);
figure(i);
plot(time,ldot);
end
function sdot = dampedspring(time,s,b)
m = 2;k1 = 4;k2 = 4;
sdot = [s(2);((-b*s(2))-(k1*s(1))-(k2*s(1)))/m];
end

  0 件のコメント

サインイン to comment.

2 件の回答

Walter Roberson
回答者: Walter Roberson
2019 年 3 月 7 日

  0 件のコメント

サインイン to comment.


Torsten
回答者: Torsten
2019 年 3 月 7 日

[time,s] = ode45(@(time,s)dampedspring(time,s,b),tspan,BC);

  0 件のコメント

サインイン to comment.



Translated by