代码:
syms r
r1=34.5;
a=asin(8.2385e-6*r^3 + 0.000084205*r^2 - 0.0041311*r + 0.38649);
f=@(r)int(-tan(a)*(sin(a)+r*cos(a))*diff(a),-6.62,r);
v=@(r)(f-r*cos(a))/r1;
fun1=@(r)r*cos(a-v)+r1*sin(v);
fun2=@(r)r*sin(a-v)+r1*cos(v);
b=linspace(-6.62,6.76,15);
fn1=arrayfun(fun1,b);
fn2=arrayfun(fun2,b);
plot(fn1,fn2)
运行结果图片:
你好同学,不需要一直都用@进行函数描述,当你可以确定最后一个表达式只是关于r的关系时,用matlabFunction会非常方便!
代码供参考,秘诀还是matlabFunction,因为符号计算最后都可以得到一个函数,真的很好用,向你推荐:
syms r
r1=34.5;
a=asin(8.2385e-6*r^3 + 0.000084205*r^2 - 0.0041311*r + 0.38649);
f= int(-tan(a)*(sin(a)+r*cos(a))*diff(a),-6.62,r);
v= (f-r*cos(a))/r1;
fun1=r*cos(a-v)+r1*sin(v);
fun2=r*sin(a-v)+r1*cos(v);
fun1 = matlabFunction(fun1);%得到关于r的函数
fun2 = matlabFunction(fun2);%得到关于r的函数
b=linspace(-6.62,6.76,15);
fn1 = zeros(size(b));
fn2 = zeros(size(b));
for i = 1:1:numel(b)
fn1(i) = fun1(b(i)) ;%利用函数求值
fn2(i) = fun2(b(i)) ;
end
plot(fn1,fn2)%画图
效果:
如有帮助,还望题主给个宝贵的采纳支持一下答主答题哦,先行感谢(●'◡'●)