具有限制和变量的正弦的总和?

时间:2014-01-21 04:29:37

标签: matlab

我需要帮助才能使用MATLAB从1添加到10的函数。该函数是((1/n)*sin(n*pi*x))其中n1转到10x保留为变量。最终,我希望得到十个正弦(即K1*sin(pi*x)+K2*sin(2*pi*x)+k3*sin(3*pi*x)+...等)的总和,其中k是常数。我真的很感激任何帮助。感谢

编辑:感谢所有帮助我解决问题的人但是在提问时我应该更具体。得到总和后,我想绘制正弦系列。我尝试这样做,但我一直收到一个错误,说“从sym转换为double是不可能的”现在我尝试做一个for循环来获取我的图形。我的代码如下:

 n = 0:10;
while i <= n
    for i = 1:length(n);
        T = (1/n(i))*sin(n(i)*pi*x);
    end
      i = 1+i;
      max = sum(T);
   end

积(X,最大, '黑色')

然而,这不起作用。我不认为这是获得双倍总和的正确方法。如果有人能再次帮助我,我真的很感激。再次感谢

2 个答案:

答案 0 :(得分:0)

根据我的理解,你试图总结多变量表达式。在您的情况下,您有两个变量n和x。您想要将n = 1到10的表达式相加,并将x保持为变量。您可以使用symsum函数在MATLAB中执行此操作,该函数的语法为

symsum(expr,var,a,b)

其中,表达式expr定义了一个序列的术语,相对于符号变量var。变量var的值从a变为b。如果未指定变量,symsum将使用symvar确定的默认变量。如果expr是常量,则默认变量是x。

所以在你的情况下

expr = (1/n*sin(n*pi*x)
var = n
a = 1
b = 10

简单的代码是

>>syms n x
>>F = symsum ((1/sym('n'))*sin(sym('n')*pi*x), n, 1, 10)

回答编辑:MATLAB无法将sys变量转换为double。您可以使用MATLAB工作空间中的变量替换sym变量的值。例如,您可以使用以下命令将上述函数绘制为0到10的范围。

>> x = 0:0.1:10;
>> plot(x, subs(F))

答案 1 :(得分:0)

学习利用MATLAB的矢量性质。

一次性投篮:

>> f = @(n,x) sin((1:n)*pi*x) * (1./(1:n).');
>> f(200, 0.5)
ans =
    7.828982258896381e-001

能够使用向量/矩阵输入f(n,x)评估x

>> f = @(n,x) reshape( sin( bsxfun(@times, (1:n)*pi, x(:)) ) * (1./(1:n).'), size(x) );
>> f(15,rand(2))
ans =
    5.077194963950054e-001    2.660834723822258e-001
    1.416130930552744e+000    1.012255979042172e-001

如果您要使用(1./(1:n).')以外的其他常量,请将[K1 K2 K3 ...].'替换为1/n