我有一个函数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
)。