Smooth decay of a function
조회 수: 2 (최근 30일)
이전 댓글 표시
I have a function which dies of quickely. I need this function to smoothly decay off to 0 . Is there any way in Matlab to make that happen?
댓글 수: 4
Image Analyst
2020년 7월 26일
Please give values for everything in that alphabet soup. And include a screenshot of what you got, and what you'd like to achieve, but only after you read this link.
T = linspace(-5, 5, 500);
Tc = 3;
y = 2;
a = 7;
b = 6;
m = ((-b + (((b*b)-(4*y*a*(T-Tc))).^0.5))/(2*y)).^0.5;
subplot(2, 1, 1);
plot(T, real(m), 'b-', 'LineWidth', 2);
title('Real(m) vs. T', 'FontSize', 20);
grid on;
xlabel('T', 'FontSize', 20);
ylabel('real(m)', 'FontSize', 20);
% For T>Tc, m(T) becomes complex so m(T>Tc)=0
% Hence I want m(T) to smoothly decay to 0 for T>Tc
subplot(2, 1, 2);
plot(T, imag(m), 'b-', 'LineWidth', 2);
title('Imag(m) vs. T', 'FontSize', 20);
grid on;
xlabel('T', 'FontSize', 20);
ylabel('imag(m)', 'FontSize', 20);

For the random values I chose, it does look like the curve approaches the Tc point smoothly. What does it look like for you, with your values???
답변 (1개)
Alan Stevens
2020년 7월 26일
편집: Alan Stevens
2020년 7월 26일
How about writing a function like:
function mfn = mvalue(T,Tc,a,b,y)
disc = b^2 - 4*y*a*(T - Tc);
quad = -b + disc^0.5/(2*y);
if disc>0 && quad>0
mfn = quad^0.5;
else
mfn = 0;
end
end
and then calling
m(i) = mvalue(T(i), Tc, a, b, y);
댓글 수: 5
Alan Stevens
2020년 7월 26일
편집: Alan Stevens
2020년 7월 26일
Impossible to tell without knowing about the system you are modelling. Mathematically you could probably multiply m by some sort of exponential decay term. However, would that make sense in the context of your model?
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!