當前位置:首頁 » 編程語言 » c語言求得曲線
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言求得曲線

發布時間: 2022-05-09 19:31:41

A. c語言編程 繪制曲線,會的來

TC下調試通過

/*******************************************************
*Author :Wacs5
*Date :20090105(YYYY-MM-DD)
*Function :畫簡易的曲線圖 *********************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <Graphics.h>

#define n 8

int main()
{
int i,j;
float data[]={7,3,12,6,9,5,8,11};
char str[40];

int gdrive=DETECT,gmode,errorcode;
int maxx,maxy;
int perx,pery;
int x0,x1,y0,y1;
int coloraxis=2,colorline=3;
float mindata,maxdata,ndata;

initgraph(&gdrive,&gmode,""); /*初始化設備*/
if ((errorcode=graphresult())!=grOk) /*查錯*/
{
printf("Graphics error:%s\nPress any key to exit:",grapherrormsg(errorcode));
getch();
exit(1);
}
maxx=getmaxx();
maxy=getmaxy();
mindata=maxdata=data[0];
for (i=1;i<n;i++)
{
if (mindata>data[i])
mindata=data[i];
if (maxdata<data[i])
maxdata=data[i];
}
mindata=floor(mindata);
maxdata=ceil(maxdata);

perx=maxx/(n+4);
pery=maxy/(maxdata-mindata+4);
x0=2*perx;
y0=maxy-2*pery;

x1=maxx-2*perx;
y1=2*pery;
setcolor(coloraxis);
line(x0,y0,x1,y0);
line(x0,y0,x0,y1);

line(x1,y0,x1-4,y0+3);
line(x1,y0,x1-4,y0-3);
line(x0,y1,x0+3,y1+4);
line(x0,y1,x0-3,y1+4);

settextjustify(CENTER_TEXT,TOP_TEXT);
for (i=0;i<n;i+=n/3)
{
j=x0+i*perx;
line(j,y0,j,y0+2); /*刻度線*/
sprintf(str,"%d",i);
outtextxy(j,y0+4,str);
}

settextjustify(RIGHT_TEXT,CENTER_TEXT);
for (i=(maxdata-mindata)/3;i<=maxdata-mindata;i+=(maxdata-mindata)/3)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度線*/
sprintf(str,"%d",(int)mindata+i);
outtextxy(x0-4,j,str);
}

setcolor(colorline);
x1=x0+perx;
y1=y0-(data[0]-mindata)*pery;
circle(x1,y1,2);
moveto(x1,y1);
i=1;
do
{
x1+=perx;
y1=y0-(data[i]-mindata)*pery;
lineto(x1,y1);
circle(x1,y1,2);
moveto(x1,y1);
i++;
}while(i<n);

getch();
closegraph();
return 0;
}

B. 請教:如何用c語言畫曲線

最簡單的辦法是對區域均勻劃分,計算各點的函數值,然後把這些點用直線連接起來。例如,下面是繪制正弦曲線:
moveto(0, 100);
for (i=0; i<=100;i++)
lineto(i, 100 + 100 *sin(M_PI * 2/100.0*i));

但是用直線連接起來不夠平滑,也有一些插值方法進行改進。比如採用不等間隔劃分區域,或把曲線使用一段段的二次、三次曲線連接起來。你可以參考清華大學出版社出版的《C語言常用演算法程序集》

C. 如何用C語言計算一條曲線函數兩個橫坐標之間的面積

gnu有一個數學的開源庫,叫gsl,裡面有積分函數,可以直接調用。也可以自己根據積分的原理,取小步長,計算步長和曲線
函數值
間矩形的面積,所有面積的總和即是最終面積。

D. 怎麼用c語言畫實時曲線

樓主您好,你這個分值已經吸引了我
在下不才,也是自己寫過一些c語言畫圖模式下的程序。所以我認為我在這一方面具有一定的權威.
(文本模式下)
我對於您的問題理解的不是很透徹,但是看字面意思來說,您是想當前坐標賦值給變數,我假設變數為(x、y)分別為x軸、y軸坐標變數。則將坐標賦值,為x=getx();y=gety();
(畫圖模式下)
在這里,我一般是直接對寄存器進行中斷取得
滑鼠
的值。在對他進行操作。
c語言只有以上2種模式,通過你的提問,我覺得你問的是文本模式下的。如果你覺得我回答不夠詳細,可以直接加QQ:942690451
詢問。
另外,虛機團上產品團購,超級便宜

