一系列功能

时间:2018-01-05 17:03:57

标签: matlab series

我解决了一系列功能问题。

如何解决ΣF(k)* F(k-1)等系列?

实际上我想在Matlab中解决以下系列

image of the function

它只依赖于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);

所以我错了,“我该如何解决这类系列?”

1 个答案:

答案 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