已知参数方程x = a * cos(t) ^ 3,y = b * sin(t) ^ 3,用Matlab求dy / dx。如果直接使用:——————————————————————syms a b t;x = a * cos(t) ^ 3;y = b * sin(t) ^ 3;diff(y, 'x')——————————————————————进行计算的话,会得到:——————————————————————ans = 0——————————————————————
clear;clc;
syms a b t;
x = a * cos(t) ^ 3;
y = b * sin(t) ^ 3;
dydx=diff(y,t)/diff(x,t)
%%以下为图形验证
a=2;b=3;
x=str2func(['@(t)',vectorize(subs(x))]);
y=str2func(['@(t)',vectorize(subs(y))]);
k=str2func(['@(t)',vectorize(subs(dydx))]);
t=linspace(-pi,pi);
X=[-a,a];
n=0;
f=figure;
while isvalid(f)
n=mod(n,99)+1;
T=t(n);
hold off
plot(x(t),y(t));
hold on
Y=k(T)*(X-x(T))+y(T);
plot(X,Y);
plot(x(T),y(T),'ko','markerfacecolor','w');
xlim([-a,a])
ylim([-b,b])
pause(0.02)
end
大佬,Matlab是你开发的吧?这么6的吗?
不过我的是Matlab R2017b,用实时脚本(*.mlx)执行到第15行之后就卡在while那了,那个动图一直画不出来……
你好,根据我的试验,实时脚本中的图形本质上是一个在程序执行完毕后的截图,而真正的图像被默认设置为不可见,这样在循环执行完毕前,无法出现这个图形。
解决方案是,将f=figure;修改为f=figure('visible','on');