111.绘制正态分布曲线

简介: 111.绘制正态分布曲线
#include "stdio.h"
#include "math.h"
#include "graphics.h"
double lgam1(x) /*Gamma函数的计算*/
double x;
{ 
  int i;
    double y,t,s,u;
    static double a[11]={ 0.0000677106,-0.0003442342,
    0.0015397681,-0.0024467480,0.0109736958,
    -0.0002109075,0.0742379071,0.0815782188,
    0.4118402518,0.4227843370,1.0};
    if (x<=0.0)
  { printf("err**x<=0!\n"); return(-1.0);}
    y=x;
    if (y<=1.0)
  {
    t=1.0/(y*(y+1.0)); y=y+2.0;}
    else if (y<=2.0)
  { 
    t=1.0/y; y=y+1.0;}
    else if (y<=3.0) t=1.0;
    else
  { 
    t=1.0;
        while (y>3.0)
    { y=y-1.0; t=t*y;}
  }
    s=a[0]; u=y-2.0;
    for (i=1; i<=10; i++)
    s=s*u+a[i];
    s=s*t;
    return(s);
}  
double lgam2(a,x) /*不完全Gamma函数*/
double a,x;
{ 
  int n;
    double p,q,d,s,s1,p0,q0,p1,q1,qq;
    if ((a<=0.0)||(x<0.0))
  { if (a<=0.0) printf("err**a<=0!\n");
  if (x<0.0) printf("err**x<0!\n");
  return(-1.0);
  }
    if (x+1.0==1.0) return(0.0);
    if (x>1.0e+35) return(1.0);
    q=log(x); q=a*q; qq=exp(q);
    if (x<1.0+a)
  { 
    p=a; d=1.0/a; s=d;
        for (n=1; n<=100; n++)
    { 
      p=1.0+p; d=d*x/p; s=s+d;
      if (fabs(d)<fabs(s)*1.0e-07)
      { 
        s=s*exp(-x)*qq/lgam1(a);
                return(s);
      }
    }
  }
    else
  { 
    s=1.0/x; p0=0.0; p1=1.0; q0=1.0; q1=x;
        for (n=1; n<=100; n++)
    { 
      p0=p1+(n-a)*p0; q0=q1+(n-a)*q0;
            p=x*p0+n*p1; q=x*q0+n*q1;
            if (fabs(q)+1.0!=1.0)
      { 
        s1=p/q; p1=p; q1=q;
                if (fabs((s1-s)/s1)<1.0e-07)
        { 
          s=s1*exp(-x)*qq/lgam1(a);
                    return(1.0-s);
        }
                s=s1;
      }
            p1=p; q1=q;
    }
  }
    printf("a too large !\n");
    s=1.0-s*exp(-x)*qq/lgam1(a);
    return(s);
}
double lerrf(x) /*误差函数*/
double x;
{ 
  double y;
    if (x>=0.0)
    y=lgam2(0.5,x*x);
    else
    y=-lgam2(0.5,x*x);
    return(y);
}
double lgass(a,d,x) /*正态分布函数*/
double a,d,x;
{
  double y;
    if (d<=0.0) d=1.0e-10;
    y=0.5+0.5*lerrf((x-a)/(sqrt(2.0)*d));
    return(y);
}
main()
{ 
  int i;
  double j;
    double a, d;
  int gdriver = DETECT, gmode;
  clrscr();
  printf("This program will draw the Normal Distribution Graph.\n");
  printf("Please input the mathematical expectation (Alpha): ");
  scanf("%lf", &a );
  printf("Please input the variance (Sita >0): ");
  scanf("%lf", &d );
  /*registerbgidriver( EGAVGA_driver );*/
  initgraph( &gdriver, &gmode, "e:\\tc\\bgi" );
  setbkcolor( BLUE );
  moveto( 50, 430 );
  lineto( 590, 430 );
  outtextxy( 600, 425, "X");
  moveto( 200, 50 );
  lineto( 200, 450 );
  outtextxy( 200, 30, "Y" );
  outtextxy( 185, 435, "O");
  setcolor( RED );
  moveto( 51, 430 - 100 * lgass( a, d, -150.0 ) );
  for( i = 51; i <= 590; i++ )
  {
    j = 430 - 360 * lgass( a, d, (double)(i-200) );
    lineto( i, j );
  }
  getch();
  closegraph();
}
相关文章
|
小程序 JavaScript 前端开发
微信小程序-更加简洁的{{ ... }}语法
微信小程序可有意思了
848 0
|
应用服务中间件 nginx
Nginx的启动、停止与重启
启动  启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.
13024 0
|
机器学习/深度学习 Kubernetes PyTorch
解决在Docker或者Kubernetes中使用PyTorch训练深度学习模型共享内存不足的问题
异常信息 ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm) 问题原因
|
存储 C++
webserver--Buffer类实现内存缓冲区读写(全代码)
webserver--Buffer类实现内存缓冲区读写(全代码)
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
877 3
|
自动驾驶 安全 物联网
5G网络:速度之外的优势深度解析
【8月更文挑战第5天】综上所述,5G网络的优势远不止于其惊人的速度。其超低时延、大规模连接能力、高可靠性和稳定性、灵活频谱利用以及创新的网络切片技术等优势共同构建了一个全新的智能世界。在这个世界里,万物皆可互联、实时交互成为可能,关键业务应用得到可靠保障,频谱资源得到高效利用,网络资源实现高度定制化。5G网络正以前所未有的方式改变着我们的生活和工作方式,引领着未来的智能生活与社会创新。
|
JSON JavaScript 中间件
深入浅出Node.js后端开发之Express框架应用
【8月更文挑战第29天】本文将带领读者快速了解并掌握使用Express框架进行Node.js后端开发的基础和进阶知识。我们将一起探索Express的安装、基本使用方法,并通过实际代码示例学习如何搭建一个简单的Web服务器。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
Dart 算法 数据可视化
用flutter实现五种寻路算法的可视化效果,快来看看!
半年前我写了一篇有关排序算法可视化的文章,挺有意思,还被张风捷特烈-张老师收录进了FlutterUnit,今天让我们再来做一个有关寻路算法的可视化效果吧!
|
计算机视觉 索引
【OpenCV】直方图计算 & 均衡化直方图
【OpenCV】直方图计算 & 均衡化直方图
410 3
|
SQL 关系型数据库 MySQL
SuperSet服务安装
SuperSet服务安装
612 0
SuperSet服务安装