Error using mtimes Inner matrix dimensions must agree

hi hope anyone can help me with solving the problem. the system is
m=4.2*10^3, c=2.8*10^3, k=2*10^4, y0=0.4,
where p=sqrt((k/m)-(c^2/4m^2) and
n=c/2m
y(t)=exp(-n*t)(y0cos(pt)+y0sin(pt)(n/p));
to solve it i have done
>> m=4.2*10^3;
>> c=2.8*10^3;
>> k=2*10^4;
>> t=linspace(0,10,100);
>> p=sqrt((k/m)-((c^2)/(4*m^2)));
>> n=(c/(2*m));
>> y0=0.4;
when i use all info in the eq Y(t) it gives an error
>> y(t)=(exp(-n*t))*((y0*cos(p*t))+(y0*(n/p)*sin(p*t)));
??? Error using ==> mtimes Inner matrix dimensions must agree.
can anyone please point out my mistake and show me how to plot y(t) against t.
thanks

 Risposta accettata

Sean de Wolski
Sean de Wolski il 20 Ott 2014
Modificato: Sean de Wolski il 20 Ott 2014
You are calling * for multiplication which means it's trying to do a matrix multiply. In order to do an elementwise multiple, use .*. To help:
>>vectorize '(exp(-n*t))*((y0*cos(p*t))+(y0*(n/p)*sin(p*t)))'
ans =
(exp(-n.*t)).*((y0.*cos(p.*t))+(y0.*(n./p).*sin(p.*t)))
And use this as right hand side

1 Commento

to find the real roots im trying fzero() function but it also gives error
x=fzero((exp(-n.*t)).*((y0.*cos(p.*t))+(y0.*(n./p).*sin(p.*t))),t)
??? Error using ==> fzero at 169 FUN must be a function, a valid string expression, or an inline function object.

Accedi per commentare.

Più risposte (1)

Matt J
Matt J il 20 Ott 2014
Modificato: Matt J il 20 Ott 2014
y = vectorize( @(t) (exp(-n*t))*((y0*cos(p*t))+(y0*(n/p)*sin(p*t))) );
t=linspace(...);
plot(t,y(t));

Categorie

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by