颂歌在for循环更新初始条件
11视图(30天)
显示旧的评论
保罗•罗杰斯
2021年1月7日
我创建了文件,主要和@greitzer(函数)。在主我在@greitzer调用该函数。
现在我想把ode的for循环为每个值来解决这个问题
吉里。
我想第一个循环:
t0 (1) = 0
第二个值
time_rpm(我)
time_rpm (2)
与初始条件y1(1) = 0和y2 (0)。
第二个循环,第二义理的价值
giri (2)
应该间隔
t0 (2) = time_rpm (2)
(2)= time_rpm特遣部队(3)
与初始条件的最后评估之前的循环
日元(i + 1) = y(结束,1);%初始条件1
y2 (i + 1) = y (, 2);%初始条件2
12个评论
保罗•罗杰斯
2021年1月7日
因为giri通过时间的变化,
基本上我需要解决的颂歌:
giri从0 - 25 = 55000初始条件y1(0)和y2(0),然后giri变化
然后giri变化如下:
giri_medium = 55000;%节流阀孔径
delta_giri = 400;% gamma_T_max e gamma_T_min之间的范围
giri_max = giri_medium + (delta_giri / 2);%最大光圈
giri_min = giri_medium - (delta_giri / 2);%最小孔径
A_rpm = (giri_max - giri_min) / 2;%振幅
b_rpm = (giri_max + giri_min) / 2;
rpm_frequency = 1;%引擎的频率(赫兹)
w_rpm = rpm_frequency * 2 *π;%引擎的频率(弧度/秒)
time_rpm = [25:0.01:30];
giri = A_rpm * sin (w_rpm * time_rpm) + b_rpm;
情节(time_rpm giri)
和我能想到的唯一方法是,因为每次义理的值变化我需要之前的初始条件
保罗•罗杰斯
2021年1月7日
现在我把这个:
错误使用*
内心的矩阵维度必须一致。
错误在格雷策(34)行
dy = [B * (psi_c-y (2));
错误odearguments(第87行)
f0 =函数宏指令(颂歌,t0, y0, args {:});% ODE15I集args yp0 {1}。
错误ode113(第113行)
[neq tspan ntspan,接下来,t0, tfinal, tdir, y0, f0, odeArgs, odeFcn,…
主要误差(第106行)
[t、y] = ode113 (@greitzer (t0(我),特遣部队(我),(y1, y2)选项);%我发现ode113方式更有效率
克里斯·拉皮埃尔
2021年1月7日
编辑:克里斯·拉皮埃尔
2021年1月7日
错误的症状是一样的问题。你真正想要的
U1(我)
,
U2(我)
,
B(我)
在你的方程,但你用整个向量。
你可能感兴趣的这个例子中,它显示了如何通过odefun额外参数。
//www.tianjin-qmedu.com/help/matlab/ref/ode113.html?searchHighlight=ode113&s_tid=srchtitle bu6t62o-1
保存和加载垫文件不是一个好的解决方案。
我叫ode113用以下语法
[t、y] = ode113 (@greitzer (t0(我),特遣部队(i)], [y1 (i), y2 (i)],选项,U1 (i), U2 (i), B (i));%我发现ode113方式更有效率
这意味着不断更新相应的函数声明。
函数(dy) =格雷策(t, y, U1, U2, B)
保罗•罗杰斯
2021年1月8日
编辑:保罗•罗杰斯
2021年1月8日
早上我做的第一件事是遵循yoour更新。
我带了:
保存main_parameters.mat
外循环和仿真最后似乎咕直到最后。
我也改变了长度的模拟开关:
保存main_parameters.mat
为i = 1:(长度(giri) 2)
U1 (i) = (D1 *π。*义理(我))/ 60;
U2 (i) = (D2 *π。*义理(我))/ 60;
B (i) = U1 (i)。/ (2。* wh。* Lc);
[t、y] = ode113 (@greitzer (t0(我),特遣部队(i)], [y1 (i), y2 (i)],选项,U1 (i), U2 (i), B (i));%我发现ode113方式更有效率
t0 (i + 1) = time_rpm (i + 1);%仿真开始[s]
特遣部队(i + 1) = time_rpm (+ 2);%模拟完成的[s]
日元(i + 1) = y(结束,1);%初始条件1
y2 (i + 1) = y (, 2);%初始条件2
情节(t、y (:, 2))
网格在
网格小
包含(“t [s]”)
ylabel (“\ψ”)
持有在
结束
由thesee littlle大气干扰我ccould终于得到结果我expeccted。
还有一件事:
我怎么能存储了所有的数据(t, y(: 1)和y(:, 2)),因为函数只显示值从最后一个循环。
答案(0)
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。