E. c語言如何編程求正弦曲線長度

兩點距離s[i] = sqrt(dx*dx+dy*dy);
其中: dx = (b-a) / 分成多少份。 積分從 a 積到 b. 用弧度。
y[i]=sin(x); y[i+1]=sin(x+dx); dy= sin(x+dx) - sin(x);
#include <stdio.h>
#include <math.h>
int main( ){
double a,b,dx,x,x2,s=0,dy;
int i;
//scanf("%lf %lf",&a,&b); 可以輸入
a=1.5708; b=3.1416;
dx= (b-a)/1000.0;
x=a;
for (i=0;i<1000;i++){
x2=x+dx;
dy = sin(x2)-sin(x);
s= s + sqrt( dx * dx + dy * dy);
x=x2;
}

printf("%lf",s);

return 0;
}

F. C語言如何實現二次曲線擬合

首先,誰都不能根據僅有的數據集來斷定這就是什麼曲線。
我們只能通過對數據觀察推測可能會符合什麼形式的曲線。

已知10個數據點的訓練集,可以採用多項式擬合的辦法來做,但是不建議使用C語言來實現。
這種數學問題用matlab很容易就可以解決,c語言寫要麻煩的多的多。比如你採用最小二乘法的話,
你需要自己用c語言寫很多矩陣運算。

G. 採用c語言繪制任意函數曲線(雙曲線,二次函數,一次函數)怎麼做

在c的標准庫中有graphic.h頭文件,實現了很多畫圖函數 比如 lineto, moveto, arc,(函數名可能記錯,好久沒用了-.-!)
直線:起點加終點就行。
二次曲線,比如拋物線,那就以定長拆分成小直線。雙曲線同理。
拋物線,和雙曲線用定長拆分,估計很難計算。要是精度要求不高就根據情況改成定x,或者定y偏移的拆分,要是精度要求高那就去找直線擬合曲線的演算法或者雙圓弧擬合曲線的演算法。

H. c語言編程繪制曲線

TC下調試通過

/*******************************************************
*Author :Wacs5
*Date :20090105(YYYY-MM-DD)
*Function :畫簡易的曲線圖 *********************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <Graphics.h>

#define n 8

int main()
{
int i,j;
float data[]={7,3,12,6,9,5,8,11};
char str[40];

int gdrive=DETECT,gmode,errorcode;
int maxx,maxy;
int perx,pery;
int x0,x1,y0,y1;
int coloraxis=2,colorline=3;
float mindata,maxdata,ndata;

initgraph(&gdrive,&gmode,""); /*初始化設備*/
if ((errorcode=graphresult())!=grOk) /*查錯*/
{
printf("Graphics error:%s\nPress any key to exit:",grapherrormsg(errorcode));
getch();
exit(1);
}
maxx=getmaxx();
maxy=getmaxy();
mindata=maxdata=data[0];
for (i=1;i<n;i++)
{
if (mindata>data[i])
mindata=data[i];
if (maxdata<data[i])
maxdata=data[i];
}
mindata=floor(mindata);
maxdata=ceil(maxdata);

perx=maxx/(n+4);
pery=maxy/(maxdata-mindata+4);
x0=2*perx;
y0=maxy-2*pery;

x1=maxx-2*perx;
y1=2*pery;
setcolor(coloraxis);
line(x0,y0,x1,y0);
line(x0,y0,x0,y1);

line(x1,y0,x1-4,y0+3);
line(x1,y0,x1-4,y0-3);
line(x0,y1,x0+3,y1+4);
line(x0,y1,x0-3,y1+4);

settextjustify(CENTER_TEXT,TOP_TEXT);
for (i=0;i<n;i+=n/3)
{
j=x0+i*perx;
line(j,y0,j,y0+2); /*刻度線*/
sprintf(str,"%d",i);
outtextxy(j,y0+4,str);
}

