读书人

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

发布时间: 2013-07-27 22:21:01 作者: rapoo

打印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) 求出来的数显然不一定是整数. 你取整的过程就会产生误差撒.

读书人网 >C++

热点推荐