怎么绘制高斯分布图(正态分布Normal distribution高斯分布Gaussi) |
答題得分者是:richtop
|
jean2004
初階會員 發表:69 回覆:80 積分:39 註冊:2004-12-18 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
jean2004 您好: 底下的程式供您參考修改!
const float inv2PI = 1./ sqrt(2*PI); float Gaussian(float x, float mean=0.0, float dev=1.0) { float result; result = inv2PI/dev * exp( -0.5* (x-mean)*(x-mean)/(dev*dev) ); return result; } void drawGaussian(TCanvas *canvas, int x0, int y0, float scale=20) { int px, py; int index=0, dx=1; float range=13, x=-range, dr=0.05; canvas->MoveTo(x0-5, y0); canvas->LineTo(x0 dx*2*range/dr 5, y0); canvas->MoveTo(x0, y0-scale*Gaussian(x) ); canvas->MoveTo(x0 dx*range/dr, y0); canvas->LineTo(x0 dx*range/dr, y0-scale-5); canvas->MoveTo(x0, y0-scale*Gaussian(x)); canvas->Pen->Color = clRed; for (; x<=range; x =dr) { px = (int)(x0 index); py = (int)(y0 - scale*Gaussian(x) ); if ( x==0.0 ) { TPoint pt = canvas->PenPos; canvas->MoveTo(px, y0); canvas->LineTo(px, y0-scale-5); canvas->MoveTo(pt.x, pt.y); } canvas->LineTo(px,py); index = dx; } } void __fastcall TForm1::FormPaint(TObject *Sender) { drawGaussian(Form1->Canvas, 10, 200, 180); } //---------------------------------------------------------------------------RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
jean2004
初階會員 發表:69 回覆:80 積分:39 註冊:2004-12-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |