Курсовой проект по Delphi 7

Автор работы: Пользователь скрыл имя, 30 Сентября 2009 в 14:05, Не определен

Описание работы

7 типовых заданий

Файлы: 1 файл

Курсовик Кучер 1 АТП-06.doc

— 168.50 Кб (Скачать файл)
  1. Даны натуральные  m,nи матрица Am×n. Найти матрицу Сm×n, значение каждого элемента которой (cij, где i=1,2,…,m,j=1,2,…,n) определяется по формуле Су = sj ■ a у, где sj - среднее арифметическое значение всех элементов j-ого столбца матрицы A.
 

procedure TForm1.Button1Click(Sender: TObject);

begin

m := SpinEdit1.value; считываем значение m

n := SpinEdit2.value; считываем значение n

z:=false;

for i:=1 to m do

  for j:=1 to n do

    begin

      val(stringgrid1.Cells[j-1, i-1], a[i,j], code); //считываем значения элементов иассива A

      if code > 0 then z:=true;

    end;

if z then showmessage('Введено некорректное значение')

  else

    begin

for j:=1 to n do

  begin

    s[j]:=0; //обнуление суммы

    for i:=1 to m do

      s[j]:=s[j]+a[i,j]; //накопление суммы по столбцам

    s[j]:=s[j]/m; //рассчет среднего  арифметического   по столбцам

  end;

for i:=1 to m do

  for j:=1 to n do

    c[i,j]:=s[j]+a[i,j]; //рассчет элементов массива C

for i:=1 to m do

  for j:=1 to n do

    StringGrid2.Cells[j-1,i-1] := floattostr(c[i,j]);  //Вывод элементов массива С

    end; 

3. Численные методы уточнения корней нелинейного уравнения.

Задание.

Уточнить корни  уравнения   хг -В-х2 +С-Х — £) = О на отрезке [-5.00, 5.00], при h=0.5 и € = 0.01 

-2.703   -8.459  9.807 
 

procedure iterat;                        //метод простой итерации

var x,dh,B:real;

i:integer;

begin

B:=-0.01;

i:=1;

x:=korni[3];                             //начальное приближение

repeat                                      //цикл рассчёта

form1.StringGrid4.RowCount:=i+1;

dh:=func(x)*B;

form1.StringGrid4.Cells[0,i]:=inttostr(i);                          //Вывод итераций

form1.StringGrid4.Cells[1,i]:=floattostrF(x,ffFixed,5,7);            // ...

form1.StringGrid4.Cells[2,i]:=floattostrF(func(x),ffFixed,10,7);       //...

form1.StringGrid4.Cells[3,i]:=floattostrF(dh,ffFixed,10,7);              //...

form1.StringGrid4.Cells[4,i]:=floattostrF(x+dh,ffFixed,10,7);              //...

inc(i);

x:=x+dh;

until abs(dh/B)<eps;

end; 

procedure polovinnoedel;                  //метод половинного деления

var a,b,x:real;

i:integer;

begin

i:=1;

b:=korni[1];                                //задание правой  границы интервала  поиска

a:=b-h;                                      //задание левой  границы интервала  поиска

x:=(b+a)/2;                                  //середина интервала

form1.StringGrid2.Cells[0,i]:=inttostr(i);                    //Вывод первой  итерации

form1.StringGrid2.Cells[1,i]:=floattostr(a);                    //...

form1.StringGrid2.Cells[2,i]:=floattostr(x);                      //...

form1.StringGrid2.Cells[3,i]:=floattostr(b);                        //...

form1.StringGrid2.Cells[4,i]:=floattostr(func(a));                    //...

form1.StringGrid2.Cells[5,i]:=floattostr(func(x));                      //...

form1.StringGrid2.Cells[6,i]:=floattostr(func(b));                        //...

form1.StringGrid2.Cells[7,i]:=floattostr(abs(b-a));                         //...

while (abs(b-a)/2)>eps do begin                                   //Цикл рассчёта итерации

inc(i);

form1.StringGrid2.RowCount:=i+1;                                  //изменение числа  строк в таблице  вывода

if (func(a)*func(x))<0 then                                    //условия сокращения  интервала

b:=x

else

a:=x;

x:=(b+a)/2;

form1.StringGrid2.Cells[0,i]:=inttostr(i);                        //Вывод итераций

form1.StringGrid2.Cells[1,i]:=floattostr(a);                        //...

form1.StringGrid2.Cells[2,i]:=floattostr(x);                          //...

form1.StringGrid2.Cells[3,i]:=floattostr(b);                            //...

form1.StringGrid2.Cells[4,i]:=floattostr(func(a));                        //...

form1.StringGrid2.Cells[5,i]:=floattostr(func(x));                          //...

form1.StringGrid2.Cells[6,i]:=floattostr(func(b));                            //...

form1.StringGrid2.Cells[7,i]:=floattostr(abs(b-a));                             //...

end;

end; 

procedure kas;                   // метод касательной

var x,dh:real;

i:integer;

begin

i:=1;

x:=korni[2];                    //задание начального  приближения

repeat                            //цикл рассчёта итераций

form1.StringGrid3.RowCount:=i+1;

dh:=func(x)/funcproizv(x);

form1.StringGrid3.Cells[0,i]:=inttostr(i);                         //Вывод итераций

form1.StringGrid3.Cells[1,i]:=floattostrF(x,ffFixed,5,7);            //...

