利用matlab计算含有阶乘的求和运算问题

syms k;
n=1;
for N=0:10:60
R=200;
r=170;
x=N/pi/R^2;
E(n)=1/(exp(x*pi*(R^2-r^2)/4)-1)*symsum((x*pi*(R^2-r^2)/4)^k*k*(R^(k+1)-r^(k+1))/factorial(k+1)/R^k,k,1,inf);
n=n+1;
end
plot(E,'-k')
Caught "std::exception" Exception message is:
Message Catalog was not loaded from the file. Please check file location, format or contents
请问我编写的程序哪里有问题?

1、未见到你贴出的错误。

2、函数factorial用数值方法计算阶乘,不适用于符号变量。用sym('(k+1)!')代替factorial(k+1)

3、无法求出显式的E,不能直接绘图,应该用double进行转换。

4、不同的符号运算内核可能得到的结果有差别。以我用的6.5版(Maple内核)和2008b(MuPad内核)为例,有以下两点不同:

(1)N=0时,6.5版得到的结果是0,2008b得到的是NaN;

(2)开始的时候我把误写为,用两个不同版本得到后面的几个点大致相同,但改正为之后,发现在不同版本中有比较明显的差异,如下图所示:

 

6.5版的结果:

2008b版的结果:

究竟那个结果是正确的,我也说不准,但相对而言更相信Maple内核的结果。

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab阶乘求和?!?!!
matlab 1到20阶乘求和,即 S=1!+2!+。。。+20!这个问题可以用for循环语句和factorial阶乘函数来解决。实现方法:S=0;for n=1:20,S=S+factorial(n);end,fprintf('S= %22.2f\\n',S);

利用matlab计算含有阶乘的求和运算问题
1、未见到你贴出的错误。2、函数factorial用数值方法计算阶乘,不适用于符号变量。用sym('(k+1)!')代替factorial(k+1)。3、无法求出显式的E,不能直接绘图,应该用double进行转换。4、不同的符号运算内核可能得到的结果有差别。以我用的6.5版(Maple内核)和2008b(MuPad内核)为例,有以下两点...

matlab编程?
带阶乘的求和的问题,我们这样编程:1、使用阶乘函数 factorial(n),求n!2、使用求和函数 symsum,求和 具体编程代码如下 >> syms n %声明变量 >> S=symsum(1\/factorial(n),n,1,20) %求和 >> S=double(S) %转换成双精度数值 ...

如何用matlab计算1到10阶的和?
matlab求1-10的阶乘的函数源码如下:function p = factorial()p=1;for a=1:10%设置要求的阶乘 for i=1:a%循环遍历从1到a p=p*i;%遍历相乘 end;\/\/函数结束 p%输出结果 p=1;%p还原其初始值 end end 程序运行结果如下:

matlab如何调用阶乘函数求阶乘的和
MATLAB求阶乘函数为:factorial(),直接调用即可:n=input('请输入一个数:'); % 最大的数sum(factorial(1:n))

matlab阶乘求和问题
matlab软件没有求阶乘的函数,所以必须自己来编一个函数。函数是输入输出的关系,所以建立一个函数文档“factorial.m”专门求阶乘。如下:function f=factorial(N)%建立输入数据N求N的阶乘 f=1;for i=1:N f=f*i;end end 然后再建一个主函数程序“MAIN.m”:clc N=10;%求1-10的阶乘的和 s=...

matlab阶乘和程序
for i=1:x s=s*i;jiechenghe=jiechenghe+s;end 应用:求n!的位数 可以将n!表示成10的次幂,即n!=10^M(10的M次方)则不小于M的最小整数就是 n!的位数,对该式两边取对数,有 M =log10^n!即:M = log10^1+log10^2+log10^3...+log10^n。循环求和,就能算得M值,该M是n!的...

请问怎么用matlab求1到100的阶乘求和
sum(cumprod(sym(1:100)))是可行的,但需要2013b以上的版本(符号运算的cumsum和cumprod函数在该版本引入)。对于更早的版本,可以使用求符号和的函数symsum来做:>> symsum(sym('n!'),1,100) ans =

MATLAB中求阶乘的和有问题,怎么只有阶乘没有和?
9不就是最后的和吗,1+2*1+3*2*1=9 你如果只想显示最后的累加和结果9,请在s=s+factor(i)后加上分号;满意请采纳,谢谢!

急求:编写一个matlab文件,求1到n的阶乘之和。要求:输入一个数n,调用...
编写一个matlab文件,求1到n的阶乘之和。其代码编写的目的,就是学会自定义函数的编写,循环语句的使用。实现代码如下:function ex4()x=input('请输入正整数n:')s=0;for n=1:x y=exfun(n);s=s+y;end s end function y=exfun(x)y=1;for j=1:x y=y*j;end end 运行效果 ...

相似回答