程序出现的问题,不知道如何补救。

syms a b t;
r=[a(cos(t)),a(sin(t)),b*t];
r1=diff(r,t);%求r的一阶导
r2=diff(r1,t);%求r的二阶导
k1=mo(cross(r1,r2))/((mo(r1)).^3;%求曲率
k=simplify(k1);%增加化简语句使结果正确
r3=diff(r2,t);
C=[r1,r2,r3];
N1=det(C)/(mo(cross(r1,r2))).^2;%求挠率
N=simplify(N1);%增加化简语句使结果正确


img

你好同学,根据你的要求,求曲率以及挠率,发现你的程序有如下几个地方需要修改:
(1)乘号一定要有,matlab不会允许ab直接写成ab,而是需要写成a*b
(2)模可以用norm函数,这是matlab自带的
(3)C=[r1,r2,r3],改成C=[r1;r2;r3],这样就方便构成矩阵
以下是修改之后的代码

syms a b t;
r=[a*(cos(t)),a*(sin(t)),b*t];
r1=diff(r,t);%求r的一阶导
r2=diff(r1,t);%求r的二阶导
k1=norm(cross(r1,r2))/norm(r1)^3;%求曲率
k=simplify(k1)%增加化简语句使结果正确
r3=diff(r2,t);
C=[r1;r2;r3];
N1=det(C)/norm(cross(r1,r2)).^2;%求挠率
N=simplify(N1)%增加化简语句使结果正确

结果为:

k =
 
(abs(a*b*cos(t))^2 + abs(a*b*sin(t))^2 + abs(a)^4)^(1/2)/(abs(a*sin(t))^2 + abs(b)^2 + abs(a*cos(t))^2)^(3/2)
 
 
N =
 
(a^2*b)/(abs(a*b*cos(t))^2 + abs(a*b*sin(t))^2 + abs(a)^4)

如果你用mlx文件粘贴代码运行,那么matlab会显示公式如下:

img

如有帮助,还请给个采纳支持一下哟

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632