Знатоки MatLab помогите???

anna7

решаю систему обыкновенных нелинейных дифуров функцией ode
и он пишеттакую штуку:
Warning: Failure at t=3.497073e+000. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (1.242410e-014) at time t.
и прерывает вычисления как быть?

aqvamen

систему изобрази желательно в читабельном виде, аля картинка

anna7

изобразить лучше никак не получится
function DX=fun_unlinear(T,X)
m2=0.04;
m1=m2;
l1=0.3;
l2=l1;
g=9.8;
c1=0.001;
c2=0.007;
adp=(m1*l1*l1/3+m2*l2*l2/3+m2*l1*l1-m1*l1*l2*cos(X(2;
ada=m2*l2*l1*cos(X(2/2-m2*l2*l2/3;
bdp=ada;
bda=m2*l2*l2/3;
A=m2*l1*l2*sin(X(2*X(3)*X(4)-X(4)*X(4)*m2*l1*l2*sin(X(2/2-m1*l1*g*sin(X(1/2-m2*g*l1*sin(X(1+m2*l2*g*sin(X(1)-X(2/2;
B=(-1)*(m2*g*l2*sin(X(1)-X(2/2+X(3)*X(3)*m2*l1*l2*sin(X(2/2);
u=uprv(X);
DX3=(A*bda-B*ada+ada*(c1*u-c2*X(4/(bdp*ada-adp*bda);
DX4=(A*bdp-B*adp+adp*(c1*u-c2*X(4/(bda*adp-ada*bdp);
DX(1)=X(3);
DX(2)=X(4);
DX(3)=DX3;
DX(4)=DX4;
DX=DX';
где uprv
function uprv=uprv(X)
gamma=20;
u0=20;
Y10=u0/gamma;
V =[0.1340 0.1128 0.0339 + 0.0440i 0.0339 - 0.0440i;
0.0263 0.0638 -0.0535 - 0.1121i -0.0535 + 0.1121i;
0.9722 -0.8632 -0.3953 + 0.0846i -0.3953 - 0.0846i;
0.1904 -0.4880 0.9045 0.9045; ];
Y=inv(V)*X;
if abs(Y(1<Y10
uprv=gamma*Y(1);
end
if (abs(Y(1>=Y10)
if Y(1)<0
uprv=(-1)*u0;
end
if Y(1)>0
uprv=u0;
end
end
лучше не знаю как система реально очень громоздкая
4 порядок нелинейная

aqvamen

мде.... я пас

anna7

если это поможет то описывает движение двузвенного плоского маятника. uprv управление

anna7

а не знаешь как изменить eps-которая Floating-point relative accuracy
Оставить комментарий
Имя или ник:
Комментарий: