Info
この質問は閉じられています。 編集または回答するには再度開いてください。
How do I set this differential equation up properly?
1 回表示 (過去 30 日間)
古いコメントを表示
I'm not that experienced but Matlab but I'm learning.
So the thing is as follows. We have a miniature oilrig. It's floating on 2 pontons. Now the conditions are, that the oilrig is lying still and can only move in the vertical direction(up and down). We give the oilrig an initial speed and position(i.e. 1cm from neutral or in the neutral with 0.1m/s speed).
This thing weighs 2.9kg, the both cylinders its float's on have a radius of 4cm and are both 30cm long.
So first of, we thought that the equation would look like: m*a=F_z+F_upward. With F_z the gravitationforce and F_upward the upward force of the water. Rewriting this as:
m*y''-m*g-\rho*V_2cyl*g=0 In which V is the volume of the 2 cylinders in the water which would depend on y aswell as y resembles the height of the oilrig in the water.
Anyways, we got the formula of this V, but it's really long and has some arccos and arcsin in it. Now in the end we end up with a formula which is:
my''-m*g-rho*g*V_2cyl=0 with
V_2cyl=2*lenghtofcylinder*pi*radius^2-0.5*radius^2*(360-2*acosd((radius-normalheight+y)/radius)*pi/180-sind(360-2*acosd((radius-normalheight+y)/radius)))
which actually means my y is here embedded in an acos(asin(y)).
clear all
close all
clc
m=2.9225;
radius=0.04;
lenghtofcylinder=0.307;
rho=1000;
g=9.81;
normalheight=0.0195+radius;
springmass=@(t,z)[z(2); -rho*g*2*lenghtofcylinder*pi*radius^2-0.5*radius^2*(360-2*acosd((radius-normalheight+z(1))/radius)*pi/180-sind(360-2*acosd((radius-normalheight+z(1))/radius)))/m+g];
ic=[0.005;0];
tspan=[0 50];
[t,y] = ode45(springmass, tspan, ic);
plot(t,y(:,1)), title('Position vs. Time')
xlabel('t[]')
ylabel('position[m]')
Now when I run it it sais 'Warning: Imaginary parts of complex X and/or Y arguments ignored at line 17( plot(t,y(:,1)), title('Position vs. Time'))'
According to me there shouldn't be any Imaginary parts in the entire script so i must be doing something wrong. Can anyone help me out here?
I know it's a mouthfull but I think it's because the differential equation isn't lineair (asin(acos(y))). But then again, how do I do it?
Thanks in regards, Ray
0 件のコメント
回答 (0 件)
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!