当前位置:文档之家› 后方交会程序实现(c语言版)

后方交会程序实现(c语言版)

后方交会程序实现(c语言版)
后方交会程序实现(c语言版)

#include

#include

#include

#include

#include

#define N 4

#define T 1.41421

void turn(double *A,double A2[],int m,int n) //计算矩阵的转置

{ int i,j;

for(i=0;i

for(j=0;j

A2[j*m+i]=A[i*n+j];

}

void mulAB(double *A,double *B,double *C,int am,int an,int bm,int bn) //计算两矩阵相乘

{

int i,j,l,u;

if(an!=bm)

{

printf("error!cannot do the multiplication.\n");

return;

}

for(i=0;i

for(j=0;j

{

u=i*bn+j;

C[u]=0.0;

for(l=0;l

C[u]+=A[i*an+l]*B[l*bn+j];

}

return;

}

double *inv(double *a,int n) //计算矩阵的逆,本程序的难点,采用高斯约旦全选主元法{

int *is,*js,i,j,k,l,u,v;

double d,p;

is=(int*)malloc(n*sizeof(int));

js=(int*)malloc(n*sizeof(int));

for (k=0; k<=n-1; k++)

{

d=0.0;

for (i=k;i

for (j=k;j

{ l=i*n+j;

p=fabs(a[l]);

if (p>d)

{

d=p;

is[k]=i;

js[k]=j;

}

}

if (d+1.0==1.0)

{ free(is);

free(js);

printf("error not inv\n");

return NULL;

}

if (is[k]!=k)

for (j=0;j

v=is[k]*n+j;

p=a[u];

a[u]=a[v];

a[v]=p;

}

if (js[k]!=k)

for (i=0;i

v=i*n+js[k];

p=a[u];

a[u]=a[v];

a[v]=p;

}

l=k*n+k;

a[l]=1.0/a[l];

for (j=0;j

if (j!=k)

{

u=k*n+j;

a[u]=a[u]*a[l];

}

for (i=0;i

if (i!=k)

for (j=0;j

if (j!=k)

{ u=i*n+j;

a[u]=a[u]-a[i*n+k]*a[k*n+j];

}

for (i=0;i

if (i!=k)

{ u=i*n+k;

a[u]=-a[u]*a[l];

}

}

for (k=n-1;k>=0;k--)

{ if (js[k]!=k)

for (j=0;j<=n-1;j++)

{ u=k*n+j;

v=js[k]*n+j;

p=a[u];

a[u]=a[v];

a[v]=p;

}

if (is[k]!=k)

for (i=0;i

{ u=i*n+k;

v=i*n+is[k];

p=a[u];

a[u]=a[v];

a[v]=p;

}

}

free(is);

free(js);

return a;

}

main()//主函数,空间后方交会的计算{

FILE *fp; //定义一个文件指针

long m;

int i,j=0,it;

double G[1000];

double

f,t,w,k,limit=0,S1=0.0,S2=0.0,S3=0.0,x[N]={0},y[N]={0},x0[N]={0},y0[N]={0},X[N]={0},Y[N] ={0},Z[N]={0},Xs0,Ys0,Zs0;

double

a[3],b[3],c[3],A[2*N*6],AT[6*2*N],ATA[6*6],*ATA_=NULL,l[2*N],ATl[6],V[6]={0};

double F[6],Qx[6][6],Mi[6][6];

if((fp=fopen("e:\\shuju.txt","r"))==NULL) //使fp指向被打开的shuju.txt 文件

{ //并判断文件是否打开成功

printf("\nerror on open shuju.txt\n");

getch();

exit(1);

}

for(i=0;i

fscanf(fp,"%lf%lf%lf%lf%lf",&x[i],&y[i],&X[i],&Y[i],&Z[i]); //将文件中的数据赋给主函数定义的变量

printf("原始数据:\n");

printf("x\t\ty\t\tX\t\tY\t\tZ\t\t\n");//输出文件中的原始数据

for(i=0;i

printf("%.3lf\t\t%.3lf\t\t%.3lf\t%.3lf\t%.3lf\n",x[i],y[i],X[i],Y[i],Z[i]);

printf("\n请输入摄影机主距和摄影比例尺分母;f,m:");

scanf("%lf%ld",&f,&m); //输入f,m

f=f/1000.0;

for(i=0;i

{ x[i]/=1000.0;

y[i]/=1000.0;

S1+=X[i];

S2+=Y[i];

S3+=Z[i];

}

Xs0=S1/N;

Ys0=S2/N;

Zs0=m*f+S3/N;

t=0.0;w=0.0;k=0.0; //计算外方位元素的初始值

while(1)

{

printf("\n---------------------------------第%d次计算------------------------------\n",j+1);

a[0]=cos(t)*cos(k)-sin(t)*sin(w)*sin(k);

a[1]=-cos(t)*sin(k)-sin(t)*sin(w)*cos(k);

a[2]=-sin(t)*cos(w);

b[0]=cos(w)*sin(k);

b[1]=cos(w)*cos(k);

b[2]=-sin(w);

c[0]=sin(t)*cos(k)+cos(t)*sin(w)*sin(k);

c[1]=-sin(t)*sin(k)+cos(t)*sin(w)*cos(k);

c[2]=cos(t)*cos(w); //计算旋转矩阵

for(i=0;i

{

x0[i]=-f*(a[0]*(X[i]-Xs0)+b[0]*(Y[i]-Ys0)+c[0]*(Z[i]-Zs0))/(a[2]*(X[i]-Xs0)+b[2]*(Y[i]-Ys0)+c [2]*(Z[i]-Zs0));

y0[i]=-f*(a[1]*(X[i]-Xs0)+b[1]*(Y[i]-Ys0)+c[1]*(Z[i]-Zs0))/(a[2]*(X[i]-Xs0)+b[2]*(Y[i]-Ys0)+c [2]*(Z[i]-Zs0));

//计算像点坐标近似值

G[i]=a[2]*(X[i]-Xs0)+b[2]*(Y[i]-Ys0)+c[2]*(Z[i]-Zs0);

}

for(i=0;i

{

A[i*12+0]=(a[0]*f+a[2]*x[i])/G[i];

A[i*12+1]=(b[0]*f+b[2]*x[i])/G[i];

A[i*12+2]=(c[0]*f+c[2]*x[i])/G[i];

A[i*12+3]=y[i]*sin(w)-(x[i]*(x[i]*cos(k)-y[i]*sin(k))/f+f*cos(k))*cos(w);

A[i*12+4]=-f*sin(k)-x[i]*(x[i]*sin(k)+y[i]*cos(k))/f;

A[i*12+5]=y[i];

A[i*12+6]=(a[1]*f+a[2]*y[i])/G[i];

A[i*12+7]=(b[1]*f+b[2]*y[i])/G[i];

A[i*12+8]=(c[1]*f+c[2]*y[i])/G[i];

A[i*12+9]=-x[i]*sin(w)-(y[i]*(x[i]*cos(k)-y[i]*sin(k))/f-f*sin(k))*cos(w);

A[i*12+10]=-f*cos(k)-y[i]*(x[i]*sin(k)+y[i]*cos(k))/f;

A[i*12+11]=-x[i];

l[i*2+0]=x0[i]-x[i];

l[i*2+1]=y0[i]-y[i]; //计算误差方程的系数阵以及lx,ly

}

// printf("output matrix: A\n");

// printmatrix(A,2*N,6);

// printf("output matrix: l\n");

// printmatrix(l,2*N,1);

turn(A,A T,2*N,6); //计算AT

// printf("output matrix: AT\n");

// printmatrix(AT,6,2*N);

mulAB(AT,A,ATA,6,2*N,2*N,6); //计算ATA,组法方程

ATA_=inv(ATA,6); //计算ATA的逆,中间量

int p;

int cnt=-1;

for(it=0;it<36;it++){

p=it%6;

if(it%6==0){

cnt++;

}

Qx[cnt][p++]=A TA_[it];

}

for(int it=0;it<6;it++){

for(int jt=0;jt<6;jt++){

if(it!=jt){

Qx[it][jt]=0;//提取Qx的主对角线元素=Qii

}

// printf("%-10.3lf ",Qx[it][jt]);

}

// printf("\n");

}

mulAB(A T,l,ATl,6,2*N,2*N,1); //计算常数项ATL

// printf("outpit matrinx: ATl\n");

// printmatrix(ATl,6,1);

mulAB(A TA_,ATl,V,6,6,6,1); //解法方程,求改正数,

// printf("output matrix: V\n");

// printmatrix(V,6,1);

Xs0+=V[0];

Ys0+=V[1];

Zs0+=V[2];

t+=V[3];

w+=V[4];

k+=V[5];

for(i=0;i<6;i++){

F[i]=V[i]/T;//m0

}

printf("第%d次计算的外方位元素为:\n",++j);

printf("Xs=%.5lf\tYs=%.5lf\tZs=%.5lf\nt=%.5lf\tw=%.5lf\tk=%.5lf\n",Xs0,Ys0,Zs0,t,w,k);

if(Xs0-limit<=0.0001&&Xs0-limit>=-0.0001){ //控制迭代次数

break;

}

limit=Xs0;

}

printf("\n外方位元素为:\n");

printf("Xs=%.5lf\tYs=%.5lf\tZs=%.5lf\nt=%.5lf\tw=%.5lf\tk=%.5lf\n",Xs0,Ys0,Zs0,t,w,k);

printf("\n中误差为:\n");

for(i=0;i<6;i++){

for(j=0;j<6;j++){

Mi[i][j]=F[i]*(sqrt(Qx[i][j]));//mi=m0*Qii开根号

printf("%-13.10lf",Mi[i][j]);

}

printf("\n");

}

fclose(fp);

return 0;

}

USACO题解(NOCOW整理版)

USACO 题解 Chapter1 Section 1.1 Your Ride Is Here (ride) 这大概是一个容易的问题,一个“ad hoc”问题,不需要特殊的算法和技巧。 Greedy Gift Givers (gift1) 这道题的难度相当于联赛第一题。用数组incom、outcom记录每个人的收入和支出,记录每个人的名字,对于送礼人i,找到他要送给的人j,inc(incom[j],outcom[i] div n),其中n 是要送的人数,最后inc(incom[i],outcom[i] mod n),最后输出incom[i]-outcom[i]即可。(复杂度O(n^3))。 用Hash表可以进行优化,降复杂度为O(n^2)。 Friday the Thirteenth (friday) 按月为单位计算,模拟运算,1900年1月13日是星期六(代号1),下个月的13日就是代号(1+31-1) mod 7+1的星期。 因为数据小,所以不会超时。 当数据比较大时,可以以年为单位计算,每年为365天,mod 7的余数是1,就是说每过一年所有的日和星期错一天,闰年第1、2月错1天,3月以后错2天。这样,只要先求出第一年的解,错位添加到以后的年即可。 详细分析:因为1900.1.1是星期一,所以1900.1.13就等于(13-1) mod7+1=星期六。这样讲可能不太清楚。那么,我来解释一下:每过7天是一个星期。n天后是星期几怎么算呢?现在假设n是7的倍数,如果n为14,那么刚好就过了两个星期,所以14天后仍然是星期一。但如果是过了15天,那么推算就得到是星期二。这样,我们就可以推导出一个公式来计算。(n天mod 7(一个星期的天数)+ 现在日期的代号) mod 7 就等于现在日期的代号。当括号内的值为7的倍数时,其代号就为0,那么,此时就应该是星期日这样,我们可以得出题目的算法: int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31} int b[8]={0} a数组保存一年12个月的天数(因为C语言中数组起始下标为0,所以这里定义为13)。 b数组保存星期一到星期日出现的天数。用date记录目前是星期几的代号,然后用两个循环,依次加上所经过的月份的天数,就出那个月是星期几,当然,要注意判断闰年!知道了这个方法,实现起来就很容易了。 注意考虑闰月的情况。 最后注意要换行,否则会错误。 Broken Necklace (beads) 这道题用标准的搜索是O(n^2)的,可以用类似动态规划的方法优化到O(n)。 用数组bl,br,rl,rr分别记录在项链i处向左向右收集的蓝色红色珠子数。 项链是环形的,但我们只要把两个同样的项链放在一块,就把它转换成线性的了。 我们只要求出bl,br,rl,rr,那么结果就是max(max(bl[i],rl[i])+max(br[i+1],rr[i+1])) (0<=i<=2*n-1)。 我们以求bl,rl为例:

c语言画图.

VC绘图/游戏简易教程--1:创建新项目 [本期目标] 学会在VC 里面创建项目,并写简单的程序。 VC 写程序要有项目的概念,一个项目可以有多个 .cpp 文件,多个项目构成一个工作区。先记住这两个英文单词吧: ?Workspace: 工作区 ?Project: 项目 现在开始创建一个新项目。 ?VC6 创建新项目请参考这个视频:https://www.doczj.com/doc/2d10400051.html,/news/View.aspx?id=65 ?VC2008 创建新项目请参考:https://www.doczj.com/doc/2d10400051.html,/news/View.aspx?id=85 ?VC2010 与VC2008 相似。 看明白后,自己动手建立项目试试,并输入以下代码: #include void main() { printf("Hello World!"); } 尤其是之前用tc 的同学,请务必创建新项目试一试。成功执行后,会看到屏幕上有“Hello World!”几个字符。然后,再重新输入以下代码试试(无需理解代码含义): #include #include void main() { initgraph(640, 480); line(200, 240, 440, 240); line(320, 120, 320, 360); getch(); closegraph(); } 执行后应该可以看到屏幕正中央有一个十字。 看到该十字后,本节课结束。

VC绘图/游戏简易教程--2:简单绘图,学习单步执行 [本期目标] 学会简单绘图,并学会简单调试。 先看看上一课的代码,我加上了注释 #include // 绘图库头文件,绘图语句需要 #include // 控制台输入输出头文件,getch()语句需要 void main() { initgraph(640, 480); // 初始化640x480的绘图屏幕 line(200, 240, 440, 240); // 画线(200,240) - (440,240) line(320, 120, 320, 360); // 画线(320,120) - (320,360) getch(); // 按任意键 closegraph(); // 关闭绘图屏幕 } 解释一下: 1. 创建的绘图屏幕640x480,表示横向有640个点,纵向有480个点。注意:左上角是原点(0,0),也就是说,y轴和数学的y轴是相反的。 2. getch实现按任意键功能,按任意键后,程序继续执行。否则,程序会立刻执行closegraph以至于看不到绘制的内容。 [作业] 用线条画出更多的图形,要求不少于10条直线。 [学习单步执行] 完成作业后(务必完成),开始试着单步执行刚才的程序,由于绘图和多线程等因素的限制,请务必按照以下步骤尝试(熟练了以后就不用了): 1. 将VC取消最大化,并缩小窗口,能看到代码就行。 2. 按一下F10(单步执行),会看到屏幕上出现一个黄色的小箭头,指示将要执行的代码。 3. 当箭头指向initgraph语句时,按F10,能看到窗口发生了变化。 4. 将新的绘图窗口和VC并排放,相互不要有覆盖。这步很重要,否则绘图内容将会被VC窗口覆盖。

排列组合专题复习及经典例题详解

排列组合专题复习及经典例题详解 1.学习目标 掌握排列、组合问题的解题策略 2.重点 (1)特殊元素优先安排的策略: (2)合理分类与准确分步的策略; (3)排列、组合混合问题先选后排的策略; (4)正难则反、等价转化的策略; (5)相邻问题捆绑处理的策略; (6)不相邻问题插空处理的策略. 3.难点 综合运用解题策略解决问题. 4.学习过程: (1)知识梳理 m种不完成一件事,有几类办法,在第一类办法中有1.分类计数原理(加法原理):1mm种不同的方法,类型办法中有种不同的方法……在第n同的方法,在第2类办法中有n2N?m?m?...?m 种不同的方法.那么完成这件事共有n12m种不步有个步骤,做第12.分步计数原理(乘法原理):完成一件事,需要分成n1mm种不同的方法;那么完成这步有种不同的方法……,做第同的方法,做第2步有n n2N?m?m?...?m种不同的方法.件事共有n12特别提醒: 分类计数原理与“分类”有关,要注意“类”与“类”之间所具有的独立性和并列性; 分步计数原理与“分步”有关,要注意“步”与“步”之间具有的相依性和连续性,应用这两个原理进行正确地分类、分步,做到不重复、不遗漏. 3.排列:从n个不同元素中,任取m(m≤n)个元素,按照一定的顺序排成一列,叫做从n m?nm?n 时叫做全排列. 时叫做选排列,排列个不同元素中取出m个元素的一个,4.排列数:从n个不同元素中,取出m(m≤n)个元素的所有排列的个数,叫做从n个不同m P. 个元素的排列数,用符号表示元素中取出m n n!?m)?Nmn(m?)...()(1n?2n?m1)??,n、?(?Pnn5.排列数公式: n(n?m)!1mmm?mPPP??排列数具有的性质:nn1?n特别提醒: 规定0!=1 1 6.组合:从n个不同的元素中,任取m(m≤n)个不同元素,组成一组,叫做从n个不同元素中取m个不同元素的一个组合. 7.组合数:从n个不同元素中取m(m≤n)个不同元素的所有组合的个数,叫做从n个m C. 个不同元素的组合数,用符号表示不同元素中取出m nm Pn(n?1)(n?2)...(n?m?1)n!mn???C.组合数公式:8 nm)!m!(n?m!mP mmn?mmmm?1C?CC?C?C;②组合数的两个性质:①nnnnn?1特别提醒:排列与组合的联系与区别. 联系:都是从n个不同元素中取出m个元素. 区别:前者是“排成一排”,后者是“并成一组”,前者有顺序关系,后者无顺序关系.

单像空间后方交会和双像解析空间后方-前方交会的算法程序实现

单像空间后方交会和双像解析空间后方-前 方交会的算法程序实现 遥感科学与技术 摘要:如果已知每张像片的6个外方位元素,就能确定被摄物体与航摄像片的关系。因此,利用单像空间后方交会的方法,可以迅速的算出每张像片的6个外方位元素。而前方交会的计算,可以算出像片上点对应于地面点的三维坐标。基于这两点,利用计算机强大的运算能力,可以代替人脑快速的完成复杂的计算过程。 关键词:后方交会,前方交会,外方位元素,C++编程 0.引言: 单张像片空间后方交会是摄影测量基本问题之一,是由若干控制点及其相应像点坐标求解摄站参数(X S,Y S,ZS,ψ、ω、κ)。单像空间后方交会主要有三种方法:基于共线条件方程的平差解法、角锥法、基于直接线性变换的解法。而本文将介绍第一种方法,基于共线条件方程反求象片的外方位元素。 而空间前方交会先以单张像片为单位进行空间后方交会,分别求出两张像片的外方位元素,再根据待定点的一对像点坐标,用空间前方交会的方法求解待定点的地面坐标。可以说,这种求解地面点的坐标的方法是以单张像片空间后方交会为基础的,因此,单张像片空间后方交会成为解决这两个问题以及算法程序实现的关键。

1.单像空间后方交会的算法程序实现: (1)空间后方交会的基本原理:对于遥感影像,如何获取像片的外方位元素,一直是摄影测量工作者探讨的问题,其方法有:利用雷达(Radar)、全球定位系统(GPS)、惯性导航系统(I N S)以及星像摄影机来获取像片的外方位元素;也可以利用一定数量的地面控制点,根据共线方程,反求像片的外方位元素,这种方法称为单像空间后方交会(如图1所示)。 图中,地面坐标X i、Yi、Zi和对应的像点坐标x i、yi是已知的,外方位元素XS、Y S、ZS(摄站点坐标),ψ、ω、κ(像片姿态角)是待求的。 (2)空间后方交会数学模型:空间后方交会的数学模型是共线方程, 即中心投影的构像方程: 式中X、Y、Z是地面某点在地面摄影测量坐标系中的坐标,x,y是该地面点在像片上的构像点的像片坐标,对 于空间后方交会而言它们是已知的,还有主距f是已知的。而9个方向余弦a 1,a 2,a3;b1,b 2,b 3;c 1,c2,c 3是未知的,具体表达式可以取

利用C语言图形函数绘图

计算机图形学课程实 验 报 告 实验题目 班 级 姓 名 学 号 指导教师 日 期 西安理工大学理学院应用数学系 二零一二年春季学期 信息与计算科学专业基础课 Computer Graphics Report Of course experiment

实验说明 试验目的: 掌握TurboC 语言图形函数的使用和学会绘制一般图形。 试验地点: 教九楼401 数学系机房 实验要求(Direction ):1. 每个学生单独完成;2.开发语言为TurboC 或C++,也可使用其它 语言;3.请在自己的实验报告上写明姓名、学号、班级;4.每次交的实验报告内容包括:题目、试验目的和意义、程序制作步骤、主程序、运行结果图以及参考文件;5. 自己保留一份可执行程序,考试前统一检查和上交。 实验内容 实验题一 1.1实验题目 用如下图1所示,图中最大正n 边形的外接圆半径为R ,旋转该正n 边形,每次旋转θ角度,旋转后的的n 边形顶点落在前一个正六边形的边上,共旋转N 次,请上机编程绘制N+1个外接圆半径逐渐缩小且旋转的正n 边形。要求:(1) n 、R 、N 、θ要求可以人为自由控制输入;(2)N+1个正六边形的中心(即外接圆的圆心)在显示屏幕中心。 利用C 语言图形函数绘图 实验 1

1.2实验目的和意义 1. 了解如何利用C语言和图形函数进行绘图; 2. 熟悉并掌握C语言的图形模式控制函数,图形屏幕操作函数,以及基本图形函数; 3. 通过对Turbo C进行图形程序设计的基本方法的学习,能绘制出简单的图形; 4. 通过绘制N+1个正n边形,了解图形系统初始化、图形系统关闭和图形模式的控制,并熟练运用图形坐标的设置,包括定点、读取光标、读取x和y轴的最大值以及图形颜色的设置。 1.3程序制作步骤(包括算法思想、算法流程图等) 算法思想: 1.自动搜索显示器类型和显示模式,初始化图形系统,通过printf、scanf语句控制半径r、边数n、多边形的个数k、边的每次旋转角度d,的自由输入; 2.给定一内接圆半径r,由圆内接多边形的算法公式: x[i]=r*cos((i+1) *2.0*pi/n)+320.0 y[i]=240.0-r*sin(2.0*pi/n *(i+1)) 确定出多边形N的各个顶点坐标,然后利用划线函数line(),连接相邻两点,即形成一个正多边形。 3.根据边与角的关系,以及线段定比分点公式,可知旋转后的多边形的各个顶点的坐标。公式如下: x[i]=(x[i]+x[i+1]/(k+1)) y [i]=(y[i]+y[i+1]/(k+1)) k=360/(n*d) (n为多边形的边数,d为多边形旋转的度数) 然后与第二步相同,利用划线函数line(),连接形成又一个旋转过的正多边形,这样就形成了所要绘制的图形; 4.关闭图形系统。 1.4主程序 程序代码: /*----- 多边形的逐次旋转------*/ #include "stdio.h" #include "conio.h" #include "math.h"

单像空间前方交会实习报告

摄影测量学 单像空间后方交会实习报告 、管路敷设技术通过管线不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉时,应采用金属隔板进行隔开处理;同一线槽内强电回路须同时切断习题电源,线缆敷设完毕,要进行检查和检测处理。、电气课件中调试对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行 高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术问题,作为调试人员,需要在事前掌握图纸资料、设备制造厂家出具高中资料试卷试验报告与相关技术资料,并且了解现场设备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况 ,然后根据规范与规程规定,制定设备调试高中资料试卷方案。 、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷调试技术是指发电机一变压器组在发生内部故障时,需要进行外部电源高中资料试卷切除从而采用高中资料试卷主要保护装置。

C语言图形开发库函数graphics

函数名: fillellipse 功能: 画出并填充一椭圆 用法: void far fillellipse(int x, int y, int xradius, int yradius); 程序例: #include #include int main(void) { int gdriver = DETECT, gmode; int xcenter, ycenter, i; initgraph(&gdriver,&gmode,""); xcenter = getmaxx() / 2; ycenter = getmaxy() / 2; for (i=0; i<13; i++) { setfillstyle(i,WHITE); fillellipse(xcenter,ycenter,100,50); getch(); } closegraph(); return 0; } Graphics 类 .NET Framework 类库 Graphics 类 封装一个GDI+ 绘图图面。无法继承此类。 命名空间:System.Drawing 程序集:System.Drawing(在system.drawing.dll 中) 语法 Visual Basic(声明)

Public NotInheritable Class Graphics Inherits MarshalByRefObject Implements IDeviceContext, IDisposable Visual Basic(用法) Dim instance As Graphics C# public sealed class Graphics : MarshalByRefObject, IDeviceContext, IDisposable C++ public ref class Graphics sealed : public MarshalByRefObject, IDeviceContext, IDisposable J# public final class Graphics extends MarshalByRefObject implements IDeviceContext, IDisposable JScript public final class Graphics extends MarshalByRefObject implements IDeviceContext, IDisposable 备注 Graphics类提供将对象绘制到显示设备的方法。Graphics与特定的设备上下文关联。 通过调用从System.Windows.Forms.Control继承的对象的Control.CreateGraphics方法,或通过处理控件的Control.Paint事件并访问System.Windows.Forms.PaintEventArgs类的Graphics属性,可以获取Graphics。 继承层次结构 System.Object System.MarshalByRefObject System.Drawing.Graphics 线程安全 此类型的任何公共静态(Visual Basic 中的Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。 平台 Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

各算法经典例题

矩阵快速幂 hrbust1140 数字和问题 Description 定义一种操作为:已知一个数字,对其各位数字 反复求和,直到剩下的数是一位数不能求和为止。 例如:数字2345,第一次求和得到2 + 3 + 4 + 5 = 14,再对14的各位数字求和得到1 + 4 = 5,得到5将不再求和。 现在请你求出对a^b进行该操作后,求最终得到的数字. Input 第一行,包含两个数字a(0 <= a <= 2000000000)和b(1 <= b <= 2000000000) Output 输出对a^b进行操作后得到的数字是什么 #include #include #include #include #include #include using namespace std; int sum(int x) { return ((x+8)%9+1); } int g(int a,int k) { if(k==0) return 1; if(k==1) return a%9; if(k%2==0) return (g((a%9)*(a%9),k/2)%9); if(k%2==1) return (a%9)*(g((a%9),k-1)%9); } int main() { int a,k; while(scanf("%d%d",&a,&k)!=EOF) { if(a==0)printf("0\n"); else printf("%d\n",sum(g(a,k))); } }

摄影测量程序汇总(后方交会+前方交会+单模型光束法平差)

程序运行环境为Visual Studio2010.运行前请先将坐标数据放在debug 下。 1.单像空间后方交会 C语言程序: #include #include #include double *readdata(); void savedata(int hang,double *data,double *xishuarray,double *faxishu,double *l,int i,double xs,double ys,double zs,double fai,double oumiga,double kapa); void transpose(double *m1,double *m2,int m,int n); void inverse(double *a,int n); void multi(double *mat1,double * mat2,double * result,int a,int b,int c); void inverse(double *a,int n)/*正定矩阵求逆*/ { int i,j,k; for(k=0;k

利用C语言画图例子

利用C语言画图例子 1) /*#include // 就是需要引用这个图形库 #include void main() #include #include void main() { initgraph(640, 480); // 这里和 TC 略有区别 circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100 getch(); // 按任意键继续 closegraph(); // 关闭图形界面 printf("***\n"); } */ 2) /* #include #include #include void main() { // 设置随机函数种子 srand((unsigned) time(NULL)); // 初始化图形模式 initgraph(640, 480); int x, y; char c; setfont(16, 8, "Courier"); // 设置字体

while(!kbhit()) { for (int i=0; i<479; i++) { setcolor(GREEN); for (int j=0; j<3; j++) { x = (rand() % 80) * 8; y = (rand() % 20) * 24; c = (rand() % 26) + 65; outtextxy(x, y, c); } setcolor(0); line(0,i,639,i); Sleep(10); if (kbhit()) break; } } // 关闭图形模式 closegraph(); } */ 3) /* #include #include #include

统计及概率经典例题(含答案和解析)

○…………外…………○…………装…………○…………订…………○…………线…………○ ………… 学校: ___ ___ _ _ __ _姓名:___ _ __ ___ _ _班级:__ __ _ _ ___ _ _考号:_ _____ __ ___ ○ … … … … 内 … … … … ○ … … … … 装 … … … …○ … … … … 订… … … … ○ … ………线…………○………… 统计与概率经典例题(含答案及解析) 1.(本题8分)为了解学区九年级学生对数学知识的掌握情况,在一次数学检测中,从学区2000名九年级考生中随机抽取部分学生的数学成绩进行调查,并将调查结果绘制成如下图表: ⑴表中a 和b 所表示的数分别为:a= .,b= .; ⑵请在图中补全频数分布直方图; ⑶如果把成绩在70分以上(含70分)定为合格,那么该学区2000名九年级考生数学成绩为合格的学生约有多少名? 2.为鼓励创业,市政府制定了小型企业的优惠政策,许多小型企业应运而生,某镇统计了该镇1﹣5月新注册小型企业的数量,并将结果绘制成如下两种不完整的统计图: (1)某镇今年1﹣5月新注册小型企业一共有 家.请将折线统计图补充完整; (2)该镇今年3月新注册的小型企业中,只有2家是餐饮企业,现从3月新注册的小型企业中随机抽取2家企业了解其经营状况,请用列表或画树状图的方法求出所抽取的2家企业恰好都是餐饮企业的概率. 3.(12分)一个不透明的口袋装有若干个红、黄、蓝、绿四种颜色的小球,小球除颜色外完全相同,为估计该口袋中四种颜色的小球数量,每次从口袋中随机摸出一球记下颜色并放回,重复多次试验,汇总实验结果绘制如图不完整的条形统计图和扇形统计图.

后方交会

后方交会-解释是工程测量中一种比较常用的一种测量方法.主要是通过两个或多已知点测量一个未知点. 测角定位-正文利用测角仪器观测角度,以确定被测点位置的一种方法。一般观测两个角,则有两条位置线,两线交点即为被测点位置。在海洋测量中,测角定位通常使用的方法有:后方交会法,一般使用三标两角法,有时使用四标三角法,即在被测点上使用测角仪器观测3个或4个已知目标之间的夹角来确定点位;前方交会法,在两个或两个以上已知点上用测角仪器同时观测各已知点到某一被测点的夹角来确定点位;侧方交会法,综合使用后方交会法和前方交会法来实现定位的方法。另外,还有一距离一方位法,也是通过测角测定方位和距离实现定位的。因为测角仪器大部分是目视光学仪器,所以作用距离近,只适于近岸测量使用。 控制测量-正文在一定的区域内为地形测图或工程测量建立控制网(区域控制网)所进行的测量工作。分为平面控制测量和高程控制测量。平面控制网与高程控制网一般分别单独布设,也可以布设成三维控制网。 控制网具有控制全局,限制测量误差累积的作用,是各项测量工作的依据。对于地形测图,等级控制是扩展图根控制的基础,以保证所测地形图能互相拼接成为一个整体。对于工程测量,常需布设专用控制网,作为施工放样和变形观测的依据。 平面控制网常用三角测量、导线测量、三边测量和边角测量等方法建立。 三角测量是建立平面控制网的基本方法之一。但三角网(锁)要求每点与较多的邻点相互通视,在隐蔽地区常需建造较高的觇标。 导线测量布设简单,每点仅需与前后两点通视,选点方便,特别是在隐蔽地区和建筑物多而通视困难的城市,应用起来方便灵活。随着电磁波测距仪的发展,导线测量的应用日益广泛。 三边测量要求丈量网中所有的边长。应用电磁波测距仪测定边长后即可进行解算。此法检核条件少,推算方位角的精度较低。 边角测量法既观测控制网的角度,又测量边长。测角有利于控制方向误差,测边有利于控制长度误差。边角共测可充分发挥两者的优点,提高点位精度。在工程测量中,不一定观测网中所有的角度和边长,可以在测角网的基础上加测部分边长,或在测边网的基础上加测部分角度,以达到所需要的精度。 小三角测量是在小测区建立平面控制网的一种方法,它多用于小测区的首级平面控制或三、四等三角网以下的加密,作为扩展直接用于地形测图的图根控制网(点)的基础。此外,交会定点法也是加密平面控制点的一种方法。在2个以上已知点上对待定点观测水平角,而求出待定点平面位置的,称为前方交会法;在待定点对3个以上已知点观测水平角,而求出待定

图形推理经典例题及答案解析真题

【题型】单选题 【题干】把下面的六个图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是: 【选项】 A.①③④,②⑤⑥ B.①③⑥,②④⑤ C.①④⑥,②③⑤ D.①③⑤,②④⑥ 【答案】C 【解析】属性类。1、4、6轴对称,2、3、5中心对称。 故正确答案为C。 【题型】单选题 【题干】把下面的六个图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是: 【选项】 A.①⑤⑥,②③④ B.①③⑤,②④⑥ C.①②③,④⑤⑥ D.①②⑥,③④⑤ 【答案】B 【解析】1、3、5是曲线,2、4、6是直线。 故正确答案为B。 【题型】单选题 【题干】把下面的六个图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是:

【选项】 A.①②③,④⑤⑥ B.①⑤⑥,②③④ C.①②④,③⑤⑥ D.①④⑥,②③⑤ 【答案】C 【解析】考查数量类。1、2、4是一个整体,3、5、6图形是分开的。 故正确答案为C。 【题型】单选题 【题干】把下面的六组图形分为两类,使每一类图形都有各自的共同特征或规律,分类正确的一项是: 【选项】 A.①④⑥,②③⑤ B.①③⑥,②④⑤ C.①③④,②⑤⑥ D.①②④,③⑤⑥ 【答案】A 【解析】考查样式类。1、4、6右边的大图形,在左边的图形的里面,2、3、5左边的大图形在右边的里面。 故正确答案为A。

【题型】单选题 【题干】从所给的四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性: 【选项】 A.A B.B C.C D.D 【答案】C 【解析】本题属于位置类,题干中每行图形都在逆时针旋转,且每行中第一和第二个图形眼睛旋转后再发生翻转,嘴只是发生旋转,第二和第三个图形眼睛只发生旋转,嘴旋转后再发生翻转。所以选择C选项。 故正确答案为C。

C语言中绘图的函数库全解

C语言中绘图的函数库 图形和图像函数包含在graphics.h里面 (一) 像素函数 56. putpiel() 画像素点函数 57. getpixel()返回像素色函数 (二) 直线和线型函数 58. line() 画线函数 59. lineto() 画线函数 60. linerel() 相对画线函数 61. setlinestyle() 设置线型函数 62. getlinesettings() 获取线型设置函数 63. setwritemode() 设置画线模式函数 (三)、多边形函数 64. rectangle() 画矩形函数 65. bar() 画条函数 66. bar3d() 画条块函数 67. drawpoly() 画多边形函数 (四)、圆、弧和曲线函数 68. getaspectratio()获取纵横比函数 69. circle()画圆函数 70. arc() 画圆弧函数 71. ellipse()画椭圆弧函数 72. fillellipse() 画椭圆区函数 73. pieslice() 画扇区函数 74. sector() 画椭圆扇区函数 75. getarccoords()获取圆弧坐标函数 (一) 像素函数 56. putpixel() 画像素点函数 功能:函数putpixel() 在图形模式下屏幕上画一个像素点。 用法:函数调用方式为void putpixel(int x,int y,int color); 说明:参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。 此函数相应的头文件是graphics.h 返回值:无 例:在屏幕上(6,8)处画一个红色像素点: putpixel(6,8,RED); (二) 直线和线型函数

概率统计例题及练习题(答案)

第八讲 概率统计 【考点透视】 1.了解随机事件的发生存在着规律性和随机事件概率的意义. 2.了解等可能性事件的概率的意义,会用排列组合的基本公式计算一些等可能性事件的概率. 3.了解互斥事件、相互独立事件的意义,会用互斥事件的概率加法公式与相互独立事件的概率乘法公式计算一些事件的概率. 4.会计算事件在n 次独立重复试验中恰好发生k 次的概率. 5. 掌握离散型随机变量的分布列. 6.掌握离散型随机变量的期望与方差. 7.掌握抽样方法与总体分布的估计. 8.掌握正态分布与线性回归. 【例题解析】 考点1. 求等可能性事件、互斥事件和相互独立事件的概率 解此类题目常应用以下知识: (1)等可能性事件(古典概型)的概率:P (A )=)()(I card A card =n m ; 等可能事件概率的计算步骤: ① 计算一次试验的基本事件总数n ; ② 设所求事件A ,并计算事件A 包含的基本事件的个数m ; ③ 依公式()m P A n =求值; ④ 答,即给问题一个明确的答复. (2)互斥事件有一个发生的概率:P (A +B )=P (A )+P (B ); 特例:对立事件的概率:P (A )+P (A )=P (A +A )=1. (3)相互独立事件同时发生的概率:P (A ·B )=P (A )·P (B ); 特例:独立重复试验的概率:P n (k )=k n k k n p p C --)1(.其中P 为事件A 在一次试验中发生的概率,此式为二项式[(1-P)+P]n 展开的第k+1项. (4)解决概率问题要注意“四个步骤,一个结合”:

① 求概率的步骤是: 第一步,确定事件性质???? ???等可能事件 互斥事件 独立事件 n 次独立重复试验 即所给的问题归结为四类事件中的某一种. 第二步,判断事件的运算?? ?和事件积事件 即是至少有一个发生,还是同时发生,分别运用相加或相乘事件. 第三步,运用公式()()()()()()()()(1) k k n k n n m P A n P A B P A P B P A B P A P B P k C p p -? =???+=+? ??=??=-??等可能事件: 互斥事件: 独立事件: n 次独立重复试验:求解 第四步,答,即给提出的问题有一个明确的答复. 例1.在五个数字12345,,,,中,若随机取出三个数字,则剩下两个数字都是奇数的概率是 (结果用数值表示). [考查目的]本题主要考查概率的概念和等可能性事件的概率求法. [解答过程]0.3提示:1 33 5 C 33.54C 10 2 P ===? 例2.一个总体含有100个个体,以简单随机抽样方式从该总体中抽取一个容量为5的样本,则指定的某个个体被抽到的概率为 . [考查目的]本题主要考查用样本分析总体的简单随机抽样方式,同时考查概率的概念和等可能性事件的概率求法. 用频率分布估计总体分布,同时考查数的区间497.5g~501.5的意义和概率的求法. [解答过程]1.20 提示:51.10020P == 例3从自动打包机包装的食盐中,随机抽取20袋,测得各袋的质量分别为(单位:g ): 492 496 494 495 498 497 501 502 504 496 497 503 506 508 507 492 496 500 501 499 根据的原理,该自动包装机包装的袋装食盐质量在497.5g~501.5g 之间的概率约为__________. [考查目的]本题主要考查用频率分布估计总体分布,同时考查数的区间497.5g~501.5的意义和概率的求法.

空间后方交会程序

空间后方交会程序

————————————————————————————————作者:————————————————————————————————日期: ?

一. 实验目的: 掌握摄影测量空间后方交会的原理,利用计算机编程语言实现空间 后方交会外方位元素的解算。 二. 仪器用具及已知数据文件: 计算机wind ows xp 系统,编程软件(VI SUA L C ++6.0),地面控 制点在摄影测量坐标系中的坐标及其像点坐标文件shu ju.txt 。 三. 实验内容: 单张影像的空间后方交会:利用已知地面控制点数据及相应像点坐标根据 共线方程反求影像的外方位元素。 数学模型:共线条件方程式: ) (3)(3)(3) (1)(1)(1Zs Z c Ys Y b Xs X a Zs Z c Ys Y b Xs X a f x -+-+--+-+--= ) (3)(3)(3)(2)(2)(2Zs Z c Ys Y b Xs X a Zs Z c Ys Y b Xs X a f y -+-+--+-+--= 求解过程: (1)获取已知数据。从航摄资料中查取平均航高与摄影机主距;获取 控制点的地面测量坐标并转换为地面摄影测量坐标。 (2)量测控制点的像点坐标并做系统改正。 (3)确定未知数的初始值。在竖直摄影且地面控制点大致分布均匀 的情况下,按如下方法确定初始值,即: n X X S ∑=0,n Y Y S ∑=0,n Z mf Z S ∑=0 φ =ω=κ=0 式中;m为摄影比例尺分母;n为控制点个数。 (4)用三个角元素的初始值,计算个方向余弦,组成旋转矩阵R 。 (5)逐点计算像点坐标的近似值。利用未知数的近似值和控制点的地面坐标代入共 线方程式,逐点计算像点坐标的近似值(x )、(y )。 (6)逐点计算误差方程式的系数和常数项,组成误差方程式。 (7)计算法方程的系数矩阵A A T 和常数项l A T ,组成法方程式。 (8)解法方程,求得外方位元素的改正数dXs ,S dY ,s dZ ,d φ,dω,d κ。 (9)用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素的新值。

c语言基本画图函数

c语言基本画图函数 基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。1、画点 I画点函数void far putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。 在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640x480,其中640为整个屏幕从左到右所有象元的个数,480为整个屏幕从上到下所有象元的个数。屏幕的左上角坐标为(0,0),右下角坐标为(639, 479),水平方向从左到右为x 轴正向,垂直方向从上到下为y轴正向。TURBO C的图形函数都是相对于图形屏幕坐标,即象元来说的。 关于点的另外一个函数是:int far getpixel(int x, int y); 它获得当前点(x, y)的颜色值。 II、有关坐标位置的函数. int far getmaxx(void);返回x轴的最大值。 int far getmaxy(void); 返回y轴的最大值。 int far getx(void); 返回游标在x轴的位置。 void far gety(void); 返回游标有y轴的位置。 void far moveto(int x, int y); 移动游标到(x, y)点,不是画点,在移动过程中亦画点。 void far moverel(int dx, int dy); 移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置,移动过程中不画点。 2、画线 I. 画线函数 TURBO C提供了一系列画线函数,下面分别叙述: void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。 void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。 void far linerel(int dx, int dy); 画一条从现行游标(x,y)到按相对增量确定的点(x+dx, y+dy)的直线。 void far circle(int x, int y, int radius); 以(x, y)为圆心,radius为半径,画一个圆。 void far arc(int x, int y, int stangle, int endangle,int radius); 以(x,y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示)画一段圆弧线。 在TURBO C中规定x轴正向为0 度,逆时针方向旋转一周,依次为90,180, 270和360度(其它有关函数也按此规定,不再重述)。 void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)为中心,xradius,yradius为x轴和y轴半径,从角stangle 开始到endangle结束画一段椭圆线,当stangle=0,endangle=360时,画出一个完整的椭圆。 void far rectangle(int x1, int y1, int x2, inty2); 以(x1, y1)为左上角,(x2, y2)为右下角画一个矩形框。void far drawpoly(int numpoints, int far *polypoints); 画一个顶点数为numpoints,各顶点坐标由polypoints给出的多边形。polypoints整型数组必须至少有2 倍顶点数个无素。每一个顶点的坐标都定义为x,y,并且x在前。值得注意的是当画一个封闭的多边形时,numpoints 的值取实际多边形的顶点数加一,并且数组polypoints中第一个和最后一个点的坐标相同。下面举一个用drawpoly()函数画箭头的例子。 #include #include int main() {

相关主题
文本预览
相关文档 最新文档