直接进入正题,代码包含了注释了已经。
题目标号蕴含在注释里面了。书籍为MATLAB程序设计与应用(第3版),刘卫国主编的。
% y = 1/3 + 1/3*1/3^3+...+1/2n-1*1/3^2n-1
% 求y的近似值。当n分别取100、1000、10000时,结果是多少
% 请使用MATLAB求得y的近似值,并使用双重for循环一步实现n为100、1000、10000时的结果
format long % 以15位的精度显示数据,实际上会发现y数据还是一样的
y = 0; % 初始化y的近似值
t = 1e-10; % 设置一个精度值
% 求y的近似值
k = 1;
term = 1;
while abs(term) > t
term = (1 / (2 * k - 1)) * (1 / 3^(2 * k - 1));
y = y + term;
k = k + 1;
end
fprintf('当 n 趋近无穷时,y 的近似值为: %.10f\n', y);
% 求ln2 / 2 来验证是否相近
fprintf('ln(2)/2的值为%.10f,可用于对比y的近似值\n',log(2)/2);
n_values = [100, 1000, 10000]; % 不同的n值
for n = n_values
y = 0; % 初始化y的近似值
% 求不同n时的y值
for k = 1:n
y = y + (1 / (2 * k - 1)) * (1 / 3^(2 * k - 1));
end
% 输出每个n时的y值
fprintf('当 n = %d 时,y 的近似值为: %.10f\n', n, y);
end
觉得参考还不错的话点个赞,然后好好学习、、