首页 > 试题

法平面方程

更新时间:2022-12-03 14:58:00 阅读: 评论:0

www7777ym-高原山地气候特点


2022年12月3日发(作者:什么是随笔)

平面方程拟合计算

平面方程的一般表达式为:

0DCzByAx,(0C)

C

D

y

C

B

x

C

A

z

记:

C

D

a

C

B

a

C

A

a

210

,,

则:

210

ayaxaz

平面方程拟合:

对于一系列的n个点)3(n:

1,,1,0),,,(nizyx

iii

要用点

1,,1,0),,,(nizyx

iii

拟合计算上述平面方程,则使:





1

0

2

210

n

i

zayaxaS

最小。

要使得S最小,应满足:2,1,0,0

k

a

S

k

即:







0)(2

0)(2

0)(2

210

210

210

iii

iiii

iiii

zayaxa

yzayaxa

xzayaxa

有,













iii

iiiiii

iiiiii

znayaxa

zyyayayxa

zxxayxaxa

210

2

2

10

21

2

0

或,







i

ii

ii

ii

iiii

iiii

z

zy

zx

a

a

a

nyx

yyyx

xyxx

2

1

0

2

2

解上述线形方程组,得:

210

,,aaa

即:

210

ayaxaz

其程序代码如下:

#include"stdafx.h"

#include

#include

#include

#defineMAX10

voidInver(double*matrix1[],double*matrix2[],intn,doubled);

doubleDeterminant(double*matrix[],intn);

doubleAlCo(double*matrix[],intjie,introw,intcolumn);

doubleCofactor(double*matrix[],intjie,introw,intcolumn);

int_tmain(intargc,_TCHAR*argv[])

{

doublearray[12][3],Y[3];

doubleA,B,C;

A=B=C=0.0;

ZeroMemory(array,sizeof(array));

ZeroMemory(Y,sizeof(Y));

for(inti=0;i<12;i++)

{

for(intj=0;j<3;j++)

{

array[i][j]=(double)rand();

}

}

for(inti=0;i<12;i++)

{

array[i][0]=1.0;

}//设计了12个最简单的数据点,x=1平面上的点,

double*Matrix[3],*IMatrix[3];

for(inti=0;i<3;i++)

{

Matrix[i]=newdouble[3];

IMatrix[i]=newdouble[3];

}

for(inti=0;i<3;i++)

{

for(intj=0;j<3;j++)

{

*(Matrix[i]+j)=0.0;

}

}

for(intj=0;j<3;j++)

{

for(inti=0;i<12;i++)

{

*(Matrix[0]+j)+=array[i][0]*array[i][j];

*(Matrix[1]+j)+=array[i][1]*array[i][j];

*(Matrix[2]+j)+=array[i][2]*array[i][j];

Y[j]-=array[i][j];

}

}

doubled=Determinant(Matrix,3);

if(abs(d)<0.0001)

{

printf("n矩阵奇异");

getchar();

return-1;

}

Inver(Matrix,IMatrix,3,d);

for(inti=0;i<3;i++)

{

A+=*(IMatrix[0]+i)*Y[i];

B+=*(IMatrix[1]+i)*Y[i];

C+=*(IMatrix[2]+i)*Y[i];

}

printf("nA=%5.3f,B=%5.3f,C=%5.3f",A,B,C);

for(inti=0;i<3;i++)

{

delete[]Matrix[i];

delete[]IMatrix[i];

}

getchar();

return0;

}

voidInver(double*matrix1[],double*matrix2[],intn,doubled)

{

inti,j;

for(i=0;i

matrix2[i]=(double*)malloc(n*sizeof(double));

for(i=0;i

for(j=0;j

*(matrix2[j]+i)=(AlCo(matrix1,n,i,j)/d);

}

doubleDeterminant(double*matrix[],intn)

{

doubleresult=0,temp;

inti;

if(n==1)

result=(*matrix[0]);

el

{

for(i=0;i

{

temp=AlCo(matrix,n,n-1,i);

result+=(*(matrix[n-1]+i))*temp;

}

}

returnresult;

}

doubleAlCo(double*matrix[],intjie,introw,intcolumn)

{

doubleresult;

if((row+column)%2==0)

result=Cofactor(matrix,jie,row,column);

elresult=(-1)*Cofactor(matrix,jie,row,column);

returnresult;

}

doubleCofactor(double*matrix[],intjie,introw,intcolumn)

{

doubleresult;

inti,j;

double*smallmatr[MAX-1];

for(i=0;i

smallmatr[i]=newdouble[jie-1];

for(i=0;i

for(j=0;j

*(smallmatr[i]+j)=*(matrix[i]+j);

for(i=row;i

for(j=0;j

*(smallmatr[i]+j)=*(matrix[i+1]+j);

for(i=0;i

for(j=column;j

*(smallmatr[i]+j)=*(matrix[i]+j+1);

for(i=row;i

for(j=column;j

*(smallmatr[i]+j)=*(matrix[i+1]+j+1);

result=Determinant(smallmatr,jie-1);

for(i=0;i

delete[]smallmatr[i];

returnresult;

}

本文发布于:2022-12-03 14:58:00,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/45033.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:屏障拼音
下一篇:手握法
标签:法平面方程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图