Matlab - Problema con solve dentro de un bucle

 
Vista:

Problema con solve dentro de un bucle

Publicado por Itxaso Iriondo (1 intervención) el 16/01/2020 12:46:53
Hola :)

Tengo un problema al intentar resolver un sistema de 6 ecuaciones con 6 incógnitas dentro de un bucle. El error que me aparece es el siguiente.:

Error using solve (line 266)
Specify the variable to solve for.

Error in motorgiratorio (line 108)
[Ax,Ay,N1,N2,x,Fm]=solve(Eq1,Eq2,Eq3,Eq4,Eq5,Eq6,Ax,Ay,N1,N2,x,Fm)

No entiendo que ocurre con ese error. El programa es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
clc
clear all
syms Ax Ay N1 N2 x Fm
%Data
x0=5;
n=0.47;
p=2;
e=2;
vm=(n*p*e)/(2*3.14);
angle=0.26;
M=11.55;
m=0.3;
am=0
tr=11:22
H=316;
a=-51;
altura=377.5;
base=162;
g=9.81;
%Geometria
U=1;
for i=1:length(tr)
    t=tr(1,U);
 
x2=(x0+vm*cos(angle)*t+(am*cos(angle)*t^2))/2;
x2r(U,:)=x2;
U=U+1;
end
 
U=1;
for i=1:length(tr)
    t=tr(1,U);
h=(vm*t*sin(angle)+(am*cos(angle)*t^2))/2;
hr(U,:)=h;
U=U+1;
end
 
U=1;
for i=1:length(hr)
    h=hr(U,1);
    x2=x2r(U,1);
tita=asin(h/x2);
titar(U,1)=tita;
U=U+1;
end
 
 
%Velocidades de giro
U=1;
for i=1:length(titar)
    tita=titar(U,1);
    x2=x2r(U,1);
w2=(vm*sin(angle)/cos(angle))/(x2*cos(tita));
w2r(U,:)=w2;
U=U+1;
end
%Aceleracion de giro
U=1;
for i=1:length(titar)
    tita=titar(U,1);
    w2=w2r(U,1);
    x2=x2r(U,1);
alfa2=(am*sin(angle)*cos(angle)+x2*sin(angle)*w2.^2-2*w2*vm)/(x2*cos(tita));
alfa2r(U,:)=alfa2;
U=U+1;
end
 
%ag1
 
ag1x=am
ag1y=am*sin(angle)/cos(angle)
 
%ag2
U=1;
for  i=1:length(alfa2r)
    alfa2=alfa2r(U,1);
    w2=w2r(U,1);
ag2x=-alfa2*(H/2)-w2^2*a;
ag2y=alfa2*a-w2^2*(H/2);
 
ag2xr(U,1)=ag2x;
ag2yr(U,1)=ag2y;
U=U+1;
end
 
H=H/1000;
a=-a/1000;
altura=altura/1000;
base=base/1000;
s=11/1000;
Ig=(altura^2+base^2)*M/12;
nu1=0.6;
nu2=0.8;
L=10.8/1000;
 
U=1;
for i=1:11
    ag2x=ag2xr(U,1);
    ag2y=ag2yr(U,1);
    alfa2=alfa2r(U,1);
    x2=x2r(U,1)/1000;
Eq1=Ax+N2*nu1-M*ag2x;
Eq2= Ay+N2-M*g-M*ag2y;
Eq3=N2*x2-M*g*a+M*ag2x*H/2-M*ag2y*a-Ig*alfa2;
Eq4=N2*nu1-Fm+N1*nu2*cos(angle)+N1*sin(angle)-m*ag1x;
Eq5=-N2-m*g-N1*nu2*sin(angle)+N1*cos(angle)-m*ag1y;
Eq6=-Fm*L+N1*nu2*cos(angle)*s+N1*nu2*sin(angle)*x+N1*sin(angle)*s+N1*cos(angle)*x-N2*x2-N2*nu1*L;
[Ax,Ay,N1,N2,x,Fm]=solve(Eq1,Eq2,Eq3,Eq4,Eq5,Eq6,Ax,Ay,N1,N2,x,Fm)
 
Axr(U,:)=Ax;
Ayr(U,:)=Ay;
N1(U,:)=N1;
N2(U,:)=N2;
x(U,:)=x;
Fm(U,:)=Fm;
 
 
U=U+1;
end


Gracias por la ayuda <3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 7.884
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problema con solve dentro de un bucle

Publicado por JOSE JEREMIAS CABALLERO (5520 intervenciones) el 16/01/2020 15:31:26
1
2
3
4
5
6
7
[Axx,Ayy,N11,N22,xx,Fmm]=solve(Eq1,Eq2,Eq3,Eq4,Eq5,Eq6,Ax,Ay,N1,N2,x,Fm);
Axrr(U,1)=Axx;
Ayrr(U,1)=Ayy;
N1r(U,1)=N11;
N2r(U,1)=N22;
xr(U,1)=xx;
Fmr(U,1)=Fmm;

1
>>sol_sistemas_no_lineales1


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar