Решение задач линейной алгебры средствами Delphi: Метод Гаусса для решения систем линейных алгебраических уравнений

Автор работы: Пользователь скрыл имя, 13 Июня 2013 в 19:21, курсовая работа

Краткое описание

Данная программа писалась на языке Delphi в бесплатной среде Lazarus. Lazarus — свободная среда разработки программного обеспечения для компилятора Free Pascal (часто используется сокращение FPC— свободно распространяемый компилятор языка программирования Pascal) на языке Object Pascal. Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении. На данный момент является единственным инструментом быстрой разработки приложений (RAD), позволяющим Delphi-программистам создавать приложения с графическим интерфейсом для Linux (и других не-Windows) систем.
Позволяет достаточно несложно переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows, Android. Начиная с Delphi XE2 в самом Delphi имеется возможность компиляции программ для Mac OS X и iOS.

Содержание

1. Введение 3
2. Содержательная часть 4
2.1. История 4
2.2. Описание метода 4
2.3. Условие совместности 5
3. Практическая часть. 6
3.1. Постановка задачи 6
3.2. Методы решения линейных уравнений 6
3.3. Руководство пользователя 7
3.4. Листинг 9
4. Заключение 17
5. Список литературы 18

Прикрепленные файлы: 1 файл

Kursovaya_po_obektno-orientirovannomu_programmi.docx

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

  ipz2:=pz1*(-px2/px1)+pz2;

  ipo2:=po1*(-px2/px1)+po2;

  ipx3:=px1*(-px3/px1)+px3;

  ipy3:=py1*(-px3/px1)+py3;

  ipz3:=pz1*(-px3/px1)+pz3;

  ipo3:=po1*(-px3/px1)+po3;

if ipy2=0 then showmessage ('Нет решений! Проверьте систему уравнений!') else

  begin

  kipy3:=ipy2*(-ipy3/ipy2)+ipy3;

  kipz3:=ipz2*(-ipy3/ipy2)+ipz3;

  kipo3:=ipo2*(-ipy3/ipy2)+ipo3;

end;

  end;

 

if px1=0 then VX1:='' else  // Вывод на экран уравнений

if px1=1 then VX1:=''+'X' else

if px1=-1 then VX1:=''+'-X' else

begin

if px1>0 then VX1:=''+IntToStr(px1)+'X' else VX1:=IntToStr(px1)+'X';

end;

 

if py1=0 then VY1:='' else

if py1=1 then if px1=0 then VY1:=''+'Y' else VY1:=''+'+Y' else

if py1=-1 then VY1:='-Y' else

begin

if py1>0 then

begin

if px1=0 then VY1:=''+IntToStr(py1)+'Y' else VY1:='+'+IntToStr(py1)+'Y';

end else VY1:=IntToStr(py1)+'Y';

end;

 

if pz1=0 then VZ1:='' else

 

begin

if pz1>0 then

if pz1=1 then if px1=0 then if py1=0 then VZ1:=''+'Z' else VZ1:=''+'+Z' else VZ1:=''+'+Z' else

if pz1=-1 then VZ1:='-Z' else

begin

if px1=0 then

if py1=0 then Vz1:=IntToStr(pz1)+'Z'

else Vz1:='+'+IntToStr(pz1)+'Z'

else Vz1:='+'+IntToStr(pz1)+'Z';

end else VZ1:=IntToStr(pz1)+'Z';

end;

 

if px2=0 then VX2:='' else

if px2=1 then VX2:=''+'X' else

if px2=-1 then VX2:='-X' else

begin

if px2>0 then VX2:=''+IntToStr(px2)+'X' else VX2:=IntToStr(px2)+'X';

end;

 

if py2=0 then VY2:='' else

if py2=1 then if px2=0 then VY2:=''+'Y' else VY2:=''+'+Y' else

if py2=-1 then VY2:='-Y' else

begin

if py2>0 then

begin

if px2=0 then VY2:=''+IntToStr(py2)+'Y' else VY2:='+'+IntToStr(py2)+'Y';

end else VY2:=IntToStr(py2)+'Y';

end;

 

if pz2=0 then VZ2:='' else

if pz2=1 then if px2=0 then if py2=0 then VZ2:=''+'Z' else VZ2:=''+'+Z' else VZ2:=''+'+Z' else

if pz2=-1 then VZ2:='-Z' else

begin

if pz2>0 then

begin

if px2=0 then

if py2=0 then Vz2:=IntToStr(pz2)+'Z'

