我正在尝试解决ode45 的问题。
在 ode45 中,使用了 x' 和 x''。然后,我想从 ode45 驱动到 x 方程。
我试图用 polyfit 函数来解决。
polyfit(t,y,4)
但发生错误“X 和 Y 向量必须相同大小。”
我不知道我应该做什么。
在我看来,它似乎可以用积分函数来解决。这个对吗??
如果您处理它,将不胜感激,并告诉我如何解决。
下面的代码:
我的代码是用主脚本和函数构造的。
clear
global L M m f Jw rw Fz Cd p A bw fw Nw g uw seta Te Tb y_curve X Q
L=[0 0.025 0.05 0.1 0.125 0.15 0.175 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1];
M=[0 0.225 0.45 0.65 0.685 0.705 0.69 0.68 0.65 0.635 0.63 0.6275 0.625 0.6225 0.62 0.6175 0.615 0.6125 0.610 0.6075 0.6050 0.6 0.5975 0.5950];
m = 1400; f= 0.01; Jw = 0.65; rw= 0.31; Fz = 3560; Cd = 0.5; p = 1.202;
A = 1.95; bw = 0; fw = 0; Nw = 4; g = 9.81; uw = 0; seta = 0; Te = 0; Tb = 1000;
X=polyfit(L,M,20);
x_curve = 0:0.025:1;
y_curve = polyval(X,x_curve);
[t,i] = ode45('dot',[0:0.1:1],[20 20]);
Q = polyfit(t,i,4);
%subplot(1, 2, 1);
%plot(L,M,'p',x_curve,y_curve,'m');
xlabel('Lamda')
ylabel('mu'); grid;
%subplot(1, 2, 2);
plot(t,i); grid on;
xlabel('time(s)');
ylabel('x');
function xdot = dot(t,x)
global m f Jw rw Fz Cd p A Nw Te Tb g Y X
%UNTITLED2 Summary of this function goes here
%Detailed explanation goes here
xdot = zeros(2,1);
lamda = (x(2)-x(1))/x(1);
Y=X(1,1)*(lamda)^20+X(1,2)*(lamda)^19+X(1,3)*(lamda)^18+X(1,4)*(lamda)^17+X(1,5)*(lamda)^16+X(1,6)*(lamda)^15+X(1,7)*(lamda)^14+X(1,8)*(lamda)^13+X(1,9)*(lamda)^12+X(1,10)*(lamda)^11+X(1,11)*(lamda)^10+X(1,12)*(lamda)^9+X(1,13)*(lamda)^8+X(1,14)*(lamda)^7+X(1,15)*(lamda)^6+X(1,16)*(lamda)^5+X(1,17)*(lamda)^4+X(1,18)*(lamda)^3+X(1,19)*(lamda)^2+X(1,20)*(lamda)^1+X(1,21);
xdot(1)=(-0.5*p*Cd*A*((x(1)*rw)^2)-f*m*g+(Nw*Y*Fz))/(rw*m);
xdot(2)=(Te-Tb-rw*Y*Fz)/Jw;
end