【问题标题】:Matlab: iterating over a vector to give taylor expansion for each elementMatlab:迭代向量以给出每个元素的泰勒展开
【发布时间】:2017-02-08 13:06:09
【问题描述】:

我正在尝试使用 2 个嵌套的 for 循环遍历向量 y,以返回向量中每个数字的泰勒展开式总和的列表。

一直报错

在赋值 A(:) = B 中,A 和 B 中的元素个数必须相同。

代码:

n = 6 
y = zeros(1,n);
x = [0.785398,0.392699,0.19635,0.098175];

for i = (1:4)

    for i = 0:n

        y(i+1) = (-1).^i*x.^(2*i+1)/factorial(2*i+1); 

    end;

    SINx = sum(y)

end

【问题讨论】:

  • 您对内部和外部循环使用相同的变量i。是错字吗?
  • 我真的不明白你想说什么。

标签: matlab loops iteration


【解决方案1】:

问题是你试图在 y 中填充一个 n+1 的数字,而 y 的长度仅为 n。

换句话说: length(y) = 6 你尝试填写y(6+1)

还请尽量避免使用相同的计数器进行 2 次循环,因此请考虑使用 j 更改第二次循环计数器

【讨论】:

    【解决方案2】:

    我不能说这会在每个点上给出泰勒展开式,但它可以更正您的代码

    n = 6 
    x = [0.785398, 0.392699, 0.19635, 0.098175];
    y = zeros(n, size(x,2));
    
    for j = 1:size(x,2)
    
        for i = 0:n-1
    
            y(i+1, :) = ((-1)^i) * x.^(2*i+1) ./ factorial(2*i+1); 
    
        end
    
        SINx = sum(y(i+1, :))
    
    end
    

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 2020-04-10
      • 2011-12-06
      • 2012-03-20
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 2017-06-14
      相关资源
      最近更新 更多