挺有意思的問題,簡單談一下看法
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、高淳網(wǎng)絡(luò)推廣、重慶小程序開發(fā)公司、高淳網(wǎng)絡(luò)營銷、高淳企業(yè)策劃、高淳品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供高淳建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:chinadenli.net
將你的需求分成兩部分,一是讓程序自行解析用戶輸入的函數(shù)解析式,二是繪制函數(shù)圖像。
首先,關(guān)于第一個功能,最直接的思路就是字符串解析,按照數(shù)學知識定義不同的運算符號,按照使用習慣定義常用的變量和常量的符號字母,然后據(jù)此規(guī)則解析輸入的字符串,再根據(jù)解析結(jié)果確定函數(shù)中基本運算的次數(shù)及運算順序,最后將整個操作流程以一定形式存儲起來即可。
例如,對于y=log(x^2+x),包含三次基本運算,第一步是x^2,第二步是上一步的結(jié)果+x,第三步是上一步的結(jié)果求對數(shù)。注意到log有定義域的限制,這也是要在程序中實現(xiàn)的。
然后,對于第二個功能,根據(jù)給定函數(shù)繪制圖像并不難,對于一元和二元函數(shù)來說很容易實現(xiàn),難點在于多元函數(shù)應(yīng)如何繪制直觀易懂的函數(shù)圖像?不過這一點超出編程語言的范疇了,而且二元函數(shù)可以滿足大部分應(yīng)用場景了。
繪制函數(shù)圖像的程序只需在定義域上按指定的步長求出不同自變量對應(yīng)的函數(shù)值,然后將點連成線,即可繪制出函數(shù)圖像。例如對于logx,定義域為x0。假設(shè)步長為0.1,則可求出0.1,0.2,0.3,...,99.9,100.0的函數(shù)值,然后繪制出點,再連點成線,即可得到函數(shù)圖像。
另外,這里還有很多細節(jié)沒有討論,例如輸入數(shù)據(jù)是字符串還是圖像;是否可以用其他方法解析輸入,例如神經(jīng)網(wǎng)絡(luò)。這些就很復雜了,不再深入。
回答中可能有考慮不周的地方,希望上述內(nèi)容對你有參考意義
你要什么圖像 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");
}
}
# include "graphics.h"
# include "math.h"
# define N 100
void init_graphic( )
main()
{
int i;
float x0,y0,x,y;
float x[100],y[100];
init_graphic();
for(i=0;i100;i++)
{
x[i]=-20+(40/100)*i;
y[i]=x[i]*x[i];
}
x0=x[0]+320;
y0=440-y[0];
for(i=1;i100;i++)
{
x1=x[i]+320;
y1=440-y[i];
line(x0,y0,x1,y1);
x0=x1;
y0=y1;
}
}
void init_graphic( )
{
int graphicdriver,graphicmode;
graphicdriver=DETECT;
graphicmode=1;
initgraph(graphicdriver,graphicmode,"E:\\turboc2\\")/*該路徑是你TurboC的路徑*/
}
在c的標準庫中有g(shù)raphic.h頭文件,實現(xiàn)了很多畫圖函數(shù) 比如 lineto, moveto, arc,(函數(shù)名可能記錯,好久沒用了-.-!)
直線:起點加終點就行。
二次曲線,比如拋物線,那就以定長拆分成小直線。雙曲線同理。
拋物線,和雙曲線用定長拆分,估計很難計算。要是精度要求不高就根據(jù)情況改成定x,或者定y偏移的拆分,要是精度要求高那就去找直線擬合曲線的算法或者雙圓弧擬合曲線的算法。
本文標題:c語言怎么畫二維函數(shù)圖 c語言二維數(shù)組畫圖
文章URL:http://chinadenli.net/article42/dogdpec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、App開發(fā)、網(wǎng)站內(nèi)鏈、手機網(wǎng)站建設(shè)、ChatGPT、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)