Автор работы: Пользователь скрыл имя, 26 Марта 2014 в 21:51, курсовая работа
Задачи курсовой работы включают:
− получение студентами навыков самостоятельной работы;
− освоение технологии разработки и отладки программ, реализующих модели технических объектов;
− более качественное изучение нормативных материалов – государственных стандартов и технических условий;
− более полное изучение базовых средств языков программирования и получение навыков постановки и решения различных задач с помощью ПЭВМ;
− изучение и использование сред численного моделирования и статистического анализа (MatLab, StatGraph и т.п.).
Введение …………………………………………………………………………5
Постановка задачи ………………………………………………………………6
Входные и выходные данные ……………………………………………………7
1. Идентификация объектов методом наименьших квадратов ………………8
2. Исследование разомкнутой линейной системы ……………………………19
3. Построение модели с распределенными параметрами ……………………28
4. Численные процедуры оценивания параметров
нелинейных регрессионных моделей ………………………………………………36
Заключение ……………………………
Текст программы
//----------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double e=0.00000000000001,xz[4]={0,0,
//----------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
StringGrid1->Cells[0][0]="Y";
StringGrid1->Cells[1][0]="X1";
StringGrid1->Cells[2][0]="X2";
StringGrid1->Cells[3][0]="X3";
StringGrid1->Cells[0][1]="20,
StringGrid1->Cells[1][1]="8";
StringGrid1->Cells[2][1]="5";
StringGrid1->Cells[3][1]="1";
StringGrid1->Cells[0][2]="14,
StringGrid1->Cells[1][2]="2";
StringGrid1->Cells[2][2]="4";
StringGrid1->Cells[3][2]="3";
StringGrid1->Cells[0][3]="32,
StringGrid1->Cells[1][3]="4";
StringGrid1->Cells[2][3]="9";
StringGrid1->Cells[3][3]="7";
StringGrid1->Cells[0][4]="11,
StringGrid1->Cells[1][4]="2";
StringGrid1->Cells[2][4]="2";
StringGrid1->Cells[3][4]="4";
StringGrid1->Cells[0][5]="8,2"
StringGrid1->Cells[1][5]="2";
StringGrid1->Cells[2][5]="3";
StringGrid1->Cells[3][5]="1";
}
//----------------------------
double f(double b0,double b1,double b2,double b3){
double m;
m=(xz[0]-(b0+xz[1]*b1+xz[2]*
m=m*m;
return m;
}
bool check(double f,double xl1,double xl2,double xl3,double xl4,double x1,double x2,double x3,double x4)
{
if (f<e)
return true;
return false;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double h=0.00000001,x1=-1.5397,x2=1.
double Xl1,Xl2,Xl3,Xl4,proizv1,
xz[0]=0;xz[1]=0;xz[2]=0;xz[3]=
for (int i=1;i<6;i++){
xz[0]=xz[0]+StrToFloat(
xz[1]=xz[1]+StrToFloat(
xz[2]=xz[2]+StrToFloat(
xz[3]=xz[3]+StrToFloat(
}
xz[0]=xz[0]/5;xz[1]=xz[1]/5;
do{
proizv1=(f(x1,x2,x3,x4)-f(x1-
proizv2=(f(x1,x2,x3,x4)-f(x1,
proizv3=(f(x1,x2,x3,x4)-f(x1,
proizv4=(f(x1,x2,x3,x4)-f(x1,
Xl1=x1;Xl2=x2;Xl3=x3;Xl4=x4;
x1=Xl1-f(x1,x2,x3,x4)/proizv1;
x2=Xl2-f(x1,x2,x3,x4)/proizv2;
x3=Xl3-f(x1,x2,x3,x4)/proizv3;
x4=Xl4-f(x1,x2,x3,x4)/proizv4;
// Memo1->Lines->Add(FloatToStr(
}while (check(f(x1,x2,x3,x4),Xl1,Xl2,
Label1->Caption="b0= "+FloatToStr(x1);
Label2->Caption="b1= "+FloatToStr(x2);
Label3->Caption="b2= "+FloatToStr(x3);
Label4->Caption="b3= "+FloatToStr(x4);
double y;
Series1->Clear();
Series2->Clear();
for(int i=1;i<6;i++){
y=x1+StrToFloat(StringGrid1->
Series1->AddXY(i,y);
Series2->AddXY(i,StrToFloat(
}
}
//----------------------------
Вывод:
Освоен метод оптимизации Ньютона на примере регрессионного уравнения, посредством которого достигнута более высокая точность его коэффициентов.
Информация о работе Идентификация и моделирование объектов автоматизации