Plot an equation by calling a function

조회 수: 3 (최근 30일)
Fatemeh Salar
Fatemeh Salar 2022년 7월 9일
댓글: Rik 2022년 7월 11일
Hi.
I tried to write a function and then call it to plot me y , it didn;t work out . could you please tell me what is wrong with it ?
Here is the function :
function [y]=myfunn(m,c,k,x0,v0,t)
w0=sqrt(k/m);
zeta=c/(2*sqrt(k*m));
if(zeta>0 && zeta<1)
y=(exp(zeta.*(-1).*t)).*((x0.*cos(w0.*sqrt(1-zeta.^2).*t))+(v0+zeta.*w0.*x0).*sin(sqrt(1-zeta.^2).*t)./(w0.*sqrt(1-zeta.^2)));
elseif(zeta==1)
y=(exp(zeta.*(-1).*t)).*(x0+t.*(zeta.*w0.*x0));
elseif(zeta>1)
y=(exp(zeta.*(-1).*t)).* ...
(((v0+(zeta+sqrt(zeta.^2-1)))).*exp(w0.*sqrt(zeta.^2-1).*t)./2.*w0.*sqrt(zeta.^2-1) + ...
((-v0+(-zeta+sqrt(zeta^2-1))))*exp(-1*w0.*sqrt(zeta.^2-1).*t)./2.*w0.*sqrt(zeta.^2-1));
end
end
And here is the script when I tried to call it and then plot it :
clc
clear
close all
m=input('Please enter mass : ')
c=input('Please enter damping : ')
k=input('Please enter stifness : ')
x0=input('Please enter x at t=0 : ')
v0=input('Please enter v at t=0 : ')
t=input('Please enter time : ')
[y]=myfunn(m,c,k,x0,v0,t);
t=linspace(0,t,100);
plot(t,y)
xlabel('time')
ylabel('x(t)')
grid on
hold on
Maybe I am wrong in calling a function ask ask it to plot .... Idk
  댓글 수: 3
Fatemeh Salar
Fatemeh Salar 2022년 7월 10일
@Walter Roberson I changed the entire question and now wanted to delete it . I post it again here , so I flagged this question to get deleted (apperantly I can't delete it by myself)
Thanks.
Rik
Rik 2022년 7월 11일
You received an answer. That is why you can no longer delete it. Materially editing your question will only make it confusing for future readers with a similar question.
Asking a second question is not a problem, but why mutilate the first question in order to do so?

댓글을 달려면 로그인하십시오.

답변 (1개)

KSSV
KSSV 2022년 7월 9일
It looks like your e in the function is exp. Change the function to:
function [y]=myfun(a,b,c,t)
if (a*b/c>1)
y = (exp(a))*sin(c.*t)./sqrt(b);
elseif (a*b/c<1 && a*b/c>0)
y = sin(a)*sqrt(b.*t)./sin(c);
elseif (a*b/c < 1)
y = cos(a)*exp(b.*t)./c;
end
end
If e is not exp, then you need to define e like a,b,c and input into the function.
  댓글 수: 3
KSSV
KSSV 2022년 7월 9일
Use the function which I gave. It works.
Fatemeh Salar
Fatemeh Salar 2022년 7월 9일
편집: Fatemeh Salar 2022년 7월 9일
My bad! I think I asked a question I already knew its answer lol
The thing is I made a mistake at the first place. There was an error for another function of mine not that one you saw earlier. So instead of deleting my previous question I edited it.
The proplem is with my function [y]=myfunn(m,c,k,x0,v0,t)
And the picture was the result of this function that ain't working :S

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Assembly에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by