十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
挺有意思的问题,简单谈一下看法
成都创新互联公司是专业的新吴网站建设公司,新吴接单;提供成都做网站、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行新吴网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
将你的需求分成两部分,一是让程序自行解析用户输入的函数解析式,二是绘制函数图像。
首先,关于第一个功能,最直接的思路就是字符串解析,按照数学知识定义不同的运算符号,按照使用习惯定义常用的变量和常量的符号字母,然后据此规则解析输入的字符串,再根据解析结果确定函数中基本运算的次数及运算顺序,最后将整个操作流程以一定形式存储起来即可。
例如,对于y=log(x^2+x),包含三次基本运算,第一步是x^2,第二步是上一步的结果+x,第三步是上一步的结果求对数。注意到log有定义域的限制,这也是要在程序中实现的。
然后,对于第二个功能,根据给定函数绘制图像并不难,对于一元和二元函数来说很容易实现,难点在于多元函数应如何绘制直观易懂的函数图像?不过这一点超出编程语言的范畴了,而且二元函数可以满足大部分应用场景了。
绘制函数图像的程序只需在定义域上按指定的步长求出不同自变量对应的函数值,然后将点连成线,即可绘制出函数图像。例如对于logx,定义域为x0。假设步长为0.1,则可求出0.1,0.2,0.3,...,99.9,100.0的函数值,然后绘制出点,再连点成线,即可得到函数图像。
另外,这里还有很多细节没有讨论,例如输入数据是字符串还是图像;是否可以用其他方法解析输入,例如神经网络。这些就很复杂了,不再深入。
回答中可能有考虑不周的地方,希望上述内容对你有参考意义
以前做过,就是用C里面自己的函数把这个函数表达出来就可以了,然后让x在一个范围内递增就可以了。。。
------------------
兄弟,以前做的资料都丢了也忘了,你自己去网上搜索资料或者买个C语言函数介绍的书籍。
祝好运。
你要什么图像 sin 还cos 要不我都给你把!
1、#includestdio.h
#includemath.h
void main()
{
double y;
int i,n;
for(y=1;y=0;y-=0.1)
{n=asin(y)*10;
for(i=1;i=n;i++)
printf(" ");
printf("*");
for(;i=31-n;i++)
printf(" ");
printf("*\n");}
for(y=0;y=1;y+=0.1)
{n=asin(y)*10;
for(i=-1;i=31+n;i++)
printf(" ");
printf("*");
for(;i=62-n;i++)
printf(" ");
printf("*\n");}
}
2、#includestdio.h
#includemath.h
void main()
{
double y;
int x,m;
for(y=1;y=-1;y-=0.1)
{m=acos(y)*10;
for(x=1;xm;x++)
printf(" ");
printf("*");
for(;x62-m;x++)
printf(" ");
printf("*\n");}
}
之后在给你个连个图像相交的把
3、#includestdio.h
#includemath.h
void main()
{
double y;
int n,m,i,j,x,yy;
for(yy=0;yy=20;yy++)
{ y=0.1*yy;
m=acos(1-y)*10;
n=asin(1-y)*10;
i=32+asin(y-1)*10;
j=61-asin(y-1)*10;
for(x=0;x62;x++)
{if((x==n)(x==m)) printf("+");
else if((x==n)||(x==i)||(x==j)) printf("+");
else if((x==m)||(x==62-m)) printf("*");
else printf(" ");}
printf("\n");
}
}