plotting a function that contains a symbol(x)
3 ビュー (過去 30 日間)
古いコメントを表示
I'm writing a function that plots the position of a front tire, rear tire, chassis and the rotation of the chassis of a motorbike after hitting a bump. I was successfully able to do this but then I thought it would be cool to be able to put a function into the forces acting on the tires so instead of a simple initial condition that acts as the bump the function could act as a "road" pushing up in the bike. I'm not sure If I'm taking the right approach to do this but its impossible for me to check because I cant figure out how to plot the new data. Ill attach the function I made containing my EOM and the file that solves these equations using the euler method. Thanks!
function dx = projectmatrix2(T,u)
k1 = 35; %spring coefficient between tire and ground
k2 = 30; %front spring coefficient
k3 = 20; %rear spring coefficient
m1 = 50; %mass of front tire
m2 = 50; %mass of rear tire
m3 = 500; %mass of chassis
c1 = 10; %front damping coefficient
c2 = 10; %rear damping coefficient
r = 1.25; %horizontal distance from COG(chassis) to vertical suspension forces(ft)
b = 3; %width of chassis(ft)
h = 1; %height of chassis (ft)
I = (1/12)*m3*(b^2+h^2); %moment of inertia
L = 3; %distance from COG(tire) to COG(chassis)(ft)
v = 20; %velocity of bike in ft/s
T = (2*r)/v;
syms x
roadfunction1 = x^3;
roadfunction2 = (x-T)^3;
dx = sym(zeros(8,1));
dx(1) = u(2);
dx(2) = (-k1*u(1)-c1*(u(2)-u(6))+k2*(-L-u(1)+u(5))+roadfunction1)/m1;
dx(3) = u(4);
dx(4) = (-k1*u(3)+(-u(3)-L+u(5))*k3-(u(4)-u(6))*c2+roadfunction2)/m2;
dx(5) = u(6);
dx(6) = ((-u(1)-L+u(5))*k2 - (u(2)-u(6))*c1 + (-u(3)-L+u(5))*k3-(u(4)-u(6))*c2)/m3;
dx(7) = u(8);
dx(8) = (-r*k2*(-u(1)-L+u(5))-r*c1*(u(2)-u(6))+r*k3*(-u(3)-L+u(5))+r*c2*(u(4)-u(6)))/I;
end
%Euler method
Tsim = 10;
h = .1;
n = Tsim/h;
%X = [0;0;0;0;0;0;0;0];
X = sym(zeros(8,1));
t = zeros(1,n);
for i=1:n-1
t(i+1) = t(i) + h;
X(:,i+1) = X(:,i) + h * projectmatrix2(t(i),X(:,i));
end
fplot(X(1,:),t)
% plot(t,X(1,:),'b*-')
% hold on
% plot(t,X(3,:),'g*-')
% plot(t,X(5,:),'r*-')
% plot(t,X(7,:),'y*-')
% hold off
1 件のコメント
Andrew Newell
2017 年 4 月 19 日
It's not clear what you are trying to plot. The array X is full of functions of a symbolic variable x that does not depend on t.
回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!