`
java-mans
  • 浏览: 11413683 次
文章分类
社区版块
存档分类
最新评论

第13周报告2

 
阅读更多

第13周报告2:
实验目的:学会使用自定义函数解决实际问题
实验内容:定义自定义函数,计算sin和cos的近似值

* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br> * 作<wbr><wbr><wbr> 者:<wbr><wbr><wbr><wbr><wbr><wbr><wbr>雷恒鑫<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br> * 完成日期:<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>2011 年<wbr><wbr>11<wbr><wbr><wbr><wbr> 月<wbr><wbr>16<wbr><wbr><wbr><wbr><wbr> 日<br> * 版本号:<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><br> * 对任务及求解方法的描述部分<br> * 输入描述:无<br> * 问题描述:自定义函数,用泰勒公式实现计算sin和cos的近似值,要求:(1)求sin、cos时,不能用数学库函数(即不得用#include&lt;Cmath&gt;),而是自己编函数实现,为区别,可以分别起名为mysin和mycos;(2)自定义函数要写在main函数之后;(3)自定义函数的效率问题必须考虑;(4)关于精度:当最后一项的绝对值小于0.00001时,累加结束。<br> * 程序输出:sin(π/2)、cos(87°)的值(提示:用泰勒公式在π/2附近误差较大,输出分别为0.911557和-0.26322,而真值分别为1和0.052336,当度数较小时,效果要好一些,请自行对比。)<br> * 问题分析:……<br> * 算法设计:使用泰勒公式<br> * 程序头部的注释结束(此处也删除了斜杠)<br> #include &lt;iostream&gt;<wbr><wbr><br> #include&lt;Cmath&gt;<wbr> //为便于对比结果,main函数中调用了Cmath中的库函数sin和cos<br> using namespace std;<br> const double pi=3.1415926;<br> double mysin(double);<br> double mycos(double);<br> double myabs(double);<wbr><wbr> //程序中需要求精度的绝对值,也用自定义函数完成吧<br> int main( )<br> {<br> cout&lt;&lt;"sin(π/2)的值为"&lt;&lt;mysin(pi/2)&lt;&lt;endl;<br> cout&lt;&lt;"cos(87°)的值为"&lt;&lt;mycos((87.0/180)*pi)&lt;&lt;endl;<br> cout&lt;&lt;"sin(π/2)的更精确的值为"&lt;&lt;sin(pi/2)&lt;&lt;endl;<wbr> //库函数提供的值<br> cout&lt;&lt;"cos(87°)的更精确的值为"&lt;&lt;cos((87.0/180)*pi)&lt;&lt;endl;<br> return 0;<br> }<br> //下面定义mysin函数<br> double mysin (double a)<br> {<br><wbr><wbr><wbr> double b=0,w=1,m=2,n=3,t=0,sum=0,sign=1;<br><wbr>b=a;<br><wbr>t=b/w;<br><wbr>do<br><wbr>{<br><wbr><wbr>sum=sum+sign*t;<br><wbr><wbr>w=w*m*n;<br><wbr><wbr>m=m+2;<br><wbr><wbr>n=n+2;<br><wbr><wbr>b=b*a*a;<br><wbr><wbr>t=b/w;<br><wbr><wbr>sign=-sign;<br><wbr><wbr><br><wbr>}while (t&gt;=0.00001);<br><wbr>return sum;<br> }<br><br><br> //下面定义mycos函数<br><br><wbr> double mycos (double a)<br> {<br><wbr><wbr><wbr><wbr> double b=1, w=1,m=1,n=2,t=0,sum=0,sign=1;<br><wbr>t=b/w;<br><wbr>do<br><wbr>{<br><wbr><wbr>sum=sum+sign*t;<br><wbr><wbr>w=w*m*n;<br><wbr><wbr>m=m+2;<br><wbr><wbr>n=n+2;<br><wbr><wbr>b=b*a*a;<br><wbr><wbr>sign=-sign;<br><wbr>t=b/w;<br><wbr>}while(t&gt;=0.00001);<br><wbr>return sum;<br> }<br> //下面定义myabs函数<br> double myabs(double)<br> {<br><wbr>double t;<br><wbr>if (t&lt;0)<br><wbr><wbr>t=-t;<br><wbr>else<br><wbr><wbr>t=t;<br><wbr><wbr>return t;<br> }<br><br><br> 运行结果:</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>







经验积累:
1. 做科学计算时,需要对所用方法的数学性质有所了解,计算误差要引起注意
2.
3.

上机感言:我知道了调用函数前最好应把声明放在主函数之前;


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics