教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

9.一次完成增广最小二乘算法

来源:网络收集 时间:2026-05-16
导读: 含有算法说明,c语言源代码 9.一次完成增广最小二乘算法 (1)仿真模型为: z[i]=1.5*z[i–1]-0.7*z[i–2]+u[i–1]+0.5*u[i–2]+e[i] –e[i–1]+0.2*e[i–2] 采用一次完成增广最小二乘法辨识,并用依阶次递推方法辨识,AIC定阶,先辨识CAR模型,取得白噪声序

含有算法说明,c语言源代码

9.一次完成增广最小二乘算法

(1)仿真模型为:

z[i]=1.5*z[i–1]-0.7*z[i–2]+u[i–1]+0.5*u[i–2]+e[i] –e[i–1]+0.2*e[i–2]

采用一次完成增广最小二乘法辨识,并用依阶次递推方法辨识,AIC定阶,先辨识CAR模型,取得白噪声序列后,再辨识CARMA模型。本题所取白噪声和M序列如下。

白噪声:均值为0,方差为0.1,数据长度为600组。

M序列:n值取10,其长度为1023,起始位置可在0~423之间变化,本题取103或63及其他很少的几个值时对该题的二阶模型均能得到比较满意的结果。所得AIC值单调减少。在用高阶CAR模型辨识时,不管M序列的起始位置如何变化,其参数辨识结果基本一致, 且均为六阶的。

再用CARMA模型辨识时,其阶次会因为M序列的起始位置的变化而发生变化,用节省参数方法,当取为2阶时,参数结果的精度可以调整到比较满意的范围。

1)CAR模型辨识(见数据文件sita_模型一_CAR.txt)

AIC最终辨识结果为:

na=6

nb=6

a[i] b[i]

a[1]= -0.541499 b[1]= 0.997409

a[2]= -0.006262 b[2]= 1.446823

a[3]= 0.047862 b[3]= 1.191884

a[4]= 0.060221 b[4]= 0.840480

a[5]= -0.058811 b[5]= 0.485891

a[6]= 0.180226 b[6]= 0.126202

其各阶相应的AIC值如下:

AIC1= 262.404392

AIC2= -419.425129

AIC3= -515.421071

AIC4= -552.761728

AIC5= -563.429592

AIC6= -576.811710

2)CARMA模型辨识(见数据文件sita_模型一_CARMA.txt)

AIC最终辨识结果为:

na=2

nb=2

nc=2

a[i] b[i] c[i]

a[1]= -1.493742 b[1]= 1.000714 c[1]= -0.960678

a[2]= 0.693381 b[2]= 0.500283 c[2]= 0.140650

z[i]=1.5*z[i-1]-0.7*z[i-2]+u[i-1]+0.5*u[i-2]+e[i]-e[i-1]+0.2*e[i-2]

其各阶相应的AIC值:

AIC1= 266.721111

含有算法说明,c语言源代码

AIC2= -555.549342

(2)用仿真模型为:

z(k)–1.185z(k–1)+0.814z(k–2) –0.518z(k–3)+0.349z(k–4)-0.117z(k–5)

=1.08u(k–1) –0.745u(k–2)+0.475u(k–3) –0.253u(k–4)+0.123u(k–5)+e(k) –e(k–1)+0.2*e(k–2), 各阶的AIC值并不单调减少,而是有两个极小值点,后一个极小值是最小值。

取AIC值的第一个极小值为阶次递推结束的判断准则时(本程序中使用),用高阶CAR模型辨识时,参数基本一致,均为五阶;再用CARMA模型辨识时,其阶次随M序列的起始位置的变化而变化,基本为二阶(与噪声模型阶次相同)。

如果取最小值,即第二个极小值为阶次递推结束的判断准则,用高阶CAR模型辨识时,参数也基本一致,均为七阶。再用CARMA模型辨识时,其阶次随M序列的起始位置的变化而变化,或为二阶或为四阶。

取第一个极小值时最终结果如下。

1)CAR模型辨识(见数据文件sita_模型二_CAR.txt)

其各阶相应的AIC最终辨识结果为:

na=5

nb=5

a[i] b[i]

a[1]= -0.223720 b[1]= 1.078827

a[2]= 0.413757 b[2]= 0.281458

a[3]= -0.089438 b[3]= 0.535125

a[4]= 0.133208 b[4]= 0.215608

a[5]= -0.042686 b[5]= 0.154680

z(k)-1.185z(k-1)+0.814z(k-2)-0.518z(k-3)+0.349z(k-4)-0.117z(k-5)

=1.08u(k-1)-0.745u(k-2)+0.475u(k-3)-0.253u(k-4)+0.123u(k-5)+e(k)-e(k-1)+0.2*e(k-2),

其各阶相应的AIC值:

AIC1= -503.448058

AIC2= -512.867662

AIC3= -547.163204

AIC4= -574.337431

AIC5= -576.072235

2)CARMA模型辨识(见数据文件sita_模型二_CARMA.txt)

AIC最终辨识结果为:

na=2

nb=2

nc=2

含有算法说明,c语言源代码

a[i] b[i] c[i]

a[1]= -0.311358 b[1]= 1.082055 c[1]= -0.105349

a[2]= -0.046363 b[2]= 0.190831 c[2]= -0.508015

其各阶相应的AIC值:

AIC1= -500.816897

AIC2= -546.201025

虽然辨识参数及辨识出的阶次跟实际模型相差很大,但辨识出的模型输出却跟实际输出接近,CAR模型跟CARMA模型的输出结果尤其接近。(开始运行时输出的曲线为三种输出都有的曲线。当用鼠标左键在界面内双击时,可循环显示CAR模型与CARMA模型输出曲线、CARMA模型与实际模型输出曲线、实际模型与CAR模型输出曲线及三者全部显示的曲线。)

三组模型输出结果参见数据文件zzz.txt,e_CAR.txt表示CAR模型使用的白噪声与WhiteNoise2.txt相同,e_CARMA.txt表示CARMA模型使用的白噪声,由CAR模型辨识误差形成。U.txt为实际使用的M序列(Mserials.txt)的子序列(随起始位置的变化而不同),z.txt为模型输出。sita_模型、_CAR.txt和sita_模型、_CARMA.txt分别表示CAR模型和CARMA模型的辨识结果。

(3)源程序

// ELS_RO_AICDlg.cpp : implementation file

//

#include "stdafx.h"

#include "ELS_RO_AIC.h"

#include "ELS_RO_AICDlg.h"

#include "math.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

#define A 179

#define PAI 3.1415926

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

含有算法说明,c语言源代码

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX);

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

///////////////////////////////////////////////////////// …… 此处隐藏:13428字,全部文档内容请下载后查看。喜欢就下载吧 ……

9.一次完成增广最小二乘算法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1803901.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)