首页 > 解决方案 > 如何编写运行分区的这个方程?

问题描述

我不知道该去哪里。我想我有正确的东西,但我不明白。

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 循环中的方程式,但我不知道为什么它会给我符号错误。

标签: matlab

解决方案


贴出的代码有几个问题:

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

  2. 代替 exp(i) 和 exp(i+1),您应该使用 exp(b i) 和 exp(b (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

推荐阅读