NO!思路和方法那是完全的不對(duì)啊,對(duì)于普通的8位單片機(jī)來說,都是不帶硬件除法器的,而且更不支持浮點(diǎn)運(yùn)算,所有這些都將需要軟件來完成,除非你用的是高端的32位處理器,比如STM32的或者是DSP之類的,才可以從理論上計(jì)算得到正弦,方法是采用多項(xiàng)式進(jìn)行數(shù)值計(jì)算,你可以參考一下《數(shù)值分析》中關(guān)于正弦的求解算法
永靖ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
但是對(duì)于常規(guī)的單片機(jī),采用最好的方法是查表,事實(shí)上這種求解正弦的方法早就被采用了,采用查表和插值的方法,可以完全的避免浮點(diǎn)和除法計(jì)算,這才是你需要采用的思路
#include stdio.h
#include math.h
main()
{
double y;
int x,m;
for(y=1;y=-1.0;y-=0.1)
{
m=acos(y)*10;
for(x=1;xm;x++)
printf(" ");
printf("*");
for(;x62-m;x++)
printf(" ");
printf("*\n");
}
}
我畫了半個(gè)正弦函數(shù),其余的你可以照著畫,歡迎討論,
#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();
}
hehe
首先這個(gè)程序只能輸出這種 不像正弦 也不象余弦的曲線。
因?yàn)槟愕某绦虻乃惴ㄊ敲啃杏?個(gè)星星
其次,15+45=60,約等于2*PI
就是說,前面的15是PI/2,后面的45是PI/2*3,
輸出的是1個(gè)周期的。sin(PI/2)=1。。這回懂了么?
首先,你輸出的不是正弦圖像,而是反正弦圖像。
#includestdio.h
#includemath.h
int
main(){
double
y;
int
x,m,i;
printf("y=sin(x)
[0x2*pi]\n");
for(y=1;y=-1;y-=0.1){//表示y的取值范圍是[-1,1]
if(y=0){
m=asin(y)*10;
//反正弦函數(shù),確定空格的數(shù)量,最大值為15
for(x=1;xm;x++)printf("
");
//printf("*",m);
printf("*");//注意此時(shí)不換行,因?yàn)楹竺孢€有一個(gè)點(diǎn)
for(;x31-m;x++)printf("
");//輸出第二個(gè)點(diǎn),并換行
printf("*\n");}
else{//同理輸出y小于0的點(diǎn)
m=-1*asin(y)*10;
for(i=0;i32;i++)printf("
");
for(x=1;xm;x++)printf("
");
//printf("*",m);
printf("*");
for(;x31-m;x++)printf("
");
printf("*\n",m);
}
}
getchar();
return
0;
}
網(wǎng)頁名稱:c語言正弦函數(shù)怎么畫 c語言實(shí)現(xiàn)正弦函數(shù)
當(dāng)前URL:http://aaarwkj.com/article46/docpphg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、動(dòng)態(tài)網(wǎng)站、電子商務(wù)、ChatGPT、靜態(tài)網(wǎng)站、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)