查看: 5214|回复: 17|关注: 2

有奖问答 | 这些关于数值计算的问题,你能解决吗?

[复制链接]

MATLAB 基础讨论
版块优秀回答者

211

主题

1109

帖子

35

最佳答案
  • 关注者: 800
发表于 2017-12-27 18:12:59 | 显示全部楼层 |阅读模式
话题讨论:

1. 圆周率π是一个老生常谈的话题,它的计算方法也是一些数学学者毕生所追求的,试查找相关文献,并利用 MATLAB 编程计算圆周率π的近似值。

2. 在小学时候我们就知道1+2+3+...+n=n(n+1)/2,现在要求利用差分的性质计算1至n的和,进一步地,求 1^k+2
^k+3^k+...+n^k 的表达式。

3. 按揭贷款在当下是很普遍的现象,小到淘宝购物,大到买车买房,都有按揭的身影,那么在软件直接给出每月的还款额后,你是否对贷款利率怀有疑问呢?或者给定贷款利率后,直接给出月还款额,你是否想知道每月的还款额是怎么得到的呢?试分析几种常见的按揭贷款方式,并自行编写相应的程序验证以上疑问。

评选要求:
1. 用户从以上3个问题中任选1-3个问题并使用 MATLAB 解决。
2. 完成后,在本帖中回复并上传 MATLAB 代码(附件名请使用格式“题目编码-论坛用户名”,例如“1-ilovematlab”,多个问题答案请分别上传),由资深用户——《 MATLAB数值计算实战》作者,选出最佳解决方案。
3. 每个问题将会产生两位优胜用户,分别为最佳方案最佳思路。每道题目的优胜用户可以重复,因此解决的问题越多,获奖的比例就越大哟~

最佳答案的提供者将赢取论坛准备的精美礼品!

参与时间:
2018年1月1日 - 2018年1月31日

优胜用户:


                               
登录/注册后可看大图

所有获奖用户将免费获得机械工业出版社出版的《MATLAB数值计算实战》书籍一本~

参与活动,以 MATLAB 会友,其乐无穷!

= = = = = = = =
如果你有兴趣,在MATLAB中解决问题来提高你的编程能力,点击进入Cody里打怪升级,和全球的高手较量~
Cody 5周年挑战正在进行中,加入挑战赢取五周年纪念徽章!






论坛优秀回答者

专家

2490 麦片

财富积分


20003000


1

主题

2781

帖子

561

最佳答案
  • 关注者: 104
发表于 2018-1-9 17:36:54 | 显示全部楼层
本帖最后由 maple1314168 于 2018-1-10 09:47 编辑

1.1、用拉马努金公式快速递代pi,一步可以有8位小数准确度
1.2  Chudnovsky_algorithm  一步可以有15位小数准确度(目前最长pi好像也是这个方法)

1-maple1314168.rar

541 Bytes, 下载次数: 23

拉马努金公式

1-maple1314168.rar

565 Bytes, 下载次数: 11

Chudnovsky

论坛优秀回答者

专家

2490 麦片

财富积分


20003000


1

主题

2781

帖子

561

最佳答案
  • 关注者: 104
发表于 2018-1-9 17:43:14 | 显示全部楼层
本帖最后由 maple1314168 于 2018-1-10 14:23 编辑

2、使用牛顿的二项式定理,计算幂级数的和的公式。

matlab 的symsum

k=10;
syms x n
symsum(x^k,x,1,n)

2-maple1314168.rar

545 Bytes, 下载次数: 13

新手

13 麦片

财富积分


050


4

主题

51

帖子

1

最佳答案
发表于 2018-1-9 18:49:19 | 显示全部楼层
1、使用Chudnovsky公式的基本形式:pi/4=8*atan(1/10)-atan(1758719/147153121),可以得到如下求计算pi的代码:
pi=vpa(4*(8*atan(1/10)-atan(1758719/147153121)),N)
其中,N为要获得的pi值的位数。
例:取N为50时,所获得pi值为3.1415926535897932384626433832795028841971693993751

论坛优秀回答者

专家

2490 麦片

财富积分


20003000


1

主题

2781

帖子

561

最佳答案
  • 关注者: 104
发表于 2018-1-9 19:10:02 | 显示全部楼层
本帖最后由 maple1314168 于 2018-1-9 19:33 编辑
最是清风伴我眠 发表于 2018-1-9 18:49
1、使用Chudnovsky公式的基本形式:pi/4=8*atan(1/10)-atan(1758719/147153121),可以得到如下求计算pi的代 ...

可以用三角函数的话,就很多咯!三角函数本来就对照pi的。
N=100;
vpa(4*atan(1),N)
vpa(6*asin(1/2),N)
........
atan(sym(1))
ans =pi/4       等于直接用pi  vpa(pi,N)

新手

7 麦片

财富积分


050


1

主题

5

帖子

0

最佳答案
发表于 2018-1-9 19:46:39 | 显示全部楼层

利用正多边形计算圆周率:代码如下


function p=polyGon(n,r)
t=linspace(0,2*pi,n+1);
x=cos(t)*r;
y=sin(t)*r;
plot(x,y);
points=[x',y'];

distance=zeros(n,1);
if n>=2
    for i=2:size(points,1)
        P=points(i,-points(i-1,;
        distance(i-1)=sqrt(sum(P.^2));


    end
end

Distance=sum(distance);
p=Distance/(2*r);


end




论坛优秀回答者

8

主题

1357

帖子

236

最佳答案
  • 关注者: 91
发表于 2018-1-9 23:48:28 | 显示全部楼层
1-悟得.zip (263 Bytes, 下载次数: 1)

论坛优秀回答者

8

主题

1357

帖子

236

最佳答案
  • 关注者: 91
发表于 2018-1-10 10:29:10 | 显示全部楼层
悟得 发表于 2018-1-9 23:48
已准备争夺最烂编程奖。

使用方法:蒙特卡罗,原始人方法。

1-悟得.zip (289 Bytes, 下载次数: 1)

论坛优秀回答者

8

主题

1357

帖子

236

最佳答案
  • 关注者: 91
发表于 2018-1-10 20:57:01 | 显示全部楼层
之前回答了一个问题,感觉改一下就用得到……
www.ilovematlab.cn/forum.php?mod=viewthread&tid=534878

2-悟得.zip (669 Bytes, 下载次数: 2)

论坛优秀回答者

8

主题

1357

帖子

236

最佳答案
  • 关注者: 91
发表于 2018-1-10 21:27:56 | 显示全部楼层
对于高精度pi……
见:h啊ttp://ww啊w.numberworld.org/digits/Pi/

计算方法,据说y-cruncher使用的是Chudnovsky Formula和Ramanujan's Formula
Chudnovsky定义及算法实现:ht啊tps://ww啊w.craig-wood.com/nick/articles/pi-chudnovsky/
Ramanujan自行wiki

还可以利用Bailey–Borwein–Plouffe formula求出pi的第n位而不求前n-1位。自行wiki。

有兴趣的学习一下吧,对自己不会脱发有信心的可以做深入研究…………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表