如何用Matlab求参数方程的导数?

已知参数方程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');

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-28
syms a b t;
x = a * cos(t)^3;
y = b * sin(t)^3;

dx1dt = diff(x,t);

% 一阶导数
dy1dx = diff(y,t)/dx1dt

% 二阶导数
dy2d2x = diff(dy1dx,t)/dx1dt

% 3阶导数
dy3d3x = diff(dy2d2x,t)/dx1dt
相似回答