Символьный предел Matlab возвращает кусочную функцию
У меня есть функция f
который я пытаюсь принять символический предел. Итак начну со стандартного
R1 = 18;
h1 = 6.48528;
R2 = 1.8;
h2 = 0.060045431;
f1 = R1^2 / (4 * h1);
R3 = 1;
syms x
f1 =@(r) (h2/R2^2) * r.^2 + f1;
f2 =@(r) (h2/R2^2) * r.^2 + f1;
f1p = matlabFunction(diff(f1(x)));
f2p = matlabFunction(diff(f2(x)));
f =@(r1, t1, r2, t2) ...
-((r1.*r2.*(-f1(r1) + f2(r2) + (r1 - r2.*cos(t1 - t2)).*f1p(r1)).* ...
sqrt(((1 + abs(f1p(r1)).^2).*(1 + f1p(r1).^2))./(1 + abs(cos(t2).* ...
f2p(r2)).^2 + abs(sin(t2).*f2p(r2)).^2)).*(-f1(r1) + f2(r2) + ...
(-r2 + r1.*cos(t1 - t2)).*f2p(r2)).*sqrt(1 + f2p(r2).^2))./ ...
(pi.*(1 + abs(cos(t1).*f1p(r1)).^2 + abs(sin(t1).*f1p(r1)).^2).* ...
(r1.^2 + r2.^2 + abs(f1(r1) - f2(r2)).^2 - 2.*r1.*r2.*cos(t1 - t2)).^2))
тогда я пытаюсь взять предел f
syms r1 r2 t1 t2
limit(f(r1, t1, r2, t2), r2, r1)
И я получаю piecewise([r1 == 0, 0], [r1 ~= 0, (limit(
огромная функция от r1, r2, t1, t2 )])
Так почему же Matlab не хочет устанавливать ограничение, и допустимо ли просто преобразовать в строку, удалить ограничение и заменить r2
с r1
возврат к дескриптору функции? Есть лучший способ сделать это?
И я хочу сделать это, чтобы затем я мог преобразовать весь беспорядок обратно в анонимную функцию (используя matlabFunction
).