Разложение рациональной дроби на простейшие.
Реферат - Математика и статистика
Другие рефераты по предмету Математика и статистика
;
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 эта процедура тоже есть и вычисляет коэффициенты для любой дробно рациональной функции. Нехватка времени не позволила мне довести мою программу до полной функциональности: вычисление коэффициентов для любого знаменателя, т. е. знаменателя с любыми корнями. В дальнейшем, может быть, я это осуществлю. Однако, даже в таком варианте она полезна для практического использования быстрого вычисления коэффициентов.
Список литературы.
- Бахвалов Н.С., Лапин А.В., Кобельков Г. М. Численные методы. М.: Физматлит, 2001.
- Волков Е.А. Численные методы. Петербург, изд во Лань, 2004.
- Демидович Б.П., Марон И.А. Основы вычислительной математики. - М.: Наука, 1970.
- Вержбицкий В.М. Численные методы. Линейная алгебра и нелинейные уравнения. - М.: Высшая школа, 2000.
- Бахвалов Н.С., Лапин А.В. Численные методы в задачах и упражнениях. М.: Высшая школа, 2000.
- Фаддеев Д.К., Фаддеева В.Н. Вычислительные методы линейной алгебры. Петербург, изд во Лань, 2002.
7.Самарский А.А., Гулин А.В. Численные методы математической физики. М.: Научный мир, 2003.
8.Деммель Дж. Вычислительная линейная алгебра. М.: Мир, 2001.
9.Косарев В.И. 12 лекций по вычислительной математике. М.: изд во МФТИ, 2000.
10. Лобанов А.И., Мещеряков М.В., Чудов Л.А. Задачи для самостоятельного исследования в курсе вычислительной математики. М.: изд во МФТИ, 2001