Error using mtimes Inner matrix dimensions must agree

2 Ansichten (letzte 30 Tage)
salman
salman am 20 Okt. 2014
Kommentiert: salman am 20 Okt. 2014
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

Akzeptierte Antwort

Sean de Wolski
Sean de Wolski am 20 Okt. 2014
Bearbeitet: Sean de Wolski am 20 Okt. 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 Kommentar
salman
salman am 20 Okt. 2014
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by