Scilab代码第16行解析错误求助:disp语句报错原因不明
Scilab函数prog1解析错误排查方案
错误根源
Scilab的if/elseif/else语句语法要求结尾不能加冒号,你代码中第16行及后续的if angle < 90:、elseif angle == 90:、else :都是非法语法,这是触发解析错误的直接原因。
另外代码存在一处冗余计算:执行v = v / norm(v)后,v已被归一化,norm(v)恒等于1,后续计算夹角时可以简化公式,避免不必要的计算。
修正后的完整代码
function w = prog1(u,v); n = length(u); m = length(v); if n != m disp('Produit scalaire impossible.'); else v_normalized = v / norm(v); ps = 0; for i = 1:n ps = ps + u(i)*v_normalized(i); endfor disp(["Le produit scalaire est :",num2str(ps)]) // 利用v已归一化的特性简化计算 angle = acosd(ps/norm(u)) disp(["L'angle, en degré, entre les deux vecteurs est :",num2str(angle)]) if angle < 90 disp("L'angle est aigu") elseif angle == 90 disp("L'angle est droit") else disp("L'angle est obtus") // 原单词"obtu"拼写错误,修正为"obtus" endif w = ps * v_normalized; endif endfunction
额外说明
- 修正了原代码中"obtu"的拼写错误,改为法语中“钝角”的正确拼写"obtus"。
- 将归一化后的v重命名为
v_normalized,避免覆盖原始输入参数,提升代码可读性。
内容的提问来源于stack exchange,提问作者Julien Zhao
相关产品推荐
相关产品推荐

