求助!!用MATLAB帮我做一下下面第三题,怎么编写?

求助!!用MATLAB帮我做一下下面第三题,怎么编写?,第1张

方法1,调用可以计算阶乘的几个函数factorial(阶乘),gamma(伽马函数),或者prod(连乘)。都是一句就能算出这个问题的答案。

sum(factorial(1:20));或者sum(gamma(2:21));第三个要多写一两句。

方法2自己写个算阶乘的子函数然后用for循环调用一下。

方法3,规规矩矩写,这个问题很简单弄个矩阵把1到20的阶乘存起来sum一下

fac=ones(1,20);

for n=2:20

fac(n)=fac(n-1)n;

end

ans=sum(fac);

楼上 @真greatdju 提供的做法

sum(cumprod(sym(1:100)))

是可行的,但需要2013b以上的版本(符号运算的cumsum和cumprod函数在该版本引入)。

对于更早的版本,可以使用求符号和的函数symsum来做:

>> symsum(sym('n!'),1,100) 

ans = 

94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313

MATLAB如何计算双阶乘然后求和,首先建立双阶乘函数dfac( x),然后用循环语句求和。

function y= dfac( x)

%双阶乘函数  m!!

y=1;

for i=x:-2:1

y=yi;

end

end

循环语句求和格式

for x=1:5

y(x)=dfac( x);

end

sum(y)

a=input('请输入一个数:');

while a<0 || fix(a)~=a

disp('您输入的数不是正整数')

a=input('请重新输入:');

end

a

disp('a!=')

disp(factorial(a))

(运行后:)

请输入一个数:-20

您输入的数不是正整数

请重新输入:-12

您输入的数不是正整数

请重新输入:23

您输入的数不是正整数

请重新输入:-43

您输入的数不是正整数

请重新输入:12

a =

12

a!=

479001600

运用matlab求满足n的阶乘大于10100的n的最小值,该问题可以考虑来解决。

解决方法:

1、软件自带的阶乘函数factorial(),计算n的阶乘

2、确定while循环语句的条件,n!<10100

3、计数累加,n=n+1

4、使用while循环语句,逐步计算n!

计算结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12153715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存