如何用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

温馨提示:答案为网友推荐,仅供参考
第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
相似回答