form1.StringGrid3.Cells[2,i]:=floattostrF(func(x),ffFixed,10,7);       //...

form1.StringGrid3.Cells[3,i]:=floattostrF(funcproizv(x),ffFixed,10,7);   //...

form1.StringGrid3.Cells[4,i]:=floattostrF(dh,ffFixed,10,7);                //...

form1.StringGrid3.Cells[5,i]:=floattostrF(x-dh,ffFixed,10,7);                //...

inc(i);

x:=x-dh;

until abs(dh)<eps;

end; 

procedure TForm1.FormCreate(Sender: TObject);

begin

B:=-2.703;                        //задание коэффициентов уравнения

C:=-8.459;                        //...

D:=9.807;                         //...

StringGrid1.Cells[0,0]:='i';                          //вывод статических  надписей таблиц

StringGrid1.Cells[0,1]:='x';                          //...

StringGrid1.Cells[0,2]:='f(x)';                       //

StringGrid2.Cells[0,0]:='i';                          //

StringGrid2.Cells[1,0]:='a';                          //

StringGrid2.Cells[2,0]:='x=(b+a)/2';                  //

StringGrid2.Cells[3,0]:='b';                          //

StringGrid2.Cells[4,0]:='f(a)';                       //

StringGrid2.Cells[5,0]:='f(x)';                       //

StringGrid2.Cells[6,0]:='f(b)';                       //

StringGrid2.Cells[7,0]:='|b-a|';                      //

StringGrid3.Cells[0,0]:='i';                          //

StringGrid3.Cells[1,0]:='x(i-1)';                     //

StringGrid3.Cells[2,0]:='f(x(i-1))';                  //

StringGrid3.Cells[3,0]:='f''(x(i-1))';                //

StringGrid3.Cells[4,0]:='h';                          //

StringGrid3.Cells[5,0]:='x(i)=x(i-1)-h';              //

StringGrid4.Cells[0,0]:='i';                          //

StringGrid4.Cells[1,0]:='x(i-1)';                     //

StringGrid4.Cells[2,0]:='f(x(i-1))';                  //

StringGrid4.Cells[3,0]:='h=B*f(x(i-1))';              //

StringGrid4.Cells[4,0]:='x(i)=x(i-1)+h';              //

start:=-5;                                            //задание левой  границы поиска

finish:=5;                                            //задание правой границы поиска

h:=0.5;                                               //шаг

eps:=0.01;                                            //точность

Label2.Caption:=Label2.Caption+FloatToStr(B);         //вывод коэффициентов  уравнения

Label3.Caption:=Label3.Caption+FloatToStr(C);         //...

Label4.Caption:=Label4.Caption+FloatToStr(D);         //...

end; 

procedure TForm1.Button1Click(Sender: TObject);             //запуск необходимых для рассчёта процедур

begin

poisk;

polovinnoedel;

kas;

iterat;

end; 

procedure poisk;                                        //процедура отделения  корней

var i,k:integer;

x:real;

begin

i:=0;

k:=1;                                                  //задание начального  значения х

x:=start;

form1.StringGrid1.Cells[k,0]:=inttostr(k);             // вывод первого итервала

form1.StringGrid1.Cells[k,1]:=floattostr(x);           //...

form1.StringGrid1.Cells[k,2]:=floattostr(func(x));     //...

while x<finish do begin                                //цикл отделения корней...

inc(k);

form1.StringGrid1.ColCount:=k+1;

form1.StringGrid1.Cells[k,0]:=inttostr(k);

form1.StringGrid1.Cells[k,1]:=floattostr(x+h);

form1.StringGrid1.Cells[k,2]:=floattostr(func(x+h));

if (func(x)/(abs(func(x))))<>(func(x+h)/(abs(func(x+h)))) then begin  //условие определения интервала, содержащего корень

inc(i);

korni[i]:=x+h;                                           //формирование массива  корней

end;

x:=x+h;                                                  //смещение к следующему  интервалу

end;

end;

end. 
 
 
 
 
 
 

4. Матричные операции.

Вычислите значение матричного выражения R. Сохоаните пгюмежуточные вычисления.

Составите программу, для вычисления R

Проведите расчет по программе и сравните результаты. Операция sled([MarpHna]) - сумма

диагональных элементов матрицы.

//задание  элементов матрицы  А

A[1,1]:=5;

A[1,2]:=6;

A[1,3]:=7;

A[2,1]:=9;

A[2,2]:=4;

A[2,3]:=7;

//Вывод  элементов матрицы  А

for i:=1 to 2 do

  for j:=1 to 3 do

    StringGrid1.Cells[j-1,i-1] := inttostr(A[i,j]);

//задание  элементов матрицы В

B[1,1]:=3;

B[1,2]:=3;

B[2,1]:=1;

B[2,2]:=6;

B[3,1]:=4;

B[3,2]:=1;

//Вывод  элементов матрицы  В

for i:=1 to 3 do

  for j:=1 to 2 do

    StringGrid2.Cells[j-1,i-1] := inttostr(B[i,j]);

//задание  элементов вектора  с

c[1]:=3;

c[2]:=1;

//Вывод элементов вектора c

for i:=1 to 2 do

    StringGrid3.Cells[0,i-1] := inttostr(c[i]);

//задание  элементов вектора  d

Информация о работе Курсовой проект по Delphi 7