首页 > 解决方案 > 运行代码时数组索引 Syms 错误

问题描述

clear;
clc;

m=18;
L=4;
g=9.81;

syms ax alpha ay na nb
S = solve(ax - .5.*L.*alpha.*cos(30)==0, 0 ==(ax + alpha.*L.*.5.*cos(30)).*sin(20) + (ay + alpha.*.5.*L.*sin(30)).*cos(30), na + nb.*sin(20) == m.*ax, nb.*cos(20) - m.*g == m.*ay, -na(L./2.*cos(30)) + nb.*cos(20).*(L./2.*sin(30)) + nb.*sin(20).*(L./2.*cos(30)) == .5.*m.*L.^2.*alpha);

S = [S.ax, S.alpha, S.ay, S.na, S.nb]

不断获取数组索引必须是正整数或逻辑值错误

标签: matlab

解决方案


看起来脚本需要在行-na中进行乘法符号。solve()试试下面的这个片段:

clear;
clc;

m=18;
L=4;
g=9.81;

syms ax alpha ay na nb
S = solve(ax - .5.*L.*alpha.*cos(30)==0, 0==(ax + alpha.*L.*.5.*cos(30)).*sin(20) + (ay + alpha.*.5.*L.*sin(30)).*cos(30), na + nb.*sin(20) == m.*ax, nb.*cos(20) - m.*g == m.*ay, -na.*(L./2.*cos(30)) + nb.*cos(20).*(L./2.*sin(30)) + nb.*sin(20).*(L./2.*cos(30)) == .5.*m.*L.^2.*alpha);
S = [S.ax, S.alpha, S.ay, S.na, S.nb];
disp(S);

推荐阅读