在Matlab(Scilab)中由给定系数an,bn生成傅里叶级数图 我计算了C++中的系数a,bN(100,t=2×pi),并用很少的源检查它们是正确的。现在,我尝试在Scilab中为给定的示例函数生成傅立叶级数图:

在Matlab(Scilab)中由给定系数an,bn生成傅里叶级数图 我计算了C++中的系数a,bN(100,t=2×pi),并用很少的源检查它们是正确的。现在,我尝试在Scilab中为给定的示例函数生成傅立叶级数图:,matlab,graph,scilab,Matlab,Graph,Scilab,(x+2)*abs(cos(2*x*(x-pi/6))) 结果如下: 很明显,趋势是好的,但这一时期的开始和结束是错误的(相反?)您是否看到Scilab代码中存在任何问题?什么可能导致问题-函数解决方案(x)中的sin/cos值?我是否应该提供一个、bn值并检查其中是否存在计算错误?我不知道您是如何计算A和B系数的,但我假设您使用了常用的符号来获得以下公式的第一行: 因此,n从1开始。因为Scilab从1开始向量索引,所以正确地从2开始循环,但忘记了补偿这个“偏移”。 您的函数应该是这样的:

(x+2)*abs(cos(2*x*(x-pi/6)))

结果如下:


很明显,趋势是好的,但这一时期的开始和结束是错误的(相反?)您是否看到Scilab代码中存在任何问题?什么可能导致问题-函数解决方案(x)中的sin/cos值?我是否应该提供一个、bn值并检查其中是否存在计算错误?我不知道您是如何计算
A
B
系数的,但我假设您使用了常用的符号来获得以下公式的第一行:

因此,
n
从1开始。因为Scilab从1开始向量索引,所以正确地从2开始循环,但忘记了补偿这个“偏移”。 您的函数应该是这样的:

function series=solution(x) 
    series=A(1)/2;
    for i = 2:n
        series=series+(A(i)*cos((i-1)*x)+B(i)*sin((i-1)*x));
    end
endfunction
function series=solution(x,A,B)
由于您没有提供
A
B
,因此我无法检查结果

附加说明:如果在函数中显式定义所有输入变量,语法上更正确,如下所示:

function series=solution(x) 
    series=A(1)/2;
    for i = 2:n
        series=series+(A(i)*cos((i-1)*x)+B(i)*sin((i-1)*x));
    end
endfunction
function series=solution(x,A,B)

通过这种方式,您可以确保您的输入在代码的其他地方没有更改。

您已经解决了这个问题吗?谢谢,您完全正确,我发现“i-1”:)现在近似值与函数几乎相同:)