Построение графиков в паскаль

Автор работы: Пользователь скрыл имя, 20 Марта 2012 в 18:41, курсовая работа

Описание

Практическое освоение типовых вычислительных методов прикладной математики;
совершенствование навыков разработки алгоритмов и построения программ на языке программирования высокого уровня Паскаль;
освоение принципов модульного программирования;
приобретение основных навыков для использования вычислительных методов прикладной математики и техники программирования в процессе изучения всех последующих дисциплин при выполнении курсовых и дипломных проектов.

Содержание

1. ОГЛАВЛЕНИЕ_________________________________________________2
2. ЦЕЛЬ РАБОТЫ_________________________________________________3
3. МЕТОДИЧЕСКИЕ УКАЗАНИЯ__________________________________3
3.1. Методические рекомендации по аппроксимации методом наименьших квадратов_____________________________________3
3.1.1. Постановка задачи_______________________________________3
3.2. Методика решения системы нормальных уравнений___________6
4. РУЧНОЙ СЧЕТ_________________________________________________8
4.1. Исходные данные__________________________________________8
4.2. Критерий аппроксимации___________________________________8
4.3. Система нормальных уравнений____________________________10
4.4. Решение системы методом обратной матрицы _______________10
4.5. Результаты расчета_______________________________________11
4.6. Аппроксимирующая функция______________________________11
4.7. Оценка погрешности аппроксимации_______________________11
4.8. График__________________________________________________12
5. СХЕМЫ АЛГОРИТМОВ_______________________________________13
5.1. Схема алгоритма основного блока программы_______________13
5.2. Схема алгоритма процедуры решения системы уравнений____15
6. ТЕКСТ ПРОГРАММЫ_________________________________________17
7. РЕЗУЛЬТАТЫ КОНТРОЛЬНОГО РАСЧЕТА_____________________23
8. ВЫВОДЫ_____________________________________________________24

Работа состоит из  1 файл

Обратная матрица рубцов вар. 18.docx

— 268.83 Кб (Скачать документ)

max при x = x2 = 0.78

    1. График.

Рис. 4.8.1. График аппроксимирующей функции. Исходные точки.

Построение графика выполнялось  при помощи математического пакета MathCAD.

 

 

 

 

 

  1. СХЕМЫ АЛГОРИТМОВ.
    1. Схема алгоритма основного блока программы.

Рис. 5.1.1. Начало блок – схемы  алгоритма.

 

Рис. 5.1.2. Конец блок –  схемы алгоритма.

    1. Схема алгоритма процедуры решения системы уравнений.

Рис. 5.2.1. Начало блок – схемы алгоритма процедуры.

 

Рис. 5.2.2. Конец блок –  схемы алгоритма процедуры.

  1. ТЕКСТ ПРОГРАММЫ.

{$R+}

Program kursovaja (input, output);

Uses Crt;

Type

Mas1=array [1..5] of real;

Mas2=array [1..3,1..5] of real;

Mas3=array [1..3,1..3] of real;

Mas4=array [1..3] of real;

Var

x,y,F0,DELTA:Mas1;

f:Mas2;

A:Mas3;

B,C:Mas4;

i,j,k,l,m,n,imax:byte;

J0,max:real;

Procedure MATRIX (Z:Mas3;B:Mas4;n:byte;var X:Mas4);

Var i,j,l,k,m,NUM:byte;BIG,TEMP,Q,SUM:real;E,R,W,Z1:Mas3;

begin

for i:=1 to n do

for j:=1 to n do

Z1[i,j]:=Z[i,j];

for k:=1 to n do

for l:=1 to n do

if k=l then

E[k,l]:=1

else E[k,l]:=0;

for i:=1 to n-1 do

begin

  BIG:=0;

  NUM:=0;

  for l:=i to n do

  if abs(Z1[l,i])>abs(BIG) then

  begin

   BIG:=Z1[l,i];

   NUM:=l;

  end;

  if NUM=0 then

  begin

   writeln ('Матрица вырожденная!!');

   readkey;

   halt;

  end;

  if NUM<>i then

  begin

   for j:=i to n do

   begin

    TEMP:=Z1[i,j];

    Z1[i,j]:=Z1[NUM,j];

    Z1[NUM,j]:=TEMP;

    TEMP:=Z[i,j];

    Z[i,j]:=Z[NUM,j];

    Z[NUM,j]:=TEMP;

   end;

   TEMP:=B[i];

   B[i]:=B[NUM];

   B[NUM]:=TEMP;

  end;

  for k:=i+1 to n do

  begin

   Q:=Z1[k,i]/Z1[i,i];

   Z1[k,i]:=0;

   for j:=i+1 to n do

   Z1[k,j]:=Z1[k,j]-Q*Z1[i,j];

   for m:=1 to n do

   E[k,m]:=E[k,m]-Q*E[i,m];

  end;

end;

for m:=1 to n do

R[n,m]:=E[n,m]/Z1[n,n];

for i:=n-1 downto 1 do

for m:=1 to n do

begin

  SUM:=E[i,m];

  for j:=i+1 to n do

  SUM:=SUM-Z1[i,j]*R[j,m];

  R[i,m]:=SUM/Z1[i,i];

end;

writeln ('Обратная матрица:');

for i:=1 to n do

begin

  for j:=1 to n do

  write (R[i,j]:5:4,' ');

  writeln;

 end;

 writeln ('Проверка правильности нахождения обратной матрицы:');

 for i:=1 to n do

