关于#matlab#的问题:matlab求函数的累积(x^3+x,从1乘到100)

怎么用matlab求函数的累积?例如:y=x^3+x, 求y从1乘到100的值。

理论上这部分代码这样写就好:

x=1:100;
y=prod(x.^3+x);
disp(y)

但我们观察一下命令行输出,会显示结果为Inf,这是因为matlab里存储的数大小上限大约是10^310左右
因此为了解决这个问题我们想到了两个方法:
方法一:
将结果对数化,并显示为e的指数形式:

x=1:100;
y=sum(log(x.^3+x));
disp(['y=exp(',num2str(y),')'])

输出结果为:
y=exp(1092.51)

方法二:
计算y=(x^3+x)/100的结果,并将结果x10^200后显示:

x=1:100;
y=prod((x.^3+x)./100);
n10=floor(log(y)/log(10)); % 计算y是多少位数
y=y/10^n10;
disp(['y=',num2str(y),'×10^',num2str(n10+2*100)]);

输出结果为:
y=2.9585×10^474