필터 지우기
필터 지우기

i'd like to ask is there any function to find asymptotes of an equation y = f(x) that satisfies x = x(t) and y = y(t). I'm new to matlab.

조회 수: 5 (최근 30일)
syms t
x = (t+1)./(t-1);
y = (t^2+2)./(t^2-t);
% Find horizontal asymptotes
syms x0
tx = solve(x == x0, t);
num_ha = 0;
sh = [];
for id = 1:length(tx)
yx = subs(y, t, tx(id));
for s = 0:1
infi = (-1)^s*inf;
ya = limit(yx, x0, infi);
if isfinite(ya)
fprintf('Tiem can ngang la: y = %f\n', ya)
num_ha = num_ha + 1;
end
end
end
fprintf('Do thi ham f(x) co %d tiem can ngang\n------------------\n', num_ha)
Do thi ham f(x) co 0 tiem can ngang ------------------
% Find slant asymptotes
num_sa = 0;
ss = [];
for id = 1:length(tx)
yx = subs(y, t, tx(id));
for s = 0:1
infi = (-1)^s*inf;
a = limit(yx/x0, x0, infi);
b = limit(yx - a*x0, x0, infi);
c = [a b];
if isfinite(a) && isfinite(b)
new = 1;
for k = 1:size(ss, 1)
if all(c == ss(k, :))
new = 0;
break
end
end
if new
ss = [ss; c];
fprintf('Tiem can xien la: y = x * %f + %f\n', a, b)
num_sa = num_sa + 1;
end
end
end
end
Tiem can xien la: y = x * 1.500000 + -2.500000
fprintf('Do thi ham f(x) co %d tiem can xien\n-------------------\n', num_sa)
Do thi ham f(x) co 1 tiem can xien -------------------
% Find vertical asymptotes
syms y0
ty = solve(y == y0, t);
num_va = 0;
sv = [];
for s = 0:1
infi = (-1)^s * inf;
ti = subs(ty, y0, infi);
for id = 1:length(ti)
t0 = ti(id);
if ~isreal(t0)
continue
end
xa = limit(x, t, t0);
if isfinite(xa)
new = 1;
for k = 1:size(sv, 1)
if xa == sv(k)
new = 0;
break
end
end
if new
sv = [sv xa];
fprintf('Tiem can dung la: x = %f\n', xa)
num_va = num_va + 1;
end
end
end
end
fprintf('Do thi ham f(x) co %d tiem can dung\n-------------------\n', num_va)
Do thi ham f(x) co 0 tiem can dung -------------------
figure
hold on
fplot(x, y)
xlabel('Ox')
ylabel('Oy')
grid on
  댓글 수: 1
John D'Errico
John D'Errico 2023년 12월 1일
편집: John D'Errico 2023년 12월 1일
Please don't keep on reposting your question. I closed it as a pure duplicate.
As I said in my answer, your question is not even a question about MATLAB. Until you know how to approach a problem, you cannot write code to solve it. There is no tool in MATLAB to solve your problem.

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

답변 (2개)

John D'Errico
John D'Errico 2023년 11월 25일
편집: John D'Errico 2023년 11월 25일
Its an interesting question of mathematics, maybe not really a question about MATLAB in my eyes, because until you know how to solve a problem using mathematics, you cannot hope to write code.
Is there any function? No. Sorry, but I don't see any way to do so, since x and y can be literally anything. And since they could be arbitraily complicated, messy functional forms, it might even be possible to find some pair of functions where we cannot prove that an asymptote exists or not.
You have made an interesting attempt at a solution, where you look for points where x or y approach infinity, but I could counter with examples where x or y go to infinity at infinitely many points.

Walter Roberson
Walter Roberson 2023년 12월 1일
syms t;
x_t = (t+1)./(t-1);
y_t = (t^2 + 2)./(t^2 - t);
limit(y_t, t, -inf)
ans = 
1
limit(y_t, t, 0, 'left')
ans = 
limit(y_t, t, 0, 'right')
ans = 
limit(y_t, t, 1, 'left')
ans = 
limit(y_t, t, 1, 'right')
ans = 
limit(y_t, t, inf)
ans = 
1
  댓글 수: 1
John D'Errico
John D'Errico 2023년 12월 1일
But this does not answer the question of how to identify a possibly linear asymptote. Or what to do if you cannot easily identify poles of the functions for a completely general problem.

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

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

태그

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by