⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 间接平差.cpp

📁 间接平差计算程序
💻 CPP
字号:
// 间接平差.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdlib.h"
#include "math.h"
void matrixMultiply(double a[15][15],double b[15][15],double c[15][15],long m,long n,long k)
{
	for(long i=0; i<=m-1; i++)
	{
		for(long j=0;j<=k-1;j++)
		{ 
			c[i][j]=0.0;
			for(long i0=0;i0<=n-1;i0++)
			{
				c[i][j]=c[i][j]+a[i][i0]*b[i0][j];
			}
		}
	}
	return;
}
 double Zhuanzhi(double a[15][15], double b[15][15], long m,long n)
 {
	 {
     for(long i=0;i<m;i++)
          for(long j=0;j<n;j++)
             b[j][i]=a[i][j];
	 }
 return 0.0;
 }
long Juzhenqiuni(double a[15][15],long n)
{
	double a1,a2;
	for(long ii=0;ii<=n-1;ii++) a[ii][ii]+=1.0;
	for(long k=0;k<=n-1;k++)
	{
		a1=a[k][k]-1.0;
		for(long jj=0;jj<=n-1;jj++)
             a[k][jj]=a[k][jj]/a1;
		for(long i=0;i<=n-1;i++)
		{
			if(i==k) continue;
			a2=a[i][k];
			for(long j=0;j<=n-1;j++)
				a[i][j]-=a2*a[k][j];
		}
	}
	for(long i=0;i<=n-1;i++) a[i][i]-=1.0;
	return 2;
}
void Juzhenxiangjia(double a[15][15],double b[15][15],double c[15][15],long m,long n)
{
	for (long i=0;i<=m-1;i++)
		for(long j=0;j<=n-1;j++)
		{
			c[i][j]=a[i][j]+b[i][j];
        }

    return;
}
void Juzhenxiangjian(double a[15][15],double b[15][15],double c[15][15],long m,long n)
{
	for (long i=0;i<=m-1;i++)
		for(long j=0;j<=n-1;j++)
		{
			c[i][j]=a[i][j]-b[i][j];
        }

    return;
}
long main(int argc, char* argv[])
{   
	long r,n,i,j,m,t;
	double a[15][15],c[15][15],b[15][15],p[15][15],nbb[15][15],z[15][15],w[15][15],v1[15][15],v[15][15],l[15][15],l1[15][15],x[15][15];
	
		FILE *stream;
		stream=fopen("in.txt","r");//读取文件用,
		fscanf(stream,"%ld %ld",&r,&n);//调用in里面的数据
		for(i=0;i<r;i++)
	{
		for(j=0;j<n;j++)
		{
			fscanf(stream,"%lf",&a[i][j]);
		}
	}
		fscanf(stream,"%ld %ld",&t,&t);
	for(i=0;i<=t-1;i++)
	{
		for(j=0;j<=t-1;j++)
	{
			fscanf(stream,"%lf",&p[i][j]);
		}
	}
		fscanf(stream,"%ld %ld",&r,&m);	
	for(i=0;i<r;i++)
	{
		for(j=0;j<m;j++)
		{
			fscanf(stream,"%lf",&l[i][j]);
		}
	}
		fclose(stream);
		Zhuanzhi(a,b,r,n);
		matrixMultiply(b,p,c,r,t,t);
		matrixMultiply(c,a,nbb,t,t,t);
	for(i=0;i<=n-1;i++)
		for(long j=0;j<=n-1;j++)
			z[i][j]=nbb[i][j];
	    Juzhenqiuni(nbb,n);
	    matrixMultiply(b,p,l1,n,r,r);
	    matrixMultiply(l1,l,w,n,r,n);
	    matrixMultiply(nbb,w,x,n,n,n);
		matrixMultiply(a,x,v1,r,n,n);
	    Juzhenxiangjian(v1,l,v,r,n);
		stream=fopen("out.txt","w");	
	fprintf(stream,"法方程系数 Nbb 为:\n");
		for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			fprintf(stream,"%16e ",z[i][j]);
		}
		fprintf(stream,"\n");
	}
		fprintf(stream,"\n");
	fprintf(stream,"法方程系数的逆 Nbb- 为:\n");
		for(i=0;i<n;i++)

	{
			for(j=0;j<n;j++)
				{
					fprintf(stream,"%16e",nbb[i][j]);
				}
				fprintf(stream,"\n");
	}
		fprintf(stream,"\n");
		fprintf(stream," w 为:\n");
			for(i=0;i<=n-1;i++)

	{
			for(j=0;j<m;j++)
				{
					fprintf(stream,"%16e",w[i][j]);
				}
				fprintf(stream,"\n");
	}
			fprintf(stream,"\n");
			fprintf(stream," x 为:\n");
			for(i=0;i<=n-1;i++)

	{
			for(j=0;j<m;j++)
				{
					fprintf(stream,"%16e",x[i][j]);
				}
				fprintf(stream,"\n");
	}
			fprintf(stream,"\n");
			fprintf(stream,"改正数 v 为:\n");
			for(i=0;i<=r-1;i++)

	{
			for(j=0;j<m;j++)
				{
					fprintf(stream,"%16e",v[i][j]);
				}
				fprintf(stream,"\n");
	}
	fclose(stream);
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -