CAD教程 行业资讯 3D模型下载 Pro/E教程 CAD书店 软件下载 联系我们
技术资料 CAD招聘 发布招聘 CAD问答 设计竞赛 CAD认证 北京CAD培训
视频教程 PS教程 CAD图纸 图书推荐 Solidworks教程 CAD培训 CAD软件商

 最新视频教程Pro/ENGINEER Wildfire2.0 工业设计实例视频教程 (全套免费在线学习)   AutoCAD视频教程每日更新
 
首页 > CAD在线问答 > matlab

高分悬赏!!!MATLAB高手请进。。。

2010-11-10 51自学网



这是一个关于精度的问题,以下是简短程序。很简单,就是计算一个求和,理论上是归一的,而且用fortran等其他软件算,当n=300时这个值已达到0.99××,而用MATLAB做却只有0.97××。我想请问有什么技巧可提高它的精度使其达到0.99××???m=2.5;nmax=300;sum=0;for n=1:nmax t1=(tanh(m))^(2*n); t2=1/(cosh(m))^2; T=t1*t2; sum=sum+T;endy=sum
非常感谢“有空飘过的”的解答!这里我只是举个小例子来说明问题,其实程序本身很大,所以最好是用MATLAB编,其他的我也不会。。。如果你方便的话,能不能帮我写一下用128精度计算的函数,不胜感激。。。

不论用matlab, java, c, c++, n=300时算出来的结果都是0.97310803806268这几种语言的都是采用IEEE-754的64位双精度浮点数的,精度是约15位十进制数Fortran默认的应该也是双精度的浮点数,不过有些版本也支持128位精度的浮点数其他语言一般不支持128位精度,如果你一定要,要下载附加的package,C/C++可以用MIRACL http://www.shamus.ie/GMP http://gmplib.org/matlab还没有见过,如果只是要用你上面的程序,其实只需要用到加减乘除和exp(),自己写一个也不算难 补充:我说的自己写一个的意思是自己写一个使用128位精度计算的加法、减法、乘法、除法、指数函数。MIRACL, GMP就是这样用128精度计算的C/C++函数库,MATLAB没有见过这样的函数库,可能需要自己写。既然你用Fortran可以支持128位精度计算,那最方便的就是用Fortran直接计算,或者使用Matlab对Fortran的接口,这个话题太大了,这里讲不来 补充二:http://www.mathworks.com/matlabcentral/fileexchange/22725这个是matlab里的高精度计算toolbox,精度可以任意调整我使用100位十进制的精度计算,结果是y{1} = +.97310803806267328229195014415098271682317000718648226587062665151441784458895e0+0i和用double精度计算没有差别,请检查你用fortran计算的程序是否有错



 

 

matlab 心得体会
matlab warning
我来回答 共有条 回答
用户名: 密码:
验证码: 匿名发表
| AutoCAD | Pro/E | UG | 3Dmax | catia | solidworks | maya | photoshop | 模具设计 | 有限元 | matlab | 计算机图形学 | 室内设计 |