我如何修复错误的数组大小不兼容?

3视图(30天)
我想计算四阶龙格库塔方法来获得速度和我需要做它通过KC间隔。我试着用地板上但不确定,甚至更改我的错误。我应该使用一个for循环KC间隔吗?
嗯= 1;%振幅的振荡流m / s
D = 0.1;%气缸的直径
m = 50;%的公斤
ρ= 1024;%密度公斤/立方米的水
K = 200;弹簧刚度总额% N / m
c = 100;% d6amping系数
Ca = 1;%附加质量系数
Cd = 1.8;%阻力系数
L = 1;%缸的长度
美联社= D * L;%投影面积
P =π;
md =ρ* P * (D * D) / (4 * L);%附加质量
%对第4部分KC间隔
KC = 2:2:20;
T = (KC。* 0.1) / 1;%时期由于KC
Om = (2 * P)。/ T;
dt = T / 40;%时间步
无损检测= (T / dt) * 10;%的总计算步骤
X(1:地板(无损检测+ 1)= 0;
V(1:地板(无损检测+ 1)= 0;
时间(1:地板(无损检测+ 1)=(0:地板(无损检测))。* dt;
n = 1:无损检测
%计算kx1和kv1
ta =时间(n);
aw =嗯* Om。* (cos (Om。* ta) - ((2/3) * cos (2 * Om。* ta)));%加速度的液体
大众=嗯* sin (Om。* ta) -((嗯/ 3)* sin (2 * Om。* ta));%的速度流畅
弗吉尼亚州= V (n);
Xa = X (n);
t1 = Ca * md *啊;
t2ρ= 0.5 * * Cd *美联社* abs (Vw-Va) * (Vw-Va);
t3 = - k * Xa-c * Va;
kx1 = V (n);
kv1 = (t1 + t2 + t3) / (m + Ca * md);
%计算kx2和kv2
助教(n) + dt. / 2 =时间;
aw =嗯* Om。* (cos (Om。* ta) - ((2/3) * cos (2 * Om。* ta)));%加速度的液体
大众=嗯* sin (Om。* ta) -((嗯/ 3)* sin (2 * Om。* ta));%的速度流畅
弗吉尼亚州= V (n) + 0.5 * dt。* kv1;
Xa = X (n) + 0.5 * dt。* kx1;
t1 = Ca * md *啊;
t2ρ= 0.5 * * Cd *美联社* abs (Vw-Va) * (Vw-Va);
t3 = - k * Xa-c * Va;
kx2 = V (n) + 0.5 * dt。* kv1;
kv2 = (t1 + t2 + t3) / (m + Ca * md);
%计算kx3和kv3
助教(n) + dt. / 2 =时间;
aw =嗯* Om * (cos (Om * ta) - ((2/3) * cos (2 * Om * ta)));%加速度的液体
大众=嗯* sin (Om * ta) -((嗯/ 3)* sin (2 * Om * ta));%的速度流畅
弗吉尼亚州= V (n) + 0.5 * dt * kv2;
Xa = X (n) + 0.5 * dt * kx2;
t1 = Ca * md *啊;
t2ρ= 0.5 * * Cd *美联社* abs (Vw-Va) * (Vw-Va);
t3 = - k * Xa-c * Va;
kx3 = V (n) + 0.5 * dt * kv2;
kv3 = (t1 + t2 + t3) / (m + Ca * md);
%计算kx4和kv4
助教(n) + dt / 2 =时间;
aw =嗯* Om * (cos (Om * ta) - ((2/3) * cos (2 * Om * ta)));%加速度的液体
大众=嗯* sin (Om * ta) -((嗯/ 3)* sin (2 * Om * ta));%的速度流畅
弗吉尼亚州= V (n) + 0.5 * dt * kv3;
Xa = X (n) + 0.5 * dt * kx3;
t1 = Ca * md *啊;
t2ρ= 0.5 * * Cd *美联社* abs (Vw-Va) * (Vw-Va);
t3 = - k * Xa-c * Va;
kx4 = V (n) + dt * kv3;
kv4 = (t1 + t2 + t3) / (m + Ca * md);
%下一步值
(n + 1) = X (n) + (dt / 6) * (kx1 + 2 * kx2 + 2 * kx3 + kx4);
V (n + 1) = (n) + (dt / 6) * (kv1 + 2 * kv2 + 2 * kv3 + kv4);
结束
4评论
安德烈Khosrow
安德烈Khosrow 2023年3月21日
编辑:安德烈Khosrow 2023年3月21日
我明白了,所以有无论如何计算它的for循环,消除了数组imcompatibility吗?还是容易分别计算它?[我。e KC = 2与1的元素,这将使dt固定获得V然后手动改变KC = 4 V和获取等。

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2023年3月21日
是的,你需要遍历KC值。
你的无损检测是一个矢量值计算KC。这意味着
X(1:地板(无损检测+ 1)= 0;
不是你所希望的方式工作。无损检测是一个矢量 要创建一个行无损检测X为每个不同的值的行是不同的长度 将会发生什么。相反,当你有一个:运营商有一种基本价值作为运营商的参数之一,然后第一个元素是用剩下的忽视,如果你写了
X(1:地板(无损检测(1)+ 1)= 0;
6个评论
安德烈Khosrow
安德烈Khosrow 2023年4月18日
编辑:安德烈Khosrow 2023年4月18日
哦我明白了。我将如何解决这些问题呢?所以我就第一个值了,跑过。我将做同样的为其他9值。
(n + 1) = X (n) + (dt (k) / 6) * (kx1 + 2 * kx2 (1:1) + 2 * kx3 (1:1) + kx4 (1:1));
V (n + 1) = (n) + (dt (k) / 6) * (kv1 (1:1) + 2 * kv2 (1:1) + 2 * kv3 (1:1) + kv4 (1:1));
电源(n + 1) = c * V (n + 1) ^ 2;

登录置评。

类别

找到更多的在通用应用程序帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!