首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

打印sinx曲线//0.046代表啥意思?该如何解决

2013-07-27 
打印sinx曲线//0.046代表啥意思?????#include stdio.h#include math.h#define PI 3.1415926int main(v

打印sinx曲线//0.046代表啥意思?????




#include <stdio.h>
#include <math.h>

#define PI 3.1415926

int main(void)
{
        double x,y;

        for(y = -1; y <= 1; y = y + 0.1)
        {
                for(x = -PI; x <= PI; x = x + 0.1)
                {
                        if(fabs(y - sin(x)) <= 0.046)
                                printf("*");
                        else
                                printf(" ");
                }
                printf("\n");
        }

        return 0;
}


[解决办法]
引用:
大哥 你的意思是sin(x) 求出的值是对应y轴上的值。但是,有误差 不是很明白;怎么会有误差呢 
Quote: 引用:

Quote: 引用:

这程序 与 数学 我对不上号呀?  sin(x) = 对边/斜边  c语言的sin(x)函数是泰勒展开式 算出来的。
//y 代表 啥意思?????

// 是求的 x轴的 上的 点的sin值  怎么还有y - sin(x) ????直接使用sin(x) 不行呢。。。。
 
Quote: 引用:


一个比较小的值, 在一定精度范围内比较 y == sin(x)
当然, 这个值的选择还是有点讲究的, y 的步长是 0.1 , 一步的区域就应该定义为  y - 0.05 ~ y + 0.05 这个范围,  fabs(y - sin(x)) <= 0.046 检测的实际上是  sin(x) 是否在 y - 0.046 ~ y + 0.046 这个范围内.


y 代表纵轴. 
你在二维坐标系下做图, 怎么可能连 y 轴都不知道....
画 sin(x) 曲线, 其实你是画的方程 y = sin(x) 的曲线. 每一个 x 对于一个 y, 一对 (x, y) 才能对应坐标轴上的点.
y = sin(x) 移动一下就是 y - sin(x) = 0, 加入误差范围 e 就是 -e <  y - sin(x) < e 也就是 fabs(y - sin(x)) < e. 这就是程序里的  fabs(y - sin(x)) <= 0.046


你在命令行屏幕下话的点坐标只能是第一行, 第二行 ... 必须是整数. 而 sin(x) 求出来的数显然不一定是整数. 你取整的过程就会产生误差撒.

热点排行