我需要帮助才能使用MATLAB从1
添加到10
的函数。该函数是((1/n)*sin(n*pi*x)
)其中n
从1
转到10
,x
保留为变量。最终,我希望得到十个正弦(即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,最大, '黑色')
然而,这不起作用。我不认为这是获得双倍总和的正确方法。如果有人能再次帮助我,我真的很感激。再次感谢
答案 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
。