ارسال پاسخ 
 
امتیاز موضوع:
  • 1 رأی - میانگین امتیازات : 4
  • 1
  • 2
  • 3
  • 4
  • 5

ارور معکوس ماتریس پارامتریsymbolic matrix inverse error

۱۳۹۶/۲/۲۰, ۱۱:۰۲ صبح
ارسال: #1

ارور معکوس ماتریس پارامتریsymbolic matrix inverse error


با سلام
وقتی میخوام از ماتریس پارامتری 6*6 که معکوس بگیرم ارور میده.
آیا مشکل از ضعف سیستم است؟روی 3تا سیستم دیگه 7 هسته و رم 16 تست کردم ولی بازم همین ارور رو میده
مشکل از بد نوشته شدنه کد و اشغال فضای رم هست؟
چطوری باید ماتریس پارامتری 6 در 6 معکوس بگیرم؟
مربع نوار اسکرول به رنگ سبز هست و قاعدتا نباید مشکلی داشته باشه.
کد پیوست کردم.
ممنون میشم بررسی کنین و جواب بدین.


clc;
clear;
% dynamic inverse
syms r_u r_d alfa_u alfa_d z_cg h_0 si fi teta x y z i_xx i_xy i_zx i_zy i_yx i_xz i_yy i_yz i_zz m_p v_x v_y v_z vdot_x vdot_y vdot_z omega_x omega_y omega_z omegadot_x omegadot_y omegadot_z
g=9.81;
i_xy=i_yx ;
i_xz=i_zx;
i_yz=i_zy;
e_11=cos(teta)*cos(si);
e_21=cos(teta)*sin(si);
e_31=-sin(teta);
e_12=sin(fi)*sin(teta)*cos(si)-cos(fi)*sin(si);
e_22=sin(fi)*sin(teta)*sin(si)+cos(fi)*cos(si);
e_32=sin(fi)*cos(teta);
e_13=cos(fi)*sin(teta)*cos(si)+sin(fi)*sin(si);
e_23=cos(fi)*sin(teta)*sin(si)-sin(fi)*cos(si);
e_33=cos(fi)*cos(teta);
x_u=sym(zeros(1,6));
y_u=sym(zeros(1,6));
z_u=sym(zeros(1,6));
x_d0=sym(zeros(1,6));
y_d0=sym(zeros(1,6));
z_d0=sym(zeros(1,6));
x_d=sym(zeros(1,6));
y_d=sym(zeros(1,6));
z_d=sym(zeros(1,6));
l=sym(zeros(1,6));
u_x=sym(zeros(1,6));
u_y=sym(zeros(1,6));
u_z=sym(zeros(1,6));
for i=1:6
x_u(i)=r_u*cos((pi/3)*(i)+(-1)^i*alfa_u/2);
y_u(i)=r_u*sin((pi/3)*(i)+(-1)^i*alfa_u/2);
z_u(i)=z_cg;
x_d0(i)=r_d*cos(((2*(1+(2/3)*(i-1))-2)*pi/3)-(-1)^i*alfa_d/2);
y_d0(i)=r_d*sin(((2*(1+(2/3)*(i-1))-2)*pi/3)-(-1)^i*alfa_d/2);
z_d0(i)=z_cg+h_0;
x_d(i)=e_11*x_d0(i)+e_12*y_d0(i)+e_13*z_d0(i)+x;
y_d(i)=e_21*x_d0(i)+e_22*y_d0(i)+e_23*z_d0(i)+y;
z_d(i)=e_31*x_d0(i)+e_32*y_d0(i)+e_33*z_d0(i)+z;
l(i)=sqrt((x_u(i)-x_d(i))^2+(y_u(i)-y_d(i))^2+(z_u(i)-z_d(i))^2);
u_x(i)=(x_d(i)-x_u(i))/l(i);
u_y(i)=(y_d(i)-y_u(i))/l(i);
u_z(i)=(z_d(i)-z_u(i))/l(i);
end
A=[u_x(1) u_x(2) u_x(3) u_x(4) u_x(5) u_x(6);u_y(1) u_y(2) u_y(3) u_y(4) u_y(5) u_y(6);u_z(1) u_z(2) u_z(3) u_z(4) u_z(5) u_z(6);u_z(1)*y_u(1)-u_y(1)*z_u(1) u_z(2)*y_u(2)-u_y(2)*z_u(2) u_z(3)*y_u(3)-u_y(3)*z_u(3) u_z(4)*y_u(4)-u_y(4)*z_u(4) u_z(5)*y_u(5)-u_y(5)*z_u(5) u_z(6)*y_u(6)-u_y(6)*z_u(6);-u_z(1)*x_u(1)+u_x(1)*z_u(1) -u_z(2)*x_u(2)+u_x(2)*z_u(2) -u_z(3)*x_u(3)+ u_x(3)*z_u(3) -u_z(4)*x_u(4)+ u_x(4)*z_u(4) -u_z(5)*x_u(5)+ u_x(5)*z_u(5) -u_z(6)*x_u(6)+u_x(6)*z_u(6);u_y(1)*x_u(1)-u_x(1)*y_u(1) u_y(2)*x_u(2)-u_x(2)*y_u(2) u_y(3)*x_u(3)-u_x(3)*y_u(3) u_y(4)*x_u(4)-u_x(4)*y_u(4) u_y(5)*x_u(5)-u_x(5)*y_u(5) u_y(6)*x_u(6)-u_x(6)*y_u(6)];

B=[m_p*(vdot_x-v_y*omega_z+v_z*omega_y+g*sin(teta));m_p*(vdot_y-v_z*omega_x+v_x*omega_z-g*sin(fi)*cos(teta));m_p*(vdot_z-v_x*omega_y+v_y*omega_x-g*cos(fi)*cos(teta));i_xx*omegadot_x+i_xy*(omega_x*omega_z-omegadot_y)-i_xz*(omega_x*omega_y+omegadot_z)+omega_y*omega_z*(i_zz-i_yy)+i_yz*(omega_z^2-omega_y^2);i_yy*omegadot_y-i_xy*(omega_y*omega_z+omegadot_x)+i_xz*(omega_x^2-omega_z^2)+omega_x*omega_z*(i_xx-i_zz)+i_yz*(omega_x*omega_y-omegadot_z);i_zz*omegadot_z+i_xy*(omega_y^2-omega_x^2)+i_xz*(omega_x*omega_z-omegadot_x)+omega_x*omega_y*(i_yy-i_xx)-i_yz*(omega_x*omega_z+omegadot_y)];

F=(inv(A))*B;
یافتن تمامی ارسال های این کاربر
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 




کاربرانِ درحال بازدید از این موضوع:
1 مهمان

بازگشت به بالابازگشت به محتوا