DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт про виконання лабораторної роботи № 4 з курсу «Моделювання»: Обробка результатів вимірювань за допомогою методів регуляризації

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2005
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Моделювання
Група:
КН-31
Коротко про документ

Про що ця робота

У лабораторній роботі досліджено відновлення форми вхідного сигналу за виміряними значеннями виходу лінійної системи. Розроблено програму на Delphi для реалізації методів регуляризації та обчислення LU-декомпозиції.

У роботі розглядаються

  • Моделювання систем
  • Методи регуляризації
  • Обробка результатів вимірювань
  • LU-декомпозиція
  • Дискретні значення сигналу
  • Програмна реалізація в Delphi

Зміст і розділи

  1. Мета роботи
  2. Завдання до роботи
  3. Текст програмної реалізації
  4. Приклад виконання програми
  5. Висновок
Для кого:Студенти технічних спеціальностей, які вивчають моделювання систем та обчислювальні методи.
Викладачі:Не вказано

Ключові поняття

регуляризаціясигналLU-декомпозиціялінійна системадискретні значенняпохибкаінтеграл нев'язкиалгоритмпрограмний кодчасова залежність

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 4 з курсу „ Моделювання ” Тема: Обробка результатів вимірювань за допомогою методів регуляризації. Львів – 2005 Мета роботи: Відновити форму вхідного сигналу за його виміряними дискретними значеннями, отриманими на виході лінійної системи. Завдання до роботи: Знайти часову залежність для вхідного сигналу , якщо відомо, що графік сигналу із виходу аналого-цифрового перетворювача має наступний вигляд:  Файл експериментальних даних знаходиться в таблиці. Кожен рядок файлу вимірювань складається із 2 числових значень – значення часу і відповідне йому значення напруги, виміряне за допомогою аналого-цифрового перетворювача. Як видно із графіка, сигнал дещо спотворений шумами вхідного підсилювача і перетворювача. В якості регуляризуючого функціоналу можна взяти наступні функції: а)  б)  За комплексний частотний коефіцієнт передачі підсилювача взяти наступне співвідношення:   Дана характеристика відповідає підсилювачу, який має лише один полюс частотної характеристики. Реальні підсилювачі, як правило, описуються значно складнішими співвідношеннями. При виконанні роботи необхідно визначити оптимальні значення параметрів регуляризації , враховуючи, що в вхідний сигнал підсилювача складається із суми прямокутних імпульсів. При застосуванні регуляризуючої функції типу 2б необхідно обчислити числові значення інтегралу нев’язки за наступними співвідношенням:   Для обчислення інтегралу можна скористатись формулами прямокутників або трапецій. Як приклад, наведемо залежність значень вхідного сигналу від часу без використання методів регуляризації (шляхом прямого застосування формули (4)) та відповідну залежність, знайдену із використанням регуляризуючого множника. Текст програмної реалізації unit Main; interface uses Math,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart; type TForm1 = class(TForm) BitBtn1: TBitBtn; Image1: TImage; BitBtn2: TBitBtn; Memo1: TMemo; Button1: TButton; Edit1: TEdit; Image2: TImage; Label1: TLabel; Label2: TLabel; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const Np=76; type ArrMatr=array[1..Np,1..Np] of Extended; var Form1: TForm1; VAH:array[1..2,1..Np] of Double=( {Ud,V}(1.0E-03,0.10101,0.20202,0.30303,0.40404,0.50505,0.60606,0.70707,0.80808,0.90909,1.0101,1.11111,1.21212,1.31313,1.41414,1.51515,1.61616,1.71717,1.81818,1.91919,2.0202,2.12121,2.22222,2.32323,2.42424,2.52525,2.62626,2.72727,2.82828,2.92929,3.0303,3.13131,3.23232,3.33333,3.43434,3.53535,3.63636,3.73737,3.83838,3.93939,4.0404,4.14141,4.24242,4.34343,4.44445,4.54545,4.64647,4.74747,4.84849,4.94949,5.05051,5.15151,5.25253,5.35353,5.45455,5.55556,5.65657,5.75758,5.85859,5.95960,6.06061,6.16162,6.26263,6.36364,6.46465,6.56566,6.66667,6.76768,6.86869,6.96970,7.07071,7.17172,7.27273,7.37374,7.47475,7.57576), {Id,A}(7.45457E-6,2.43832E-4,4.68852E-4,6.84301E-4,8.77114E-4,0.00108,0.00126,0.00144,0.0016,0.00176,0.0019,0.00204,0.00217,0.00228,0.00239,0.00249,0.00259,0.00267,0.00274,0.0028,0.00284,0.00289,0.00292,0.00295,0.00297,0.00298,0.00298,0.00297,0.00295,0.00292,0.00289,0.00284,0.00279,0.00273,0.00267,0.0026,0.00251,0.00243,0.00235,0.00225,0.00216,0.00207,0.00197,0.00187,0.00178,0.00167,0.00158,0.00149,0.00139,0.0013,0.00121,0.00112,0.00103,9.40321E-4,8.66034E-4,7.89536E-4,7.16527E-4,6.44088E-4,5.70496E-4,5.04513E-4,4.40479E-4,3.77542E-4,3.20819E-4,2.66671E-4,2.18542E-4,1.74533E-4,1.33869E-4,1.00213E-4,7.03066E-5,4.73798E-5,2.93464E-5,1.61997E-5,7.90947E-6,2.0467E-6,1.00E-09,1.00E-10)); (*VAH:array[1..2,1..Np] of Double=((1,2,3,4,5,6,7) ,(0.00087,0.00100,0.002,0.00290,0.00230,0.001,0.00050));*) B:ArrMatr; Y:array[1..Np] of Extended; A:array[1..Np] of Extended; L:ArrMatr; Z:array[1..Np] of Extended; Ub:Double; implementation procedure LUDecomposition(var A : ArrMatr; N : Integer; var L : ArrMatr);forward; {procedure LUDecomposition(var A : ArrMatr; N : Integer; var L : ArrMatr); var i : Integer; j : Integer; k : Integer; begin i:=1; while i<=n-1 do begin j:=i+1; while j<=n do begin A[j,i] := A[j,i]/A[i,i]; Inc(j); end; j:=i+1; while j<=n do begin k:=i+1; while k<=n do begin A[j,k] := A[j,k]-A[j,i]*A[i,k]; Inc(k); end; Inc(j); end; Inc(i); end; I:=1; while I<=N do begin L[I,I] := 1; J:=1; while J<=I-1 do begin L[I,J] := A[I,J]; A[I,J] := 0; Inc(J); end; J:=I+1; while J<=N do begin L[I,J] := 0; Inc(J); end; Inc(I); end; end; } procedure LUDecomposition(var A: ArrMatr; N : Integer; var L : ArrMatr); var i : Integer; j : Integer; k : Integer; q:Integer; sum:Double; begin for q:=1 to N-1 do begin i:=q; for j:=i+1 to N do begin sum:=0; for k:=1 to i-1 do sum:=sum+a[i,k]*a[k,j]; a[i,j]:=(a[i,j]-sum)/a[i,i]; end; j:=q+1; for i:=j to N do begin sum:=0; for k:=1 to j-1 do sum:=sum+a[i,k]*a[k,j]; a[i,j]:=a[i,j]-sum; end; end; for i:=1 to N do for j:=1 to N do begin L[i,j]:=a[i,j]; if j>i then L[i,j]:=0; end; for i:=1 to N do for j:=1 to N do begin if j=i then a[i,j]:=1; if j<i then a[i,j]:=0; end; end; {function power(Base, Exponent: Extended): Extended; var ex: extended; begin power := 0; if (exponent <> 0) and (frac(trunc((1 / exponent) * 1000000) / 1000000) = 0) and (base < 0) then begin if round(1 / exponent) mod 2 = 0 then exit; ex := Exp(Exponent * Ln(-Base)); power := -ex; end else begin if Exponent = 0.0 then power := 1.0 else if (Base = 0.0) and (Exponent > 0.0) then power := 0.0 else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then power := IntPower(Base, Integer(Trunc(Exponent))) else power := Exp(Exponent * Ln(Base)) end; end;} function myfun(x:double;num:Integer):double; var i:Integer; tmp:double; begin tmp:=0; for i:=1 to num do tmp:=tmp+A[i]*power(x,i-1); myfun:=tmp; end; procedure TForm1.BitBtn1Click(Sender: TObject); var x,y,i:Integer; begin Image1.Canvas.MoveTo(0,300); Image1.Canvas.Pen.Width:=2; for i:=1 to Np do begin x:=round(VAH[1,i]*100); y:=300-round(VAH[2,i]*1e5); Image1.Canvas.Pixels[x,y]:=clRed; Image1.Canvas.LineTo(x,y); Image1.Canvas.Pixels[x,y]:=clRed; end; Image1.Canvas.Pen.Color:=clRed; Image1.Canvas.Pen.Width:=2; Image1.Canvas.MoveTo(0,300); for i:=1 to Np do begin x:=round(VAH[1,i]*100); y:=300-round(myfun(VAH[1,i],Np)*1e5); Image1.Canvas.Pixels[x,y]:=clRed; Image1.Canvas.LineTo(x,y); Image1.Canvas.Pixels[x,y]:=clRed; end; end; procedure TForm1.BitBtn2Click(Sender: TObject); var i,j,ll,m:Integer; Ib:Double; num:Integer; str:String; begin Ib:=VAH[2,1]; num:=1; for i:=1 to Np do if (Ib<VAH[2,i]) then begin Ib:=VAH[2,i]; num:=i; end; Ub:=VAH[1,num]; for ll:=1 to Np do for m:=1 to Np do begin B[ll,m]:=0; Y[ll]:=0; for j:=1 to Np do begin B[ll,m]:=B[ll,m]+power(VAH[1,j]{-Ub},ll+m-2); //exp((l+m-2)*ln(VAH[1,j]-Ub)); Y[ll]:=Y[ll]+power(VAH[1,j]{-Ub},ll-1)*VAH[2,j]; //exp((l-1)*ln(VAH[1,j]-Ub))*VAH[1,j]; end; end; { B[1,1]:=2; B[1,2]:=4; B[1,3]:=-4; B[1,4]:=6; B[2,1]:=1; B[2,2]:=4; B[2,3]:=2; B[2,4]:=1; B[3,1]:=3; B[3,2]:=8; B[3,3]:=1; B[3,4]:=1; B[4,1]:=2; B[4,2]:=5; B[4,3]:=0; B[4,4]:=5;} LUDecomposition(B,Np,L); Z[1]:=Y[1]/L[1,1]; for i:=2 to Np do begin Z[i]:=0; for j:=1 to i-1 do Z[i]:=Z[i]+L[i,j]*Z[j]; Z[i]:=(Y[i]-Z[i])/L[i,i]; end; A[Np]:=Z[Np]; for i:=Np-1 downto 1 do begin A[i]:=0; for j:=i+1 to Np do A[i]:=A[i]+B[i,j]*A[j]; A[i]:=Z[i]-A[i]; end; str:=''; for i:=1 to Np do begin Memo1.Lines.Add(FloatToStr(A[i])); str:=str+'+('+FloatToStrF(A[i],ffFixed,10,5)+'*(x^'+IntToStr(i-1)+'))'; end; while Pos(',', str) > 0 do str[Pos(',', str)] := '.'; Edit1.Text:=str; end; procedure TForm1.Button1Click(Sender: TObject); const L = 10e-3; //10mH R = 5e+3; // 5k C = 1e-6; //1mkF V = 4.8; var i,j:Integer; tmp:double; T,ht,h,U,I1:double; begin T:=2*pi*sqrt(L*C); ht:=T/100; U:=V; h:=ht; Image1.Canvas.MoveTo(0,300); Image1.Canvas.Pen.Width:=2; {for i:=1 to 100 do begin I1:=I1+(h/L)*U; U:=U+(h/c)*(myfun(U,Np)-I1-U/R); Image1.Canvas.LineTo(round(h*10),300-round(U*50)); h:=h+ht; end; } t:=0; Image2.Canvas.MoveTo(0,85); for i:=1 to 500 do begin Image2.Canvas.LineTo(round(t*10),85-round(U*50)); t:=t+0.1; end; end; end. Приклад виконання програми  Висновок. На даній лабораторній роботі я відновив форму вхідного сигналу за його виміряними дискретними значеннями, отриманими на виході лінійної системи.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!