我不知道该去哪里。我认为我有正确的选择,但我不明白。
它使循环永远运行,我不知道为什么。
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循环中更改方程式,但不知道为什么它会给我带来符号错误。
答案 0 :(得分:0)
发布的代码存在几个问题:
r = r + ...语句中的括号未对齐
应该使用exp(b i)和exp(b (i + 1))代替exp(i)和exp(i + 1)给定的间距。
您的“ v”值(应为确切答案)应等于e-1,即1.71828。当您试图收敛到5个小数位内的精确解时,使用大约1.7将会非常有问题。
您的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