| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1462 人关注过本帖
标题:做算y=sinx的程序,不能用库函数
只看楼主 加入收藏
yanlamkong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-2-22
收藏
得分:0 
太感谢各位了,我真的很感动,给我以后的学习有了很大的动力(这不是灌水!),
我试过了cordier做得可以 5楼写得很详细 也比较易懂 但不知为什么运行得到却运算不到噢

2006-03-02 23:24
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

不感谢 领路的


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-03 00:27
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 

我来给一个更好的吧!

//==============================================================
// 程序:实现sin的功能(模拟sin函数)
// 公式:sin(x)=x-x3/3!+x5/5!-...(-1)n-1*x2n-1/(2n-1)!+...(0<x<∞,n=1,2,...)
// 作者:seeker
// 误差极小。
//===============================================================
#include <stdio.h>
#include <math.h>
#include <conio.h>

#define Pi 3.14159265358979323846 //定义Pi值
//--------------------------------------------
void main()
{
float x; //角度
double sum; //计算结果
double temp; //保存原始x值,仅用来提示和对比计算.
double a; //x的幂数
double temp1; //分子
double temp2; //分母,即a的阶乘
double TrueValue; //真实值
const double e=1.0e-15; //精度

while(1) //不断循环
{
printf("输入x的值(角度):");
scanf("%f",&x);
temp=x;
x=x*Pi/180; //将角度转为弧度
temp1=x; //赋初值
temp2=a=1;
sum=x;
do //计算模拟值
{
a=a+2; //幂是奇数,所以+2
temp2=a*(a-1)*temp2; //分母前一项跟后一项的关系
temp1=temp1*(-x*x); //分子前一项跟后一项的关系
sum=sum + temp1/temp2; //累加
}while(fabs(temp1/temp2)>e); //循环条件

TrueValue=sin(x);//计算真实值
printf("近似值:mysin(%.2f)=%.20f\n",temp,sum);
printf("准确值:sin(%.2f)=%.20f\n",temp,TrueValue);
printf("误差:%.20f\n\n",sum-TrueValue);
}
}

[此贴子已经被作者于2006-3-3 18:55:41编辑过]


我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2006-03-03 18:49
快速回复:做算y=sinx的程序,不能用库函数
数据加载中...
 
   



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

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