else Vz2:='+'+IntToStr(pz2)+'Z'

else Vz2:='+'+IntToStr(pz2)+'Z';

end else VZ2:=IntToStr(pz2)+'Z';

end;

 

if px3=0 then VX3:='' else

if px3=1 then VX3:=''+'X' else

if px3=-1 then VX3:='-X' else

begin

if px3>1 then VX3:=''+IntToStr(px3)+'X' else VX3:=IntToStr(px3)+'X';

end;

 

if py3=0 then VY3:='' else

if py3=1 then if px3=0 then VY3:=''+'Y' else VY3:=''+'+Y' else

if py3=-1 then VY3:='-Y' else

begin

if py3>1 then

begin

if px3=0 then VY3:=''+IntToStr(py3)+'Y' else VY3:='+'+IntToStr(py3)+'Y';

end else VY3:=IntToStr(py3)+'Y';

end;

 

if pz3=0 then VZ3:='' else

if pz3=1 then if px3=0 then if py3=0 then VZ3:=''+'Z' else VZ3:=''+'+Z' else VZ3:=''+'+Z' else

if pz3=-1 then VZ3:='-Z' else

begin

if pz3>1 then

begin

if px3=0 then

if py3=0 then Vz3:=IntToStr(pz3)+'Z'

else Vz3:='+'+IntToStr(pz3)+'Z'

else Vz3:='+'+IntToStr(pz3)+'Z';

end else VZ3:=IntToStr(pz3)+'Z';

end;

 

Label1.caption:=VX1+VY1+VZ1+'='+IntToStr(po1);

Label2.caption:=VX2+VY2+VZ2+'='+IntToStr(po2);

Label3.caption:=VX3+VY3+VZ3+'='+IntToStr(po3);

Label4.caption:=FloatToStr(px1)+'x'+FloatToStr(py1)+'y'+FloatToStr(pz1)+'z'+'='+ IntToStr(po1);

Label8.caption:=FloatToStr(ipx2)+'x'+FloatToStr(ipy2)+'y'+FloatToStr(ipz2)+'z'+'='+floatToStr(ipo2);

Label9.caption:=FloatToStr(ipx3)+'x'+FloatToStr(ipy3)+'y'+FloatToStr(ipz3)+'z'+'='+ FloatToStr(ipo3);

Label16.caption:=FloatToStr(px1)+'x'+FloatToStr(py1)+'y'+FloatToStr(pz1)+'z'+'='+ IntToStr(po1);

Label17.caption:=FloatToStr(ipx2)+'x'+FloatToStr(ipy2)+'y'+FloatToStr(ipz2)+'z'+'='+ FloatToStr(ipo2);

Label18.caption:=FloatToStr(ipx2)+'x'+FloatToStr(kipy3)+'y'+FloatToStr(kipz3)+'z'+'='+ FloatToStr(kipo3);

end; // дополнительные функции показа «спуска»

 

  procedure TForm1.Button1Click(Sender: TObject);

begin

RZ:=kipo3/kipz3;   //вывод ответов

RY:=(ipo2-ipz2*RZ)/ipy2;

RX:=(po1-py1*RY-pz1*RZ)/px1;

OtvetX.caption:=FloatToStr(RX);

OtvetY.caption:=FloatToStr(RY);

OtvetZ.caption:=FloatToStr(RZ);

  end;

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Заключение

В ходе выполнения данного  курсового проекта была составлена программа для решения систем линейных уравнений методом Гаусса. Программу можно модернизировать, введя такую инновацию, как отображение «спуска» и «подъема» системы уравнений. Также возможно оптимизировать «ловушки» ошибок и исключений. В некоторых случаях рациональное введение -  замена структуры if…else на switch…case, что соответствовало бы требованиям структурного программирования.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Список литературы

  1. Дадаян А. «Алгебра и геометрия»
  2. Гантмахер  Ф.Р. Теория матриц (издание третье).
  3. Математический энциклопедический словарь.
  4. Андреева Л. Реферат по математике «Системы уравнений».
  5. Фадеев Д.К. «Сборник задач по высшей алгебре».
  6. Ильин В.А., Поздняк  Э.Г.; Линейная Алгебра; 4 изд., 2002г.
  7. http://ru.wikipedia.org/wiki/Метод_Гаусса

 


Информация о работе Решение задач линейной алгебры средствами Delphi: Метод Гаусса для решения систем линейных алгебраических уравнений