挺有意思的問(wèn)題,簡(jiǎn)單談一下看法
沅陵網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
將你的需求分成兩部分,一是讓程序自行解析用戶輸入的函數(shù)解析式,二是繪制函數(shù)圖像。
首先,關(guān)于第一個(gè)功能,最直接的思路就是字符串解析,按照數(shù)學(xué)知識(shí)定義不同的運(yùn)算符號(hào),按照使用習(xí)慣定義常用的變量和常量的符號(hào)字母,然后據(jù)此規(guī)則解析輸入的字符串,再根據(jù)解析結(jié)果確定函數(shù)中基本運(yùn)算的次數(shù)及運(yùn)算順序,最后將整個(gè)操作流程以一定形式存儲(chǔ)起來(lái)即可。
例如,對(duì)于y=log(x^2+x),包含三次基本運(yùn)算,第一步是x^2,第二步是上一步的結(jié)果+x,第三步是上一步的結(jié)果求對(duì)數(shù)。注意到log有定義域的限制,這也是要在程序中實(shí)現(xiàn)的。
然后,對(duì)于第二個(gè)功能,根據(jù)給定函數(shù)繪制圖像并不難,對(duì)于一元和二元函數(shù)來(lái)說(shuō)很容易實(shí)現(xiàn),難點(diǎn)在于多元函數(shù)應(yīng)如何繪制直觀易懂的函數(shù)圖像?不過(guò)這一點(diǎn)超出編程語(yǔ)言的范疇了,而且二元函數(shù)可以滿足大部分應(yīng)用場(chǎng)景了。
繪制函數(shù)圖像的程序只需在定義域上按指定的步長(zhǎng)求出不同自變量對(duì)應(yīng)的函數(shù)值,然后將點(diǎn)連成線,即可繪制出函數(shù)圖像。例如對(duì)于logx,定義域?yàn)閤0。假設(shè)步長(zhǎng)為0.1,則可求出0.1,0.2,0.3,...,99.9,100.0的函數(shù)值,然后繪制出點(diǎn),再連點(diǎn)成線,即可得到函數(shù)圖像。
另外,這里還有很多細(xì)節(jié)沒(méi)有討論,例如輸入數(shù)據(jù)是字符串還是圖像;是否可以用其他方法解析輸入,例如神經(jīng)網(wǎng)絡(luò)。這些就很復(fù)雜了,不再深入。
回答中可能有考慮不周的地方,希望上述內(nèi)容對(duì)你有參考意義
1、首先,打開(kāi)VS2019,并且創(chuàng)建一個(gè)C語(yǔ)言源文件,會(huì)看到如下的頁(yè)面。
2、鼠標(biāo)在下圖紅色圈所示的區(qū)域單擊一下。
3、之后,再按Enter鍵,會(huì)看到新的一行。
4、在這一行中輸入:#includemath.h。
5、接著,在void main()中去定義一個(gè)單精度型變量。
6、定義完回車后,輸入a=sin(90);注意,90指的是90弧度。
7、再次回車,輸入printf("%f",a);。
8、可以按F5鍵去運(yùn)行這段程序,會(huì)看到如下的結(jié)果。即90弧度的正弦值約為0.893997。
我畫(huà)了半個(gè)正弦函數(shù),其余的你可以照著畫(huà),歡迎討論,
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "graphics.h"
void main()
{
int driver,mode,i;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setcolor(15);
for(i=0;i360;i++)
line(i,200*sin(i*3.14/360),i+1,200*sin((i+1)*3.14/360));
getch();
restorecrtmode();
}
需要Window圖像編程,Window編程就是基于C語(yǔ)言的,在Visual C++6.0可以編寫(xiě)Win32程序