You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:03:12