![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 23.11.2013
Сообщений: 2
|
![]()
Uses windows;
Type arrn=array[0..20] of real; Var i, j, jo, n, nob, k, p, nm : integer; a, b, c, b1, d1, d2, d3, sx, sy, sxy, sxx, sx3, sx3x, syxx, xp, di, ex, nu, fkr, zkr, w, pr, s1, s2, s3, kpk, diy, ma, mi, sd, mox, moy : real; x, y, dy, yr, yp, py, dp : arrn; f,o : text; stroka, FNAME : string; PROCEDURE Lin; BEGIN FOR i:=1 TO 70 DO WRITE (o,'-'); WRITelN(o); END; PROCEDURE ANALIZ; BEGIN di := 0; ex := 0; FOR i := 1 TO n DO BEGIN xp := x[i] + 1; IF k=1 THEN BEGIN yr[i] :=a+b*x[i]; yp[k] :=a+b*xp; END; IF k=2 THEN BEGIN yr[i] :=a*exp(b*ln(x[i]));yp[k] :=a*exp(b*ln(xp)); END; IF k=3 THEN BEGIN yr[i] :=a*exp(x[i]*ln(b));yp[k] :=a*exp(xp*ln(b)); END; IF k=5 THEN BEGIN yr[i] :=a+b*x[i]+c*sqr(x[i]); yp[k] :=a+b*xp+c*xp*xp; END; dy[i] := ABS(y[i] - yr[i]); py[i] := dy[i] * 100 / y[i]; ex := ex + py[i] / n; di := di + (y[i] - yr[i])*(y[i] - yr[i]) / (n-p); END; IF (di / diy) < 1 THEN nu := SQRt(1 - di / diy); IF di > 0 THEN fkr := diy / di; IF (1 - nu * nu) < 1 THEN zkr:=1/2*Ln(nu*nu /(1-nu*nu))*(n-p)/(p-1)ELSE zkr:=0; dp[k]:= yp[k]-y[n]; WRITE(o,ex:6:3,di:6:2,nu:7:3,fkr:7: 1,zkr:6:1); WRITE(o,yp[k]:7:1,dp[k]:7:3); IF (dp[k]<= ma) AND (dp[k]>=mi) THEN WRITElN(o,'<') ELSE WRITElN(o) ; END; BEGIN {-------- main --------------} FNAME :='lab1dan.txt' ; ASSIGN (f,FNAME); RESET(f); FNAME :='lab1otv.txt' ; ASSIGN (o,FNAME); REWRITE(o); READLN(f,n,nob); READLN(f,stroka); WRITE(o,'X :'); mox := 0; FOR i := 1 TO n DO BEGIN READ(f,x[i]); WRITE(o,x[i]:6:1); mox := mox + x[i] / n; END; WRITELN(o); READLN(f); READLN(f,stroka); FOR jo:=1 TO nob DO BEGIN WRITELN(o,'Объект',jo:2); WRITE(o,'Y :'); moy :=0; FOR i := 1 TO n DO BEGIN READ(f,y[i]); WRITE(o,y[i]:6:1); moy := moy + y[i] / n; END; WRITELN(o); WRITE(o, 'dY: '); dy[1] := 0; y[0] := 0; ma := -100; mi := 100; sd := 0; FOR i := 2 TO n DO BEGIN dy[i] := y[i] - y[i-1]; sd := sd + dy[i] / (n-1); WRITE(o, dy[i]:6:1); IF ma <= dy[i] THEN ma := dy[i]; IF mi >= dy[i] THEN mi := dy[i]; END; WRITELN(o); WRITELN(o); WRITELN(o, 'Max Cp Min'); WRITELN(o, ma:5:2,' ', sd:5:2,' ', mi:5:2); s1 := 0; s2 := 0; s3 := 0; FOR i := 1 TO n DO BEGIN s1 := s1 + (y[i] - moy) * (x[i] - mox); s2 := s2 + (y[i] - moy) * (x[i] - moy); s3 := s3 + (y[i] - mox) * (x[i] - mox); END; kpk := s1 / SQRt(s2 * s3); diy := 0; FOR i := 1 TO n DO diy := diy + (y[i] - moy)*(y[i] - moy) / (n-1); WRITE(o, 'Коэффициент парн корр - ', kpk:6:3, ' '); WRITELN(o, 'Дисперсия У - ', diy:5:2); Lin; WRITE(o, 'МОДЕЛЬ СР.ОШ ДИ__ОСТ'); WRITELN(o,' KOP_O F_KP Z_Kp ПРО ДПРО '); Lin; {МОДЕЛЬ 1} k:= 1; p:= 2; sx:= 0; sy:= 0; sxy:= 0; sxx:=0; FOR i := 1 TO n DO BEGIN sx := sx + x[i]; sy := sy + y[i]; sxy := sxy + x[i] * y[i]; sxx := sxx + x[i] * x[i]; END; b := (sx * sy - n * sxy) / (sx * sx - n * sxx); a := (sy - b * sx) / n; WRITE(o, 'Y=', a:5:3, '+', b:5:3, '*x '); ANALIZ; {Модель 2} k:= 2; sx:= 0; sy:= 0; sxy:= 0; sxx:=0; FOR i := 1 TO n DO BEGIN sx := sx + Ln(x[i]); sy := sy + Ln(y[i]); sxy := sxy + Ln(x[i]) * Ln(y[i]); sxx := sxx + Ln(x[i]) * Ln(x[i]); END; b := (sx * sy - n * sxy) / (sx * sx - n * sxx); a := EXP((sy - b * sx) / n); WRITE(o, 'Y=' ,a:5:3, '*x[i]^' ,b:5:3, ' '); ANALIZ; |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 23.11.2013
Сообщений: 2
|
![]()
{Модель 3} k:= 3; sx:= 0; sy:= 0; sxy:= 0; sxx:=0;
FOR i := 1 TO n DO BEGIN sx := sx + x[i]; sy := sy + Ln(y[i]); sxy := sxy + x[i] * Ln(y[i]); sxx := sxx + x[i] * x[i]; END; b1 := (sx * sy - n * sxy) / (sx * sx - n * sxx); b := EXP(b1); a := EXP ((sy - b1 * sx) / n); WRITE(o, 'Y=' ,a:5:3, '*' ,b:5:3, '^x[i] '); ANALIZ; {МОДЕЛЬ 5} k :=5; p := 3; sx := 0; sy := 0; sxy := 0; sxx := 0; sx3 := 0; sx3x := 0; syxx := 0; FOR i := 1 TO n DO BEGIN sx := sx + x[i]; sy := sy + y[i]; sxy := sxy + x[i] * y[i]; sxx := sxx + x[i] * x[i]; sx3 := sx3 + x[i] * x[i] * x[i]; sx3x := sx3x + x[i] * x[i] * x[i] * x[i]; syxx := syxx + y[i] * x[i] * x[i]; END; d1 := n * sx3 - sx * sxx; d2 := n * sxx - sx * sx; d3 := (n * syxx - sy * sxx + d1*(sx * sy - n * sxy)/d2); c := d3 / (n * sx3x - sxx * sxx - d1 * d1 / d2); b := (n * sxy - sx * sy - c * d1) / d2; a := (sy - sx * b - sxx * c) / n; WRITE(o, 'Y=' ,a:5:3, '+' ,b:5:1, 'X+' ,c:5:3, '*X2'); ANALIZ; Lin; nm := 0; w := 1000; FOR k := 1 TO 5 DO BEGIN IF (dp[k] <= ma) AND (dp[k] >= mi) AND (w >= ex) THEN BEGIN nm := k; w := ex; END; END; IF nm > 0 THEN BEGIN WRITE(o, 'МОДЕЛЬ ', nm); WRITELN (o, ' -> ПРОГНОЗ', yp[nm]:6:1); END ELSE BEGIN pr := y[n] + sd; WRITE(o, 'НЕТ АДЕКВАТНОЙ МОДЕЛИ . ПРОГНОЗ ПО СРЕДНЕЙ - '); WRITELN(o, pr:6:1); END; END; {---- nob ----} CLOSE(f); CLOSE(o); END. ___________________________________ ________________ Преподаватель решает через дельфи. Я же делаю через паскаль 7. все ответы сходятся, кроме ответов в пятой модели. в чем ошибка? Исходные данные: 8 1 вектор х 1 2 3 4 5 6 7 8 вектор у 340 347 352 363 375 381 385 388 Ответ преподавателя: X : 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 Объект 1 У : 340.0 347.0 352.0 363.0 375.0 381.0 385.0 388.0 dУ: 7.0 5.0 11.0 12.0 6.0 4.0 3.0 Max Cp Min 12.00 6.86 3.00 Коэффициент парн корр - 0.986 Дисперсия У - 341.70 ---------------------------------------------------------------------- МОДЕЛЬ СР.ОШ ДИ_ОСТКОР_О F_КР Z_Кр ПРО ДПРО ---------------------------------------------------------------------- У=332.893+7.440*x 0.586 11.12 0.984 30.7 10.2 399.9 11.857< У=333.747*x[i]^0.070 1.120 27.26 0.959 12.5 7.3 388.8 0.825 У=333.857*1.021^x[i] 0.648 12.86 0.981 26.6 9.7 401.2 13.159 У=327.446+ 10.7X+-0.363*X2 0.553 8.92 0.987 38.3 4.5 394.4 6.411< ---------------------------------------------------------------------- МОДЕЛЬ5 -> ПРОГНОЗ 394.4 |
![]() |
![]() |
![]() |
#3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Код надо оформлять по правилам, используя теги CODE вручную или кнопочкой #
Иначе код нечитаем и вряд ли кто будет в него вчитываться, т.к. сломает глаза. Конкретно Ваш код чрезвычайно сложен для понимания и мало кто захочет с ним разбираться. У него практически нет разбиения по процедурам, что могло бы сильно упростить поиск ошибки, очень много неосмысленно названных переменных, что сильно ухудшают возможность "читать " алгоритм. Советую изучить и применять http://www.gunsmoker.ru/2011/01/blog-post.html Однако, у Вашей проблемы может быть вполне простое и логичное объяснение. В турбопаскале тип Integer это 2байтное целое с диапазоном -32768..32767, а в дельфи это 4байтный тип с диапазоном -2^31..2^31-1 Из-за этого различия в дельфи может получаться другой результат (есть вероятность что тип Real тоже может влиять). Чтобы это исправить, стоит в дельфи задекларировать соответствующие типы как SmallInt (соотв паскалевскому Integer) и Real48 (соответствует паскалевскому Real)/ Если не поможет, то значит дело глубже, но это гораздо менее вероятно, т.к. алгоритмы из паскаля обычно идентичны в дельфи, а вот типы (то что я выше описал) как раз отличаются. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ERwin BPwin Rational Rose UML модели бизнес-процессов, логическая и физическая модели КОНТРОЛЬНАЯ РАБОТА | iJohnny | Фриланс | 0 | 05.06.2012 05:52 |
ошибка отображения 3D модели | Кинельски | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 01.11.2011 20:05 |
В пятой степени. | Водонька | Помощь студентам | 0 | 16.10.2011 18:47 |
пятой точкой чувствую - потоки | BoozZzilla | Общие вопросы Delphi | 16 | 15.03.2011 17:52 |
Помогите написать задачу на тему: Исследование кореляционной и регрессионной зависимости. | RosOnDon | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 24.04.2009 13:11 |