for j:=1 to n do

begin

  W[i,j]:=0;

  for k:=1 to n do

  W[i,j]:=W[i,j]+Z[i,k]*R[k,j];

end;

for i:=1 to n do

  begin

  for j:=1 to n do

  write (W[i,j]:5:3,' ');

  writeln;

end;

for i:=1 to n do

begin

  X[i]:=0;

  for j:=1 to n do

  X[i]:=X[i]+R[i,j]*B[j];

end;

end;

Begin

 ClrScr;

 Writeln ('Введите количество заданных исходных точек');

 Read (m);

 writeln;

 Writeln ('Введите количество заданных исходных функций');

 Read (n);

writeln;

Writeln ('Введите значения X:');

for i:=1 to m do

Read (x[i]);

writeln;

Writeln ('Введите значения Y:');

for i:=1 to m do

Read (y[i]);

writeln;

for i:=1 to m do

begin

  f[1,i]:=cos(x[i]);

  f[2,i]:=sin(x[i]);

  f[3,i]:=1;

end;

writeln ('Матрица коэффициентов при неизвестных С1, С2, С3:');

 for k:=1 to n do

begin

  for l:=1 to n do

  begin

   A[k,l]:=0;

   for i:=1 to m do

   A[k,l]:=A[k,l]+f[k,i]*f[l,i];

   write (A[k,l]:5:4,' ');

  end;

  writeln;

 end;

 writeln ('Матрица-столбец правой части системы уравнений:');

 for k:=1 to n do

begin

  B[k]:=0;

  for i:=1 to m do

  B[k]:=B[k]+y[i]*f[k,i];

  writeln (B[k]:5:3,' ');

end;

MATRIX(A,B,n,C);

writeln ('Значения неизвестных Ck:');

 for k:=1 to n do

writeln ('C',k,'=',C[k]:5:4);

writeln ('Значения аппроксимирующей функции в зависимости от x[i]:');

 for i:=1 to m do

begin

  F0[i]:=C[1]*f[1,i]+C[2]*f[2,i]+C[3]*f[3,i];

  writeln ('F(x',i,')=',F0[i]:5:2);

end;

 writeln ('Значения отклонений исходных точек от аппроксимирующей функции:');

 for i:=1 to m do

begin

  DELTA[i]:=y[i]-F0[i];

  writeln ('DELTA',i,'=',DELTA[i]:5:2);

end;

 writeln ('Максимальное отклонение:');

 max:=DELTA[1];

imax:=1;

for i:=2 to m do

if abs(DELTA[i])>abs(max) then

begin

  max:=DELTA[i];

  imax:=i;

end;

writeln ('DELTAmax=',max:5:2,' при x=x',imax,'=',x[imax]:3:2);

writeln ('Минимальное значение качества аппроксимации:');

 J0:=DELTA[1]*DELTA[1];

for i:=2 to m do

J0:=J0+DELTA[i]*DELTA[i];

writeln ('J0=',J0:5:4);

readkey

end.

 

  1. РЕЗУЛЬТАТЫ КОНТРОЛЬНОГО РАСЧЕТА.

Введите количество заданных исходных точек

5

Введите количество заданных исходных функций

3

Введите значения X:

0.0 0.78 1.57 2.35 3.14

Введите значения Y:

0.0 4.0 5.0 8.0 9.0

Матрица коэффициентов при  неизвестных С1, С2, С3:

2.9992 -0.0008 0.0090

-0.0008 2.0008 2.4163

0.0090 2.4163 5.0000

Матрица-столбец правой части  системы уравнений:

-11.774

13.519

26.000

Обратная матрица:

0.3334 -0.0016 0.0021

-0.0038 -0.5801 1.2004

0.0019 0.4804 -0.5801

Проверка правильности нахождения обратной матрицы:

1.000 -0.000 -0.000

0.000 1.000 -0.000

-0.000 -0.000 1.000

Значения неизвестных Ck:

C1=-3.9393

C2=1.1896

C3=4.6245

Значения аппроксимирующей функции в зависимости от x[i]:

F(x1)= 0.69

F(x2)= 2.66

F(x3)= 5.81

F(x4)= 8.24

F(x5)= 8.57

Значения отклонений исходных точек от аппроксимирующей функции:

DELTA1=-0.69

DELTA2= 1.34

DELTA3=-0.81

DELTA4=-0.24

DELTA5= 0.43

Максимальное отклонение:

DELTAmax= 1.34 при x=x2=0.78

Минимальное значение качества аппроксимации:

J0=3.1669

  1. ВЫВОДЫ.

В данной курсовой работе мною была освоена и применена на практике методика приближенного представления (аппроксимации) исходных зависимостей с помощью известных функций или их комбинаций. Были усовершенствованы навыки алгоритмизации и построения программ на языке Паскаль, освоены новые методы решения систем уравнений.

Результаты ручного счета  от результатов работы программы  отличаются не более, чем на 5%. Максимальное отклонение аппроксимирующей функции от исходных точек составило 1.34. Минимальное значение качества аппроксимации J0=3.1669 (отличается от результата ручного счета на 1%). Обратная матрица, вычисленная в программе отличается от обратной матрицы, полученной в ручном счете. Это связано с тем, что программа осуществляет перестановку максимального по модулю коэффициента при неизвестном Ck на первое место. Данная процедура позволяет увеличить точность вычислений.

 


Информация о работе Построение графиков в паскаль