我解决了一系列功能问题。
如何解决ΣF(k)* F(k-1)等系列?
实际上我想在Matlab中解决以下系列
它只依赖于K变量。
我尝试将一个函数定义为下面的文件并将其保存为.m文件(用于测试我通过忽略B来简化它)
function out = teta(x)
if x==9./5
out=(25./(36*1));
else
out=(10./(9.*1.*x.*(x-1))).*(x-9./5).*teta(x-9./5);
end
并在主文件中写道:
sum(teta(18/5:9/5:72/5))
因为我想要从k = 18/5到72/5
的系列之和当我运行它时,我得到了这些错误:
没有足够的输入参数。
teta错误(第2行)
如果x == 9. / 5
和
内存不足。可能的原因是程序内的无限递归。 teta中的错误(第5行)
out=(10./(9*1.*x.*(x-1))).*(x-9./5).*teta(x-9./5);
所以我错了,“我该如何解决这类系列?”
答案 0 :(得分:0)
首先,你不应该对浮动双精度数进行相等测试,而是将差值与一个小的阈值进行比较。
不使用矢量化方法(如果您愿意,可以随意矢量化),以下工作:
function out = teta(x)
if abs(x-9/5)<1e-3
out=25/36;
else
out=(10/(9*x*(x-1)))*(x-9/5)*teta(x-9/5);
end
然后使用它:
kk = 18/5:9/5:72/5;
teta_vec = zeros(size(kk));
for k=1:length(kk)
teta_vec(k) = teta(kk(k));
end
给了我:
>> sum(teta_vec)
ans = 0.17714