我怎么返回一个额外的参数使用Matlab的颂歌解决吗?
12个视图(30天)
显示旧的评论
我想返回一个参数,r, ode的解决方案,但该参数不能整合。然而,重要的是结果和后处理。我想让r是一个向量的长度匹配t所以我能做的
情节(t, r)
棘手的部分对我来说似乎脱颖而出的例子我看过论坛是与时间有关的变量及其衍生品依赖r反过来依赖于一个布尔变量状态。这意味着很难计算r从ode解决方案基于输出结果变量。
我的代码是
清晰;关闭所有;clf;clc
t_span = [0 1];
y_0 = (0, 2);
env。g = 9.81;
图(101);持有在
选择= odeset (“AbsTol”1 e-6“RelTol”1 e-6“统计数据”,“上”);
[t、y] =数值(@my_ode_fcn、t_span y_0,选项,env);
图(1)
情节(t, y (: 1))
包含(“时间t [s]”)
ylabel (的位置,x [m])
图(2)
情节(t、y (:, 2))
包含(“时间t [s]”)
ylabel (“速度,u (m / s)”)
函数dydt = my_ode_fcn (t y env)
持续的state_flag
如果isempty (state_flag);state_flag = 0;结束
x = y (1);
u = y (2);
g = env.g;
如果~ state_flag
r = 20 + 50 * t;
其他的
r = 20 + 10 * t;
结束
如果(r > 30) & & ~ state_flag
state_flag = 1;
sprintf (“州旗= % d 'state_flag)
结束
如果(r > 27)
xdot = 2 * u;
ydot = - g * x;
其他的
xdot = 3 * u;
ydot = 2 * g * x;
结束
图(101)
情节(t, r,‘*’)
dydt = 0(长度(y), 1);
dydt (1) = xdot;
dydt (2) = ydot;
结束
我试过了所有的建议在这个线程,但是都没用到目前为止:
syggestions吗?
接受的答案
1月
2019年11月20日
如果我的评论中提到的问题是固定的,解决方案很简单:运行集成。然后提供calcualted时间和轨迹作为输入
my_ode_fcn
和出口希望值为2的输出。因此这个函数必须矢量化,或者在一个循环中呼吁每个时间点。
看到