Matlab符号限制返回分段函数

时间:2015-06-27 02:48:14

标签: matlab anonymous-function symbolic-math limits

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

0 个答案:

没有答案