Разложение рациональной дроби на простейшие.

Реферат - Математика и статистика

Другие рефераты по предмету Математика и статистика

;

 

form1.Calculate(chislit,n1+1,st1);

form1.Calculate(pol2,n2+2,st2);

Form1.Edit1.Text:=st1;

Form1.Edit2.Text:=st2;

{for i:=0 to n1 do

Form1.Edit1.Text:=Form1.Edit1.Text+getfstring(chislit[i],1)+ ;

for i:=0 to n2+1 do

Form1.Edit2.Text:=Form1.Edit2.Text+getfstring(pol2[i],1)+ ;}

 

Setlength(matr,n2+2,n2+1);

for i:=0 to n2 do

begin

form1.GetPolinom(roots2,n2,true,i,temp);

for j:=1 to n2+1 do matr[i,j-1]:=temp[j];

end;

 

i:=0;

for j:=0 to n2 do

matr[n2+1,j]:=0;

 

for j:=n2-n1 to n2 do

begin

matr[n2+1,j]:=chislit[i];

inc(i);

end;

setlength(matr1,n2+1,n2+2);

setlength(koef,n2+1,1);

for i:=0 to n2 do

for j:=0 to n2+1 do

matr1[i,j]:=matr[j,i];

korni(matr1,n2+1,n2+2,koef);

 

for i:=0 to n2 do

form1.Edit4.Text:=form1.Edit4.Text+getfstring(koef[i,0],3)+ ;

 

end;

 

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

Form1.StringGrid1.ColCount:=strtoint(Form1.SpinEdit1.Text)+1;

end;

 

procedure TForm1.SpinEdit2Change(Sender: TObject);

begin

Form1.StringGrid2.ColCount:=strtoint(Form1.SpinEdit2.Text);

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var i:shortint;

begin

Form1.StringGrid1.ColCount:=strtoint(Form1.SpinEdit1.Text)+1;

Form1.StringGrid2.ColCount:=strtoint(Form1.SpinEdit2.Text);

end;

 

 

Чтобы вид был более нагляден и информативен, я использовал процедуру преобразования массива коэффициентов:

 

procedure TForm1.Calculate(mass1:polinom;n:integer;var formula:string);

var

i,j,k1:byte;

sign:array of signs ;

first,flag:boolean;

odin:array of boolean;

s:integer;

begin

k1:=n-1;

 

for i:=0 to n-1 do

begin

elem[i]:=x^+inttostr(k1);

dec(k1);

end;

 

first:=true;

setlength(odin,n);

setlength(sign,n);

setlength(mass1,n);

equation:=;

for i:=0 to n-1 do //calculating and building

begin

if abs(mass1[i])=1 then odin[i]:=true; //esli ediniza

 

if mass1[i]>0 then sign[i]:=1 //check sign

else

if mass1[i]=0 then sign[i]:=0

else sign[i]:=-1;

 

 

if odin[i] then //esli ediniza

begin

if i<n-1 then

case sign[i] of

1:

if first then

begin

equation:=equation+elem[i];

first:=false;

end

else

equation:=equation+ + +elem[i];

0:

continue;

 

-1:

begin

if first then first:=false;

equation:=equation+ - +elem[i];

end;

end

else

case sign[i] of

1:

if first then

begin

equation:=equation+1;

first:=false;

end

else

equation:=equation+ + 1;

0:

continue;

 

-1:

begin

if first then first:=false;

equation:=equation+ - 1;

end;

end;

continue;

end;

 

if i = n-1 then

case sign[i] of

1:

if first then

begin

equation:=equation+getfstring(abs(mass1[i]),3);

first:=false;

end

else

equation:=equation+ + +getfstring(abs(mass1[i]),3);

 

0: continue;

 

-1:

begin

if first then first:=false;

equation:=equation+ - +getfstring(abs(mass1[i]),3);

end;

end

 

else

case sign[i] of

1:

if first then

begin

equation:=equation+getfstring(abs(mass1[i]),3)+*+elem[i];

first:=false;

end

else

equation:=equation+ + +getfstring(abs(mass1[i]),3)+*+elem[i];

0:

continue;

 

-1:

begin

equation:=equation+ - +getfstring(abs(mass1[i]),3)+*+elem[i];

if first then first:=false;

end;

end;

end;

 

s:=0;

{ for i:=0 to n-1 do

s:=s+abs(mass1[i]);

if s=0 then equation:=0; }

 

formula:=equation;

end;

 

end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение.

В моей курсовой работе я рассмотрел подробно метод простых коэффициентов и реализовал программу на Delphi, которая вычисляет значения коэффициентов для случая простых действительных корней знаменателя. В Maple эта процедура тоже есть и вычисляет коэффициенты для любой дробно рациональной функции. Нехватка времени не позволила мне довести мою программу до полной функциональности: вычисление коэффициентов для любого знаменателя, т. е. знаменателя с любыми корнями. В дальнейшем, может быть, я это осуществлю. Однако, даже в таком варианте она полезна для практического использования быстрого вычисления коэффициентов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

  1. Бахвалов Н.С., Лапин А.В., Кобельков Г. М. Численные методы. М.: Физматлит, 2001.
  2. Волков Е.А. Численные методы. Петербург, изд во Лань, 2004.
  3. Демидович Б.П., Марон И.А. Основы вычислительной математики. - М.: Наука, 1970.
  4. Вержбицкий В.М. Численные методы. Линейная алгебра и нелинейные уравнения. - М.: Высшая школа, 2000.
  5. Бахвалов Н.С., Лапин А.В. Численные методы в задачах и упражнениях. М.: Высшая школа, 2000.
  6. Фаддеев Д.К., Фаддеева В.Н. Вычислительные методы линейной алгебры. Петербург, изд во Лань, 2002.

7.Самарский А.А., Гулин А.В. Численные методы математической физики. М.: Научный мир, 2003.

8.Деммель Дж. Вычислительная линейная алгебра. М.: Мир, 2001.

9.Косарев В.И. 12 лекций по вычислительной математике. М.: изд во МФТИ, 2000.

10. Лобанов А.И., Мещеряков М.В., Чудов Л.А. Задачи для самостоятельного исследования в курсе вычислительной математики. М.: изд во МФТИ, 2001