| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 530 人关注过本帖
标题:小小宅问matlab
只看楼主 加入收藏
llycrisa
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-10-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
小小宅问matlab
废话不说 上题
由π^2/6=1+1/4+1/9+......+1/(n^2),求π的近似值。当n分别取100,1000,10000时,结果是多少?(要求:分别用循环结构和向量运算来实现)
这题吧 我是这样写的
sum=0;
n=input('请输入n:')
for i=1:n
sum=sum+1/i^2;
end
sqrt(sum*6)


可是我觉得可以浓缩成这样
syms i
p=sqrt(6*symsum(1/i^2,1,100))
可是出来的结果老长老长了  长也就罢了  可是明显和pi差太远了啊
向各位大虾求教  小女在此拜谢
搜索更多相关主题的帖子: matlab 
2012-11-11 17:50
xian02091052
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-10-22
收藏
得分:10 
我帮你查了下,得到的解释是symsum()函数的结果是精确值而非近似解,你要得到近似解,可以加一句double(p).我试了下,n=1000时结果近似为3.1406。我是初学者,有什么不对地方请见谅~~
2012-11-13 10:47
xiangbei90
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:109
注 册:2012-11-13
收藏
得分:10 
会不会是是sum的问题吧,各种求和的sum函数如果直接在外加一个sqrt好像结果都不对啊。我之前做了一个求方差的公式也是的,
  n=length(x);
  y=sum(x)/n  
  w=sqrt(sum(x-y)^2/(n-1))
这样就不行,
后来我就用先求和,在开方算的。
for i=1:n;
   a=a+(x(i)-y )^2;
end
   w=sqrt(a/(n-1))

不过还是没明白为什么前一种方法不行。大家有没有什么看法呀
2012-11-14 19:04
xian02091052
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-10-22
收藏
得分:0 
回复 3楼 xiangbei90
你的前一种算法不行是因为编的有问题,并不是sum和sqrt在一块的问题,我稍微改了下。
变成   w=sqrt(sum((x-y).^2)/(n-1));
跟你差别在于,要先求(x-y)各元素的平方,再sum求和,你原先的是先求sum(x-y),再平方,就不对了;
新手刚学,希望没有说错,误导你~~
2012-11-15 19:19
xiangbei90
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:109
注 册:2012-11-13
收藏
得分:0 
回复 4楼 xian02091052
你好,谢谢你能回答我的问题。
我想说说看,改动的两个地方,
一个是加了个括号,这个按你的意思,应该是sum 的计算 优先于平方的计算,所以加一个括号,是吗?
二,对于平方或者立方的符号  ^2 与 .^2的区别,是加了点号的是针对数组的计算,这就是我的之前没注意到的地方了。
sum 是累加,它的计算顺序应该是在 平方之后的。所以,不需要括号也是正确的,也就是将 .^2 改好就对了。结果我也验证了这一点。
谢谢你的回答。
2012-11-19 14:16
快速回复:小小宅问matlab
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014402 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved