c语言利用公式求sin(x)的近似值,用下列公式计算sin(x)的近似值
e>0 )的值,以一个空格分隔。
【输出形式】
输出迭代次数n和最后一次计算的sin(x)的值(以一个空格分隔,并且输出sin(x)时要求小数点后保留9位有效数字)。
【样例输入】
1.23 0.0000001
【样例输出】
7 0.942488802
【样例说明】
输入的x为1.23,精度值e为0.0000001。当n为5时,利用上述公式计算sin(x)的值为0.942489044,n为6时计算的结果为0.942488800,两结果之差的绝对值约为0.000000244,大于要求的精度值0.0000001,故需要继续迭代计算。当n为7时计算的结果为0.942488802,与n为6的计算结果之差的绝对值约为0.000000002,小于要求的精度值,所以最小迭代次数应为7,最后一次计算的sin(x)的值为0.942488802(小数点后保留9位有效数字)。
注意:
(1) 为保证计算精度,请使用double数据类型保存计算数据。
(2) 应至少迭代两次,即:n>=2。
解题思路与易错分析:
解题思路:可以很显然的看出这是一个有关迭代的问题(看着简单,其实很有坑),首先排除的就是递归,这玩意肯定会溢出,然后确定为迭代(老老实实的循环吧)
题目已经给出了通项公式,
注意:第一个易错点,一个选择用递推公式,a(n) = a(n-1)*x*x*(-1)/(2*n+1)/(2*n-1); 一个是用上面的公式(但会溢出,坑吧)
所以只能用第一种方法用递推公式
第二易错点:每项都会变号,也就是乘以一个-1,这里可能就会用pow(-1,x)来找规律以为很高大上(我就是其中的一个人)但是忽略一个问题你上面用的递推公式,
为用pow(-1,x)是判断的是这一项的正负号但你又乘上前一项的符号(坑吧)
其他这个题也没什么难点:
下面附上我的代码:
#include #include #include using namespace std;
//a(1) = x;
//a(n) = a(n-1)*x*x*(-1)/(2*n+1)/(2*n-1);
int main()
{
double x,e,value,oldvalue,total,oldtotal;
cin >> x >> e;
oldtotal = total = oldvalue = x;
int counter = 1;
while(true)
{
value = oldvalue*x*x*(-1)/(2*counter)/(2*counter+1);
total += value;
counter++;
if(counter > 1)
{
if(fabs(fabs(total)-fabs(oldtotal))<=e)
{
break;
}
}
oldtotal = total;
oldvalue = value;
}
cout << counter
}
编程小白,有错请指出!!
c语言利用公式求sin(x)的近似值,用下列公式计算sin(x)的近似值相关推荐
- c语言利用遍历求树高的程序,用C语言实现二叉树的遍历极其应用
用C语言实现二叉树的遍历极其应用 [1][摘要]:<数据结构>是计算机系学生的一门专业技术基础课程,计算机科学各领域及有关的应用软件都要用到各种数据结构.C语言有较丰富的数据类型.运算符以 ...
- python语言公式求圆周率_通过Python实现圆周率的计算(公式方法和蒙特卡罗方法)...
1.通过公式计算圆周率 当k正无穷 π=[1/16^k*(4/(8*k+1)-2/(8*k+4)- 1/(8*k+5)-1/(8*k+6))] 实现如下 #cal pi = 0 N = 100 for ...
- HTML语言利用函数求中位数,javascript-使用OnClick()计算用户放入HTML表中的数字的平均值...
当前在识别我的HTML / JavaScript代码中的错误时遇到问题,这阻止了我的JavaScript函数计算由表用户输入的五个数字的平均值. 将数字输入所需的单元格后,单击"计算成绩&q ...
- c语言利用fun求最小值,c语言:请编写函数fun(),他的功能是:求f(0)到f(50)的最小值,已知:f(0)=f(1)=1,f(2)=0,f...
#include #include int f(int n) { if (n == 0 || n == 1) { return 1; } if (n == 2) { return 0; } retur ...
- c语言斐波那契数列前20项和,,c语言利用数组求斐波那契数列的前20项
推荐回答 一.斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711 ...
- c语言编程序按下列公式计算e的值,编写程序,利用公式 ,求出e的近似值
已知一个三角形中三条边的长度分别为a,b和c,编写程序利用公式求出三角形的面积,其中S=(a+b+c)/2.要求边长a. usingSystem;usingSystem.Collections.Gen ...
- c语言中求大于的函数,c语言编写函数,求一组数中大于平均值的数的个数.
C语言编写程序 给定一组数,求大于0,等于0,小于0的数据个数 #define N 10 main(){int num1=0,num2=0,num3=0,i;for(i=0;i 一道C语言题目:求一组 ...
- Java题-利用递归方法求5!
题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! 方法一: import java.util.Scanner; public class Ex22 {public static v ...
- 利用递归方法求10!
题目:利用递归方法求10!. 程序分析:递归公式:fn=fn_1*4! public class Prog22{public static void main(String[] args){Syste ...
- Python练习——利用递归方法求!5(递归函数)
Python 练习实例26 Python 100例 Python 100例 题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! def fact(j):sum=0if j==0:su ...
最新文章
- Yarn已过时!Kubeflow实现机器学习调度平台才是未来
- Oracle日期处理
- Git使用学习笔记 (一)
- 虚拟机增强工具的安装
- 3.3 超参数训练实战:Pandas vs. Caviar-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- C# json解析字符串总是多出双引号_Python小白必备知识:Python字符串详解
- 有关WriteableBitmap和BitmapImage之间的相互转换
- yii mysql_Yii2框架操作数据库的方法分析【以mysql为例】
- [剑指offer]面试题第[54]题[JAVA][二叉搜索树的第k大节点][递归][迭代]
- [HDU] 3491 Thieves
- mysql 分区表 限制_Mysql分区表使用的一些限制和需要注意的地方-阿里云开发者社区...
- Hyper-V提供创建三种类型的虚拟网络
- tensorflow 变量共享
- 电驴搜索服务器正在连接,电驴 电驴连接不上服务器-完美教程资讯
- android imageloader 路径,Android中的Universal-Image-Loader的使用
- 甲骨文大数据利器:内存数据库和一体机
- 芯盾时代人工智能全渠道业务安全防护方案:提供“业务+平台+建模服务”为核心的多场景反欺诈服务| 百万人学AI评选
- 淘宝/天猫获得店铺的所有商品、店铺列表接口API返回值说明
- 如何用人机料法环来分析产品质量?
- 黑金花大理石_请问黑金花大理石是什么样的,有哪些特点?