Автор работы: Пользователь скрыл имя, 26 Марта 2014 в 21:51, курсовая работа
Задачи курсовой работы включают:
− получение студентами навыков самостоятельной работы;
− освоение технологии разработки и отладки программ, реализующих модели технических объектов;
− более качественное изучение нормативных материалов – государственных стандартов и технических условий;
− более полное изучение базовых средств языков программирования и получение навыков постановки и решения различных задач с помощью ПЭВМ;
− изучение и использование сред численного моделирования и статистического анализа (MatLab, StatGraph и т.п.).
Введение …………………………………………………………………………5
Постановка задачи ………………………………………………………………6
Входные и выходные данные ……………………………………………………7
1. Идентификация объектов методом наименьших квадратов ………………8
2. Исследование разомкнутой линейной системы ……………………………19
3. Построение модели с распределенными параметрами ……………………28
4. Численные процедуры оценивания параметров
нелинейных регрессионных моделей ………………………………………………36
Заключение ……………………………
3.1 Исходные данные
Рассмотрим стержень из теплопроводящего материала с коэффициентом теплопроводности k. Предположим, что температура на концах стержня задана, а боковая поверхность стержня теплоизолирована. Пусть ось x направлена вдоль оси стержня, а его концы расположены в точках x=0 и x=L.
3.2 Общие теоретические сведения
Задача сводится к определению зависимости от времени t температуры u в точках стержня, то есть функции двух переменных u(x,t). Функция u(x,t) должна удовлетворять уравнению теплопроводности
(0<x<L), |
(3.1) |
начальному условию
u(x,0)=f(x), (0<x<L), |
(3.2) |
и условиям на концах стержня
u(0,t)=jj1(t), u(L,t)=jj2(t), (tVł0). |
(3.3) |
Значения u(0,0) и u(L,0), полученные из (2) и (3), должны совпадать. Это будет если jj1(0)=f(0), jj2(0)=f(L).
Следует отметить, что путем замены переменных t^˘=a2t уравнение (1) можно преобразовать к виду:
|
(3.4) |
Это означает, что решение задачи (3.1÷3.3) путем замены переменных сводится к решению задачи (3.4). Далее будем полагать а=1.
Построим на плоскости (x,t) сетку
с шагом h по переменной x
(xi=(i-1)h; i=1, …, n+1; h=L/n) и с
шагом tt по переменной
t (tj=(j-1)tt). Обозначим uij=u(xi,tj). Производные в уравнении (1)
аппроксимируем следующим образом:
|
(3.5) |
|
(3.6) |
Подставляя (3.5) и (3.6) в (3.1) при a=1, получим разностное уравнение:
|
(3.7) |
В соответствии с (3.2) и (3.3) значения
ui0=f(xi), u0j=jj1(tj), unj=jj2(tj) |
(3.8) |
являются известными. Тогда, подставляя в (3.7) j=0, получим систему n-1 линейных уравнений, решив которую можно определить ui1 (i=1, …, n-1). При этом, поскольку u01=jj1(t1), …, un1=jj2(t1), известными оказываются все значения временного слоя j=1, (t=t1). Затем, подставляя в (3.7) j=2, решаем систему уравнений относительно ui2 и т.д. для всех j=2, …, m.
Из (3.7) следует, что в каждое i-тое уравнение (i=1, …, n-1) с ненулевыми коэффициентами входят только три неизвестных (ui-1,j, uij, ui+1,j). Величина ui,j-1 к этому моменту является известной и потому отнесена в правую часть уравнения. Таким образом, матрица системы уравнений является трехдиагональной и эту систему можно решить методом прогонки. Для этого представим ее в стандартном виде:
(3.9)
Для данной задачи xi=uij, aai=ll, ggi=ll, bbi=1-2ll, bb0=1, gg0=0, jj0=u0j=jj1(tj), jjn=unj=jj2(tj), jji=-ui,j-1 (i=1, …, n-1).
Пусть на j-том шаге заданными являются
параметры
ui,j-1 (i=1, …, n-1), u0j, unj, ll. Все неизвестные значения
uij можно разместить в массиве
xi (xi=uij; i=0, …, n). Ищем связь xi-1 с xi в виде рекуррентного соотношения:
xi-1=cci-1xi+nni-1, i=1, …, n. |
(3.10) |
Подставляя (3.10) в (3.7), получаем:
llcci-1xi-(1+2ll)xi+llxi+1 = -ui,j-1-llnni-1. |
(3.11) |
Отсюда
|
(3.12) |
Сравнивая (3.12) с (3.10), находим рекуррентные соотношения:
,
|
(3.13) |
cc0=0, nn0=u0j.
Таким образом, алгоритм определения значений uij по известным ui,j-1 состоит из двух этапов: прямого хода прогонки по формулам (3.13) при (i=1, …, n-1) и обратного хода прогонки по формуле (3.10) при (i=n, …, 2).
а) |
б) |
Рис. 3.1. Шаблоны неявной (а) и явной (б) разностных схем
Необходимо отметить, что разностное уравнение (7) связывает одно известное значение Ui,j-1 (из предыдущего j-1 временного слоя) и три неизвестных (Ui,j, Ui-1,j, Ui+1,j). Поэтому найти значения Ui,j (i=1, …, n-1) можно только все сразу путем решения системы уравнений. Такая схема связи переменных в разностном уравнении называется неявной. Шаблон неявной разностной схемы представлен на рис. 3.1 (а).
Наряду с неявной возможна организация явной разностной схемы. Для этого вместо выражения (5) для первой разностной производной по времени используют формулу:
|
(3.14) |
Тогда разностное уравнение запишется в виде:
|
(3.15) |
В этом случае связываются три неизвестные значения, относящиеся к предыдущему временному слою (здесь j-тому) и только одно неизвестное Ui,j+1. Шаблон явной разностной схемы представлен на рис. 3.1 (б).
При использовании этой схемы неизвестные параметры определяются путем последовательного применения формулы (2.14) при i=1, …, n-1. Поскольку при этом не надо решать системы уравнений, то процесс определения параметров одного временного слоя требует меньших затрат времени, чем в случае неявной схемы.
Однако, неявная схема устойчива (ошибка не возрастает от шага к шагу) при любых значениях λ=τ/h2. Явная схема является устойчивой только при λ <1/2. В противном случае развивается экспоненциальный рост погрешности так, что обычно происходит аварийная остановка ЭВМ по переполнению порядка. Поэтому при использовании явной схемы вычисления приходится вести с очень малым шагом по времени.
В случае применения неявной схемы затраты машинного времени для расчета одного временного слоя больше, но возможность выбора значительно большего шага по времени t может обеспечить общее ускорение процесса расчета по сравнению с явной схемой.
При выполнении данной работы будем предполагать, что температура на концах стержня поддерживается постоянной
jj1(t)Tşf(0), jj2(t)Tşf(L).
3.3 Решение задачи для исходных данных
Решить смешанную задачу для уравнения теплопроводности с начальными u(x,0)=f(x) и граничными условиями u(0,t)=f(0), u(1,t)=b, L=1.
№ |
а |
b |
c |
d |
f(x) |
1 |
1,1 |
3 |
0,05 |
Текст программы
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//----------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//----------------------------
#define a 14
#define b 16
#define c 0.25
#define d 0.5
#define N 20
#define L 1
#define tau 60
#define ro 7800
#define lam 46
#define c_f 460
#define t_max 3000
float T[N+1],alpha[N+1],beta[N+1],
float A[N+1],C[N+1],B[N+1],F[N+1];
float h_iav,tau_iav,a_iav,T_iav[N+1]
float funkf(float x)
{
float m;
if(x>=0)
{
if(x<c)
{
m=a-(x/c)*a;
}
else
if(x<d)
{
m=0;
}
else
}
return(m);
}
void start_heat_field(float h)
{
for(int i=1;i<=N;i++)
T[i]=funkf(h*(i-1));
}
void neiavnii_metod_start(){
h=(float)L/(float)(N);
start_heat_field(h);
for(int i=1;i<=N;i++)
Form1->Series1->AddXY(h*i,T[i]
}
void neiavnii_metod_calc(){
time1=time1+tau;
alpha[1]=0;
beta[1]=funkf(0);
for (int i=2;i<=N-1;i++){
A[i]=C[i]=lam/(h*h);
B[i]=(2*lam)/(h*h)+(ro*c_f)/
F[i]=-((ro*c_f)/tau)*T[i];
alpha[i]=A[i]/(B[i]-C[i]*
beta[i]=(C[i]*beta[i-1]-F[i])/
}
T[N]=funkf(L-0.0000001);
for (int i=N-1;i>=2;i--){
T[i]=(A[i]/(B[i]-C[i]*alpha[i]
Form1->Series1->Clear();
T[0]=funkf(0.0000001);
for(int i=1;i<=N;i++)
Form1->Series1->AddXY(h*i,T[i]
}
}
void iavnii_metod_start(){
a_iav=lam/(ro*c);
tau_iav=(h*h)/(4*a_iav);
for(int i=1;i<=N;i++)
T_iav[i]=funkf(h*(i-1));
for(int i=1;i<=N;i++)
Form1->Series2->AddXY(h*i,T_
T_iav[1]=funkf(0.0000001);
T_iav[N]=funkf(L-0.0000001);
}
void iavnii_metod_calc(){
time_iav=time_iav+tau_iav;
for(int i=1;i<=N+1;i++)
TT_iav[i]=T_iav[i];
for(int i=2;i<=N-1;i++)
T_iav[i]=TT_iav[i]+((lam*tau_
Form1->Series2->Clear();
for(int i=1;i<=N;i++)
Form1->Series2->AddXY(h*i,T_
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
neiavnii_metod_start();
iavnii_metod_start();
}
//----------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
time1=0;
neiavnii_metod_start();
iavnii_metod_start();
while (time1<t_max){
neiavnii_metod_calc();
iavnii_metod_calc();
}
Label1->Caption="Time= "+FloatToStr(time1);
}
//----------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
time1=0;
neiavnii_metod_start();
iavnii_metod_start();
while (time1<TrackBar1->Position*
neiavnii_metod_calc();
iavnii_metod_calc();
}
Label1->Caption="Time= "+FloatToStr(time1);
}
//----------------------------
Вывод:
В процессе разработки программы были изучены явный и неявный методы конечных разностей. По уравнению теплопроводности программа моделирует процесс нагрева стержня.
Задание 4. Численные процедуры оценивания параметров нелинейных регрессионных моделей.
Метод Ньютона, алгоритм Ньютона (также известный как метод касательных) − это итерационный численный метод нахождения корня (нуля) заданной функции. Поиск решения осуществляется путем построения последовательных приближений и основан на принципах простой итерации. Метод обладает квадратичной сходимостью. Улучшением метода является метод хорд и касательных. Также метод Ньютона может быть использован для решения задач оптимизации, в которых требуется определить нуль первой производной либо градиента в случае многомерного пространства.
Основная идея метода заключается в следующем: задается начальное приближение вблизи предположительного корня, после чего строится касательная к исследуемой функции в точке приближения, для которой находится пересечение с осью абсцисс. Эта точка и берется в качестве следующего приближения. И так далее, пока не будет достигнута необходимая точность.
Пусть − определена на отрезке и дифференцируемая на нем вещественно-значная функция. Тогда формула итеративного исчисления приближений может быть выведена следующим образом:
где
− угол наклона касательной
в точке
.
Следовательно, искомое выражение для имеет вид:
Итерационный процесс начинается с некоего начального приближения (чем ближе к корню, тем лучше, но если предположения о его нахождении отсутствуют, методом проб и ошибок можно сузить область возможных значений, применив теорему о промежуточных значениях).
Алгоритм:
1. Задается начальное приближение .
2. Пока не выполнено условие остановки, в качестве которого можно взять или (т.е. погрешность в нужных пределах), вычисляют новое приближение: .
Недостатки:
1. Если начальное приближение недостаточно близко к решению, то метод может не сойтись.
2. Если производная не непрерывна в точке корня, то метод может расходиться в любой окрестности корня.
3. Если не существует вторая производная в точке корня, то скорость сходимости метода может быть заметно снижена.
4. Если производная в точке корня равна нулю, то скорость сходимости не будет квадратичной, а сам метод может преждевременно прекратить поиск, и дать неверное для заданной точности приближение.
Информация о работе Идентификация и моделирование объектов автоматизации