如何编写运行分区的方程式?

时间:2019-07-02 20:16:05

标签: matlab

我不知道该去哪里。我认为我有正确的选择,但我不明白。

https://imgur.com/a/V6gdDdr

它使循环永远运行,我不知道为什么。

n=9; 
r =0; 
p = 0;
syms x 

v=1.7;

while abs(v-r) > 10^(-5)

    n=n+1;
    r = 0;
    a = 0;
    b= 1/n;

    for i = 1:n

    r = r + exp(((i+1)+exp(i))/2)*(b-a)
    end


    ['done']
end

输出应该是85。但是我得到了几千。我曾尝试在for循环中更改方程式,但不知道为什么它会给我带来符号错误。

1 个答案:

答案 0 :(得分:0)

发布的代码存在几个问题:

  1. r = r + ...语句中的括号未对齐

  2. 应该使用exp(b i)和exp(b (i + 1))代替exp(i)和exp(i + 1)给定的间距。

  3. 您的“ v”值(应为确切答案)应等于e-1,即1.71828。当您试图收敛到5个小数位内的精确解时,使用大约1.7将会非常有问题。

  4. 您的for循环应该从0到n-1,这样您就不会累加超出整数范围的任何值。

n=9; 
r =0; 
p = 0;
v=e-1;

while abs(v-r) > 10^(-5)

    n=n+1;
    r = 0;
    a = 0;
    b= 1/n;

    for i = 0:n-1
      r = r + ((exp(b*(i+1))+exp(b*i))/2)*(b-a);
    end
end