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

📄 lsm.h

📁 改进的最小二乘法实现代码
💻 H
字号:
//最小二乘法类头文件
//Edit by Wang Shimin
//2004.8.1~~2004.8.24
//本文件为最新文件,修改于2006.3.12

// LSM.h: interface for the LSM class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LSM_H__07ACA719_134D_46C4_86F4_0D5B42CB28B6__INCLUDED_)
#define AFX_LSM_H__07ACA719_134D_46C4_86F4_0D5B42CB28B6__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "bndload.h"

class LSM  
{
public:
	void Compute();
	LSM();
	virtual ~LSM();

private:
	int m_numbndload;                  /* 反演涉及的边界荷载个数 */
	bndload * p_Bndload;               /* 反演涉及的边界荷载信息 */
	int * p_BAKindflag;                /* 反演种类项标志 */
	int * p_iparameter;                /* 反演材料种类项标志 */
	int * p_jparameter;                /* 反演材料性质项标志 */
	bool m_errorflag;     /* 误差标志变量 */
	double m_precision1;  /* 收敛精度1,目标值小于此值即可认为满足精度要求 */
	double m_precision2;  /* 收敛精度2,目标值增量与上一步目标值之比小于此值即可认为满足精度要求 */
	double * p_matrix4;   /* 存储系数阵的转置矩阵与目标矩阵的乘积矩阵 */
	double ** p_matrix3;  /* 存储系数阵与其转置矩阵的乘积矩阵的逆阵*/
	double ** p_matrix2;  /* 存储系数阵与其转置矩阵的乘积矩阵*/
	double ** p_matrix1;  /* 存储系数阵 */
	double * p_objvalue;  /* 存储目标值,计算值与观测值之间的差值 ,目标矩阵*/
	double  m_fitness;   /* 存储一组参数的适应值 */
	double * p_calculation;  /* 存储计算值 */
	double * p_observation;  /* 存储观测值 */
	double * p_variable;     /* 存储反演参数 */
	double * p_deltavariable;  /* 存储反演参数增量 */
	double m_stepcoefficient; /* 步长因子 */
	double * p_dampcoefficient;  /* 阻尼因子 */
	int m_numpoint;  /* 观测点的个数 */
	int m_numvar;   /* 待反演参数的个数 */
	int m_maxnumlap;  /* 反演的最大步数 */
	int m_numlap;    /* 计算循环步数 */    
	double m_delta;  /* 差分精度 */
	int m_precisionnum; /* 连续多少步不进化则终止 */
	double m_oldfitness; /* 保留上步优化结果 */

	bool   m_blErrorExit;					//error occur
private:
	void WriteResult();
	void ReadMEA();
	void ReadBAA();
	void ReadINP();

	void WriteToFem(double * pvariable);  /* 向文件中写参数 */
	void AdjustVariable();  /* 调节参数 */
	void Initialization(); /* 初始化函数 */
	bool Criterion();  /* 判别函数 */
	void ReverseMatrix(double ** inmatrix,double ** outmatrix,int number);  /* 计算矩阵的逆阵 */
	void CoefficientMatrix();  /* 计算系数阵 */
	void ObjFunction();  /* 求目标函数 */
	void ReadFromFem(double * calculatevalue);  /* 读取有限元计算结果 */
	void Calculate_Delta();   /* 计算反演参数的增量 */

};

#endif // !defined(AFX_LSM_H__07ACA719_134D_46C4_86F4_0D5B42CB28B6__INCLUDED_)

⌨️ 快捷键说明

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