settextjustify(RIGHT_TEXT,CENTER_TEXT);
for (i=(maxdata-mindata)/3;i<=maxdata-mindata;i+=(maxdata-mindata)/3)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度線*/
sprintf(str,"%d",(int)mindata+i);
outtextxy(x0-4,j,str);
}

setcolor(colorline);
x1=x0+perx;
y1=y0-(data[0]-mindata)*pery;
circle(x1,y1,2);
moveto(x1,y1);
i=1;
do
{
x1+=perx;
y1=y0-(data[i]-mindata)*pery;
lineto(x1,y1);
circle(x1,y1,2);
moveto(x1,y1);
i++;
}while(i<n);

getch();
closegraph();
return 0;
}
求採納為滿意回答。

I. C語言編程坐標曲線

下面是的是昨天的,但是修改了一下坐標的刻度.

/*******************************************************
*Author :Wacs5
*Date :20090105(YYYY-MM-DD)
*Function :畫簡易的曲線圖 *********************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <Graphics.h>

#define n 8

int main()
{
int i,j;
float data[]={7,3,12,6,9,5,8,11};
char str[40];

int gdrive=DETECT,gmode,errorcode;
int maxx,maxy;
int perx,pery;
int x0,x1,y0,y1;
int coloraxis=2,colorline=3;
float mindata,maxdata,ndata;

initgraph(&gdrive,&gmode,""); /*初始化設備*/
if ((errorcode=graphresult())!=grOk) /*查錯*/
{
printf("Graphics error:%s\nPress any key to exit:",grapherrormsg(errorcode));
getch();
exit(1);
}
maxx=getmaxx();
maxy=getmaxy();
mindata=0;
maxdata=data[0];
for (i=1;i<n;i++)
if (maxdata<data[i])
maxdata=data[i];

perx=maxx/(n+4);
pery=maxy/(maxdata-mindata+4);
x0=2*perx;
y0=maxy-2*pery;

x1=maxx-2*perx;
y1=2*pery;
setcolor(coloraxis);
line(x0,y0,x1,y0);
line(x0,y0,x0,y1);

line(x1,y0,x1-4,y0+3);
line(x1,y0,x1-4,y0-3);
line(x0,y1,x0+3,y1+4);
line(x0,y1,x0-3,y1+4);

settextjustify(CENTER_TEXT,TOP_TEXT);
for (i=0;i<=n;i++)
{
j=x0+i*perx;
line(j,y0,j,y0+2); /*刻度線*/
sprintf(str,"%d",i);
outtextxy(j,y0+4,str);
}

settextjustify(RIGHT_TEXT,CENTER_TEXT);
for (i=1;i<=12;i++)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度線*/
sprintf(str,"%d",i);
outtextxy(x0-4,j,str);
}

setcolor(colorline);
x1=x0+perx;
y1=y0-(data[0]-mindata)*pery;
circle(x1,y1,2);
moveto(x1,y1);
i=1;
do
{
x1+=perx;
y1=y0-(data[i]-mindata)*pery;
lineto(x1,y1);
circle(x1,y1,2);
moveto(x1,y1);
i++;
}while(i<n);

getch();
closegraph();
return 0;
}

J. 求教:用C語言怎麼實現實時曲線

可以利用 GLUT 程序包 (OpenGL 功能) 動態繪圖,例如,一邊實時采樣,一邊顯示。
簡單的實時曲線可以用 固定 坐標,x 時間軸,y1, y2, ..yn 為實時量,例如 溫度,壓力,速度..., 用 沿 x 移動的 一根垂線, 表示當前時間分界點,左邊的已更新,但垂線移動到x 最右端時,更新 x 坐標刻度,垂線 在從 最左端開始,繪制 新的時段數值。
另一種方法是 固定 x 軸 總時段長度,但是不斷更新 x 軸 刻度 和 yi 數據,使整段曲線看上去 是 從右向左 光滑移動動。
參數設置,顯示,采樣控制等,都 可以在屏幕上用按鈕,Text 等 實現。
直接用 OpenGL 則需 用 c++ 程序,MFC + OpenGL 之類 實現。