gpt4 book ai didi

ubuntu - 在 Ubuntu 上编译 Octave 脚本时出现解析错误

转载 作者:行者123 更新时间:2023-12-04 18:47:28 26 4
gpt4 key购买 nike

我不确定这个错误与什么有关(这就是我在标题中包含 Ubuntu 的原因,我不知道这是否与错误有关)。

我有一个简单的 Octave 脚本来练习数值积分,如下所示:

function y = f(x)
y = x.*sin(1./x) .* sqrt(abs(1-x));
endfunction

[q, ier, nfun, err] = quad("f", 0, 3)

我得到的错误是:
parse error near line 11 of file /home/ariel/Desktop/Ariel/Programming/Octave_Programming/SimpsonsRule.m

syntax error

>>> This is GNU Emacs 23.3.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.10)
^

我对这个错误感到困惑,因为代码中没有第 11 行?

请注意:我对编程非常陌生,并试图一次学习几种语言,所以请原谅这可能是一个非常简单的问题,我在网上搜索后无法找到解决方案。

提前致谢!

最佳答案

看起来这是一个常见的“你好,世界!”运动类型;相同的代码和参数 here .

你会得到一个“ABNORMAL RETURN... ”语句,因为你的下限( x=0 )在你的函数表达式的分母中( ...sin(1./x)... )。将下限设置为非常小的值,例如 .001或上面链接中的内容以避免不连续性。

将该代码(即使没有 @Andy 所建议的 1; )准确地放入文件中(您可以随意调用它;您的文件名似乎是 SimpsonsRule.m ),然后从命令行运行它,

octave SimpsonsRule.m

给出@Andy 报告的输出。将函数调用更改为
quad("f", 0.001, 3)

产量
q =  1.9819
ier = 0
nfun = 3297
err = 2.8021e-08

您快到了!

如果您有兴趣学习另一种语言,请查看支持 Octave's quad function 实现的 Fortran 源代码。 !我喜欢 Fortran,但我主要是在开玩笑。

编辑:

您可以在这里选择。
  • 如果您在 Octave 命令行上,将这些行一次复制并粘贴到命令行中(function ...quad("f",0,3)),它将起作用。
  • 将完全相同的内容( function ...quad("f",0,3) )放入任何名称的文件(例如 SimpsonsRule.m )并从 shell 调用它( bash 或其他,而不是 octave 提示符)作为 octave SimpsonsRule.m它会起作用。
  • 或者更复杂的解决方案:将函数定义(仅)单独放在一个文件中,然后单独调用该函数。更多关于这下面。

  • Octave(和 MATLAB)有关于文件名和函数的约定。就像在其他编程语言中一样,Octave 知道搜索某些目录和某些文件名以找到您调用的函数。当您调用 Octave 不知道的函数时(例如,如果您调用 foo(1),它将在一组目录中搜索名为 foo.m 的文件名(即与具有 .m 扩展名的函数名称相同) .

    所以你的函数被称为 f .创建一个名为 f.m 的文件并准确地给出 f 的函数定义:
    function y = f(x)
    y = x.*sin(1./x) .* sqrt(abs(1-x));
    endfunction

    然后开始 octave来自您的 shell 的 session (由 $ 表示的提示),
    $ octave

    然后调用你 Shiny 的新 f功能:
    octave:1> f(2)

    Octave 会报告
    ans =  0.95885

    现在运行 quad命令,它调用你的函数 f :
    octave:2> [q, ier, nfun, err] = quad("f", 0.001, 1)

    看看它做了什么!

    请记住 f可能不是一个好的函数名称——它根本没有描述函数的作用,并且可能与其他函数发生冲突,尽管在这种情况下它并没有害处。

    如果您认真学习 Octave,我建议您从一些教程开始。

    关于ubuntu - 在 Ubuntu 上编译 Octave 脚本时出现解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26236049/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com