Реферат: Побудова кривих регресій методом парабол
Название: Побудова кривих регресій методом парабол Раздел: Рефераты по астрономии Тип: реферат | |||||||||||||||||
Міністерство освіти України Львівський державний університет ім. І. Франка Факультет прикладної математики та інформатики Кафедра теорії оптимальних процесів . Звітпро виконання індивідуального завдання № 3 “Побудова кривих регресій методом парабол”з курсу "Теорія імовірностей та математична статистика"Виконав: студенти групи ПМП-32 Ковальський Д., Шевчук А. Керівник: Сеньо П.С. Львів – 1998 Теоритичні відомост і Лінійна залежність є найпростішою і в більшості випадків є початковим, першим наближенням до істини. Часто потрібно встановити більш адекватну залежність між компонентами наприклад двомірного випадкового вектора, яка як правило не лінійна. Так як у вибіркових данних присутні випадковості, то початковий вигляд нелінійної залежності можна приблизно уявити побудувавши на міліметровому папері сукупність точок Ми будемо шукати залежність у вигляді y = a0 + a1 x + … + ak xk , де а0 , …, аk – початкові моменти. Ця передумова обумовлюється теоремою Вейерштраса про наближення будь-якої функції многочленом відповідного степеня (многочленом Берштейна). Складність полягає в тому, що як правило в статистиці многочлени степеня k > 4 не використовуються, а початкові моменти вище четвертого дають великі похибки, а експериментальних данних багато, отже не можна провести многочлен який би проходив через всі вибіркові точки. Тому параболу будемо будувати таку, щоб сума квадратів відхилень вибіркових значень була найменшою. Розглянувши пари ( xi ,yi ) скористаємося формулами:
Найбільшу величину похибки при апроксимації початкових данних шукатимемо за наступною формулою: Приклад дії програми Початкові данні:
При виборі степеня k=1 результат отримано наступний: а0 = 0.36 а1 = 1.04 d = 4.776 Графік: При k=2: a0 = 1.3314; a1 = -0.9029; a2 = 0.4857; d= 1.4731 При k=3: a0 = 0.9614; a1 = 1.7488; a2 =-1.3643; a3 =-0.3083; d= 0.1041 При k=4: a0 = 1.2250; a1 = -0.1381; a2 =-0.0495; a3 =0.090; a4 =-0.0002; d= 0.7906 Текст програми (Borland Pascal 7.0):uses crt, graph; var xn,yn:array[1..30] of real; n:integer; chr:char; a: array [1..5] of real; function stepin (x:real; i:integer):real; var j:integer; temp:real; begin temp:=1; for j:=1 to i do begin temp:=temp*x; inc (i); end; stepin:=temp; end; procedure xyread; var fl:text; i:integer; begin TextBackground(3); TextColor(0); clrscr; assign (fl,'3.txt'); reset (fl); writeln ('Програма знаходження кривих регресiй методом парабол'); writeln ('Шевчук А., Ковальський Д. ПМП-32, 1998'); { writeln ('Esc for Exit');} writeln; writeln; writeln (' x', ' y'); writeln ; i:=1; while not EOF (fl) do begin read (fl,xn[i]); read (fl,yn[i]); writeln ('x[',i,']=',xn[i]:0:2,' ',' y','[',i,']=',yn[i]:0:2); inc (i); n:=i-1; end; writeln; writeln ('Тиснiть ENTER для продовження'); close (fl); repeat chr:=readkey; if ord(chr)=13 then break; until false; end; procedure obchysl; var k :integer; i,j,h:integer; sx: array [1..6] of real; sy: array [1..2] of real; sxy: array [1..3] of real; matr: array [1..5, 1..5] of real; b: array [1..5] of real; s: real; d:real; m,v:word; gd,gm,ch,cv:integer; x,y:real; chr:char; ex:boolean; {процедура ўнўцўалўзацў• системи кординат} procedure initgrah(m:word); var i:integer; begin setbkcolor(white); setcolor(magenta); ch:=getmaxx div 2 ; cv:=getmaxy div 2 ; line(1,cv,getmaxx,cv); line(getmaxx,cv,getmaxx-6,cv-3); line(getmaxx,cv,getmaxx-6,cv+3); line(ch,1,ch,getmaxy); line(ch,1,ch-3,6); line(ch,1,ch+3,6); i:=0; while ch+i*m<=getmaxx-6 do begin line(ch+i*m,cv+2,ch+i*m,cv-2); line(ch-2,cv+i*m,ch+2,cv+i*m); line(ch-i*m,cv+2,ch-i*m,cv-2); line(ch-2,cv-i*m,ch+2,cv-i*m); i:=i+1; end; end; begin writeln; writeln; writeln ('Крива регресii описуэться рiвнянням y=g(x), де'); writeln ('g(x)=a[0] + a[1]*x + ... + a[k]*x^k'); writeln ('Введiть cтепiнь k (k < = 4):'); readln (k); for i:=k+1 to 5 do a[i]:=0; for i:=1 to 6 do begin sx[i]:=0; for j:=1 to n do sx[i]:=sx[i] + stepin (xn[j], i); end; for i:=1 to 2 do begin sy[i]:=0; for j:=1 to n do sy[i]:=sy[i] + stepin (yn[j], i); end; for i:=1 to 3 do begin sxy[i]:=0; for j:=1 to n do sxy[i]:=sxy[i] + yn[j] * stepin (xn[j], i); end; b[1]:=sy[1]; for j:=2 to k+1 do matr[1,j]:=sx[j-1]; for i:=2 to k+1 do b[i]:=sxy[i-1]; for i:=2 to k+1 do for j:=1 to k+1 do matr[i,j]:=sx[j+i-2]; matr[1,1]:=n; { МЕТОД ГАУСА РОЗВ'ЯЗАННЯ С.Л.А.Р. } { прямий хiд методу гауса } for i:=1 to k do for j:=i+1 to k+1 do begin matr[j,i]:= -matr[j,i]/matr[i,i]; for h:=i+1 to k+1 do matr[j,h]:=matr[j,h]+matr[j,i]*matr[i,h]; b[j]:=b[j]+matr[j,i]*b[i]; end; { обернений хiд методу гауса } for i:=k+1 downto 1 do begin s:=b[i]; for j:=i+1 to k+1 do s:=s-a[j]*matr[i,j]; a[i]:=s/matr[i,i]; end; writeln ('Моменти:'); for i:=1 to k+1 do writeln ('a[',i-1,']=',a[i]:0:4); d:=sy[2]-a[1]*sy[1]-a[2]*sxy[1]-a[3]*sxy[2]-a[4]*sxy[3]; writeln ('Похибка:'); writeln ('d = ',d:0:4); writeln ('Enter для перегляду графiка'); repeat chr:=readkey; if ord(chr)=13 then break; until false; m:=50;v:=160;ex:=false; repeat gd:=detect; initgraph(gd,gm,''); initgrah(m); highvideo; setcolor(green); for i:=1 to n do begin line (round(ch+abs(xn[i]*m))-3, round(cv-yn[i]*m)+3,round(ch+abs(xn[i]*m))+3, round(cv-yn[i]*m)-3); line (round(ch+abs(xn[i]*m))+3, round(cv-yn[i]*m)+3,round(ch+abs(xn[i]*m))-3, round(cv-yn[i]*m)-3); end; setcolor(magenta); {лўва частина графўка} for i:=(-v) to 0 do begin x:=i/20; y:=a[1] + a[2]*x + a[3]*x*x + a[4]*x*x*x +a[5]*x*x*x*x; if abs(ch-abs(x)*m) <32500 then if abs(cv-y*m)<32500 then lineto(round(ch-abs(x)*m),round(cv-y*m)); end; {права частина графўка} for i:=0 to v do begin x:=i/20; y:=a[1] + a[2]*x + a[3]*x*x + a[4]*x*x*x +a[5]*x*x*x*x; if abs(ch+abs(x)*m) <32500then if abs(cv-y*m)<32500 then lineto(round(ch+abs(x)*m),round(cv-y*m)); end; outtextxy(30,30,'graphic'); {маштабування графўка} repeat chr:=readkey; case ord(chr) of {збўльшення графўка} 43:begin case m of 400:outtextxy(40,40,'no more big'); 10..390:begin m:=m+10; v:=20*trunc(400/m); break; end; end; end; {зменшення графўка} 45:begin case m of 10:outtextxy(40,40,'no more small'); 10..1000:begin m:=m-10; v:=20*trunc(400/m); break; end; end; end; {повернення в меню} 27:begin ex:=true; break; end; end; until false; closegraph; if ex=true then break; until false; closegraph; end; BEGIN xyread; obchysl; END. Список л і тератури 1. Крамер Гарольд. Математические методы статистики. М.: Мир, 1976. 2. Бух Арлей. Введение в теорию вероятностей и математическую статистику. М., 1951. |