Численные методы решения математических задач - Математика курсовая работа

Численные методы решения математических задач - Математика курсовая работа




































Главная

Математика
Численные методы решения математических задач

Метод Гаусса, метод прогонки, нелинейное уравнение. Метод вращения Якоби. Интерполяционный многочлен Лагранжа и Ньютона. Метод наименьших квадратов, интерполяция сплайнами. Дифференцирование многочленами, метод Монте-Карло и Рунге-Кутты, краевая задача.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

(национальный исследовательский университет)
Факультет №8 «Прикладная математика и физика»
Кафедра 806 «Вычислительная математика и программирование»
3. Выполнение расчетно-графической работы
3.5.1 Интерполяционный многочлен Лагранжа
3.5.2 Интерполяционный многочлен Ньютона
Выполнить задания 1-11 расчетно-графической работы в соответствии с вариантом. При выполнении заданий разрешается пользоваться различным программным обеспечением, учитывая следующие требования:
1) Алгоритм работы и листинг используемого программного обеспечения должен быть понятен студенту. Студент должен предоставить необходимые разъяснения по требованию преподавателя, либо усовершенствовать/дополнить программу, если это необходимо;
2) ПО не должно использовать никаких сторонних программ для проведения математических вычислений, построения графиков и т.д. Весь функционал ПО должен быть заключен в его собственном коде;
3) При предоставлении собственноручно написанного ПО, студенту следует разместить на носителе, содержащем ПО, дистрибутив той среды программирования, в которой было написано ПО.
нелинейный уравнение интерполяционный многочлен
Расчетно-графическая работа состоит из нескольких заданий, для успешного решения которых необходимо продемонстрировать владение численными методами решения математических задач.
Формулировка всех заданий приведена ниже.
1) Методом Гаусса с точностью е=0,01 решить СЛАУ;
2) Методом прогонки решить СЛАУ, е=0,01;
3) Методом простой итерации (или любым другим) с е=0,01 уточнить один из корней уравнения;
4) Методом вращения с е=0,01 вычислить собственные значения и собственные вектора симметрической матрицы А;
5) Выписать интерполяционные многочлены Лагранжа и Ньютона для узловых значений {x i , y i }, заданных функцией y=f(x);
6) Для таблицы задания 5 выписать кубические сплайны дефекта 1 на каждом отрезке x?[x i -1 , x i ], i=1..4;
7) Методом наименьших квадратов аппроксимировать линейным и квадратичным многочленом заданную таблицу.
8) Используя таблицу задания 5 найти значение 1-й и 2-й производной в заданной точке.
9) Методом Рунге-Кутты с шагом h=0,1 и е=0,01 решить задачу Коши.
10) Методом прогонки с шагом h=0,1 и 0(h 2 ) решить краевую задачу для ОДУ.
Все задания, представленные в РГР, были выполнены с использованием собственноручно разработанного ПО и в соответствии с требуемым вариантом. Описание метода, описание алгоритма, скриншоты работы и листинг прилагаются.
В ходе работы программы были подсчитаны корни СЛАУ:
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
MAT=array [1..20,1..20] of extended;
procedure TForm1.Button1Click(Sender: TObject);
if n>8 then begin showmessage(' Слишком большой размер'); Exit; end;
procedure TForm1.Button2Click(Sender: TObject);
if StringGrid1.Cells[j-1,i-1]='' then
ShowMessage('Заполните все поля матрицы');
for i:=0 to StringGrid2.RowCount do
for j:=0 to StringGrid2.ColCount do begin
StringGrid2.Cells[i,j]:=StringGrid1.Cells[i,j];
a[i,j]:=StrToFloat(StringGrid1.Cells[j-1,i-1]);
ShowMessage('Определитель равен нулю!');
mmo1.lines.Add('X['+FloatToStr(i)+']= '+FloatToStr(x[i]));
procedure TForm1.FormCreate(Sender: TObject);
procedure TForm1.Button3Click(Sender: TObject);
procedure Per(k,n:integer;var a:Tmatrix; var p:integer);
procedure Opr(n:integer;var a:tmatrix;var det:real);
a[k,j]:=strtofloat(StringGrid2.Cells[j,k]);
Edit2.Text:=FloatToStrF(det,ffFixed,5,0);
procedure TForm1.Button4Click(Sender: TObject);
for p:= 0 to StringGrid1.RowCount do
for l:= 0 to StringGrid1.ColCount do
if znak=1 then znak:=-1 else znak:=1;
StringGrid1.Cells[p,l]:=FloatToStr(znak*(Random(lol+1)+tempfloat*0.01));
В ходе работы программы были подсчитаны корни СЛАУ:
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button2Click(Sender: TObject);
b[i]:=StrToFloat(StringGrid1.Cells[i-1,i-1]); // главная диагональ
c[i]:=StrToFloat(StringGrid1.Cells[i,i-1]); //нижняя диагональ
a[i+1]:=StrToFloat(StringGrid1.Cells[i-1,i]); //верхняя диагональ
d[i]:=StrToFloat(StringGrid1.Cells[n,i-1]) //свободные члены
Q[i]:=(d[i]-a[i]*Q[i-1])/(b[i]+a[i]*P[i-1]);
form2.memo1.lines.Add('P['+IntToStr(i)+']= '+FloatToStr(P[i]));
form2.memo1.lines.Add('Q['+IntToStr(i)+']= '+FloatToStr(Q[i]));
mmo1.lines.Add('X['+FloatToStr(i)+']= '+FloatToStr(x[i]));
procedure TForm1.Button3Click(Sender: TObject);
b[i]:=(Random(2*StrToInt(Edit2.text)+1)-StrToInt(Edit2.text));
StringGrid1.cells[i-1,i-1]:=FloatToStr(b[i]);
c[i]:=Random(Abs(2*b[i]+1))-Abs(b[i]);
StringGrid1.cells[i,i-1]:=FloatToStr(c[i]);
a[i]:=Random(2*(Abs(b[i])-Abs(c[i]))+1)-(Abs(b[i])-Abs(c[i]));
StringGrid1.cells[i-2,i-1]:=FloatToStr(a[i]);
StringGrid1.cells[n,i-1]:=FloatToStr(d[i]);
procedure TForm1.Button4Click(Sender: TObject);
procedure TForm1.FormCreate(Sender: TObject);
procedure TForm1.Button5Click(Sender: TObject);
for p1:= 0 to StringGrid1.RowCount do
for l1:= 0 to StringGrid1.ColCount do
if znak=1 then znak:=-1 else znak:=1;
StringGrid1.Cells[p1,l1]:=FloatToStr(znak*(Random(lol+1)+tempfloat*0.01));
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,Math, jpeg;
procedure Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
Label1.Caption:=' Результат Вычислений:';
x:= x - ( ((Cos(x)/sin(x)) - 2*x) / ( (-1*(1/sqr(sin(x))) - 2 )) );
Пошаговое выполнение программы (преобразование матриц):
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, jpeg, ExtCtrls, Math;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
a,pov,new,rez,povtr:array [1..20,1..20] of extended;
procedure TForm1.Button1Click(Sender: TObject);
matrix.RowCount:=n; //устанавливаем размерность матрицы
for i:=0 to RowCount do //очищаем её
matrix.width:=matrix.DefaultColWidth*n+20;
matrix.height:=matrix.DefaultRowHeight*n+20;
procedure TForm1.Button2Click(Sender: TObject);
a[i,j]:=StrToFloat(matrix.Cells[j-1, i-1]);
if (i<>j) and (abs(A[i,j])>max) then
max:=abs(A[i,j]);//запоминаем индекс максимального элемента
Memo1.Lines.Add('Диагональный эл-т на позиции ['+IntToStr(i)+','+IntToStr(i)+']= '+FloatToStr(a[i,i]));
{еси максимальный элемент ноль-значит всё обнулили выход}
// showmessage(FloatToStr(a[i1,j1]));
x:=0.5*arctan(2*(a[i1,j1]/(a[i1,i1]-a[j1,j1])));
Memo1.Lines.Add('tg(2Phi)='+FloatToStr(tan(2*x)));
for j:=1 to n do povtr[i,j]:=pov[j,i]; //транспонируем. т.к. определитель равен единице это тоже самое что обратная
for l:= 1 to n do //умножаем транспонированную м-цу поворота на исходную
new[i,j]:= new[i,j] + povtr[i,l]*a[l,j];
for l:= 1 to n do //то что получилось умножаем на м-цу поворота
rez[i,j]:= rez[i,j] + new[i,l]*pov[l,j];
Form2.memo1.Lines.add('Матрица после '+FloatToStr(k)+'-го преобразования');
st:=st+FloatToStrF(a[i,j],fffixed,3,2)+' ';
Form2.memo1.Lines.add('------------------');
Memo1.Lines.Add('Диагональный эл-т на позиции ['+IntToStr(i)+','+IntToStr(i)+']= '+FloatToStr(rez[i,i]));
procedure TForm1.FormCreate(Sender: TObject);
procedure TForm1.Button3Click(Sender: TObject);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
function Ln(x: Extended; a,y:Mas ; {передаём масштаб}var Xmax,Xmin,Ymax,Ymin:extended):Extended;
procedure TForm1.Button2Click(Sender: TObject);
a[j]:=StrToFloat(StringGrid1.Cells[j-1,0]);
y[j]:=StrToFloat(StringGrid1.Cells[j-1,1])
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
x:=Xmin+0*(Xmax-Xmin)/Image1.Width;
yy:=(Ln(x,a,y,Xmax,Xmin,Ymax,Ymin));
image1.Canvas.MoveTo(0,trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin)));
x:=Xmin+PX*(Xmax-Xmin)/Image1.Width;
yy:=(Ln(x,a,y,Xmax,Xmin,Ymax,Ymin));
PY:=trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin));
procedure TForm1.Button3Click(Sender: TObject);
yy:=(Ln(x,a,y,Xmax,Xmin,Ymax,Ymin));
Memo1.Lines.Add('Значение функции в точке '+FloatToStr(x)+' = '+FloatToStr(yy));
procedure TForm1.Image1Click(Sender: TObject);
if Button2.Enabled=False then Exit;
//захват координат точек в пикселях
px:=ScreenToClient(MyMouse.CursorPos).x-image1.Left;
py:=(ScreenToClient(MyMouse.CursorPos).y-image1.top);
{ Memo1.Lines.add(inttostr(px) + 'Х ' + inttostr(py)); }
yy:=(Ymax-(py*((Ymax-Ymin)/image1.height)));
xx:=(Xmin+px*(Ymax-Ymin)/image1.width);
StringGrid1.Cells[n-1,0]:=FloatToStrF(xx,ffFixed,4,2);
StringGrid1.Cells[n-1,1]:=FloatToStrF(yy,ffFixed,4,2); end;
Edit2.Text:=FloatToStrF(xx,ffFixed,4,2);
Memo1.Lines.add('x: '+FloatToStrF(xx,ffFixed,4,2)+' y:'+FloatToStrF(yy,ffFixed,4,2));
Image1.Canvas.Ellipse(px-2,py-2,px+2,py+2);
procedure TForm1.FormCreate(Sender: TObject);
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
function PH(x: Extended; a,y:Mas ; var Xmax,Xmin,Ymax,Ymin:extended):Extended;
procedure TForm1.Button2Click(Sender: TObject);
a[j]:=StrToFloat(StringGrid1.Cells[j-1,0]);
y[j]:=StrToFloat(StringGrid1.Cells[j-1,1])
Apx:=trunc((a[j]-Xmin)*Image1.Width/(Xmax-Xmin));
Ypx:=trunc(Image1.Height-(y[j]-Ymin)*Image1.height/(Ymax-Ymin));
Image1.Canvas.Pixels[Apx,Ypx]:=clBlack;
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
x:=Xmin+0*(Xmax-Xmin)/Image1.Width;
yy:=(PH(x,a,y,Xmax,Xmin,Ymax,Ymin));
image1.Canvas.MoveTo(0,trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin)));
x:=Xmin+PX*(Xmax-Xmin)/Image1.Width;
yy:=(PH(x,a,y,Xmax,Xmin,Ymax,Ymin));
PY:=trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin));
procedure TForm1.Button3Click(Sender: TObject);
yy:=(PH(x,a,y,Xmax,Xmin,Ymax,Ymin));
Memo1.Lines.add(' Значение функции в точке '+FloatToStr(x)+' = '+FloatToStr(yy));
procedure TForm1.Image1Click(Sender: TObject);
if Button2.Enabled=False then Exit;
px:=ScreenToClient(MyMouse.CursorPos).x-image1.left;
py:=(ScreenToClient(MyMouse.CursorPos).y-image1.top);
{ Memo1.Lines.add(inttostr(px) + 'Х ' + inttostr(py)); }
yy:=(Ymax-(py*((Ymax-Ymin)/image1.height)));
xx:=(Xmin+px*(Ymax-Ymin)/image1.width);
StringGrid1.Cells[n-1,0]:=FloatToStrF(xx,ffFixed,4,2);
StringGrid1.Cells[n-1,1]:=FloatToStrF(yy,ffFixed,4,2); end;
if koord=True then Edit2.Text:=FloatToStrF(xx,ffFixed,4,2);
Memo1.Lines.add('x: '+FloatToStrF(xx,ffFixed,4,2)+' y:'+FloatToStrF(yy,ffFixed,4,2));
Image1.Canvas.Ellipse(px-2,py-2,px+2,py+2);
procedure TForm1.FormCreate(Sender: TObject);
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
function S(x: Extended; i:Integer; a,y,xx,c,b,d:Mas ; var Xmax,Xmin,Ymax,Ymin:extended):Extended;
Sum:=a[i]+b[i]*(x-xx[i-1])+c[i]*(x-xx[i-1])*(x-xx[i-1])+d[i]*(x-xx[i-1])*(x-xx[i-1])*(x-xx[i-1]);
procedure TForm1.Button2Click(Sender: TObject);
xx[j]:=StrToFloat(StringGrid1.Cells[j,0]);
y[j]:=StrToFloat(StringGrid1.Cells[j,1]);
begin // Нахождение коэф с[i] методом прогонки
d[i]:=3*((y[i]-y[i-1])/h[i]-(y[i-1]-y[i-2])/h[i-1]); {y[0]}
P[i]:=(-cc[i])/(bb[i]+aa[i]*P[i-1]);
Q[i]:=(d[i]-aa[i]*Q[i-1])/(bb[i]+aa[i]*P[i-1]);
b[i]:=((y[i]-y[i-1])/h[i]-(1/3)*h[i]*(c[i+1]+2*c[i]));
Add('a = '+FloatToStrF(a[i],fffixed,4,2));
Add('b = '+FloatToStrF(b[i],fffixed,4,2));
Add('c = '+FloatToStrF(c[i],fffixed,4,2));
Add('d = '+FloatToStrF(d[i],fffixed,4,2));
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
yy:=(S(x,i,a,y,xx,c,b,d,Xmax,Xmin,Ymax,Ymin));
image1.Canvas.MoveTo(Trunc((XXmin-Xmin)*(Image1.Width/(Xmax-Xmin))),trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin)));
Image1.Canvas.Pixels[Trunc((XXmin-Xmin)*(Image1.Width/(Xmax-Xmin))),trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin))]:=clRed;
Rg:=trunc((xx[i]-xx[i-1])*(Image1.Width/(Xmax-Xmin)));
x:=XXmin+PX*(Xmax-Xmin)/Image1.Width;
yy:=(S(x,i,a,y,xx,c,b,d,Xmax,Xmin,Ymax,Ymin));
PY:=trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin));
Lg:=trunc((x-Xmin)*(Image1.Width/(Xmax-Xmin)));
procedure TForm1.Button3Click(Sender: TObject);
if (x>=xx[i-1]) and (x<=xx[i]) then
yy:=(S(x,i,a,y,xx,c,b,d,Xmax,Xmin,Ymax,Ymin));
Form1.memo1.lines.add('Значение функции в точке '+FloatToStr(x)+'= '+FloatToStr(yy));
procedure TForm1.FormCreate(Sender: TObject);
{ image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height); }
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ExtCtrls, jpeg,Math;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
function f(m:extended; var Xmax,Xmin,Ymax,Ymin:extended):extended;
function f2(m:extended; var Xmax,Xmin,Ymax,Ymin:extended):extended;
var kol,i,j,k,l,k1,n1,n,rcnt,check,check2:integer;
Xmax,Xmin,Ymax,Ymin,summa,summa2:extended;
matrix: array [1..10,1..11] of extended;
r,s,xsumkv,xsumkub,xsum4,fksum1, fksum2, fksum3:extended;
function Tform1.f(m:extended; var Xmax,Xmin,Ymax,Ymin:extended):extended;
x[i]:=StrToFloat(SG1.Cells[0,i-1]);
fk[i]:=StrToFloat(SG1.Cells[1,i-1]);
v:=v+(x[i]-xsum)*(fk[i]-fksum); // верхняя сумма
w:=w+sqr(x[i]-xsum); //нижняя сумма
function Tform1.f2(m:extended; var Xmax,Xmin,Ymax,Ymin:extended):extended;
x[i]:=StrToFloat(SG1.Cells[0,i-1]);
fk[i]:=StrToFloat(SG1.Cells[1,i-1]);
for j:=k1 to n1 do matrix[k,j]:=matrix[k,j]/s;
for i:=k1 to n do begin r:=matrix[i,k];
for j:=k1 to n1 do matrix[i,j]:=matrix[i,j]-matrix[k,j]*r;
for i:=n downto 1 do begin s:=matrix[i,n1];
for j:=i+1 to n do s:=s-matrix[i,j]*t[j];
procedure TForm1.Button1Click(Sender: TObject);
for i:=0 to RowCount do //очищаем её
SG1.height:=SG1.DefaultRowHeight*kol+10;
procedure TForm1.Button2Click(Sender: TObject);
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
image1.Canvas.MoveTo(0,Image1.height);
x:=Xmin+PX*(Xmax-Xmin)/Image1.Width;
for o:=0 to SG1.RowCount-1 do begin
if (round(x)=round(StrToFloat(SG1.Cells[0,o]))) then begin
summa2:=summa2+Power((y-StrToFloat(SG1.Cells[1,o])),2);
// ShowMessage('Сумма квадратов отклонений для полинома 1 '+FloatToStr(summa2));
PY:=round(Image1.Height-(y-Ymin)*Image1.height/(Ymax-Ymin));
{image1.Canvas.Pixels[PX,PY]:=clRed; }
ShowMessage('Сумма квадратов отклонений для полинома первой степени '+FloatToStr(summa2));
procedure TForm1.Button3Click(Sender: TObject);
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
image1.Canvas.MoveTo(0,Image1.height);
x[i]:=StrToFloat(SG1.Cells[0,i-1]);
fk[i]:=StrToFloat(SG1.Cells[1,i-1]);
px:=round(Image1.width div 2+x[i]*Image1.width/(Xmax-Xmin));
py:=round(Image1.height div 2-fk[i]*Image1.width/(Xmax-Xmin));
image1.Canvas.Ellipse(px-5, py-5, px+5, py+5);
procedure TForm1.Button4Click(Sender: TObject);
{image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
image1.Canvas.MoveTo(0,Image1.height);}
x:=Xmin+PX*(Xmax-Xmin)/Image1.Width;
for o:=0 to SG1.RowCount-1 do begin
if (round(x)=round(StrToFloat(SG1.Cells[0,o]))) then begin
summa:=summa+Power((y-StrToFloat(SG1.Cells[1,o])),2);
PY:=round(Image1.Height-(y-Ymin)*Image1.height/(Ymax-Ymin));
{image1.Canvas.Pixels[PX,PY]:=clRed; }
ShowMessage('Сумма квадратов отклонений для полинома второй степени = '+FloatToStr(summa));
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
x1:=Xmin+x*(Xmax-Xmin)/Image1.Width; //переводим из пикселей в наши координаты
y1:=(Xmax-Xmin)*(Image1.Height div 2-y)/Image1.Width;
if rcnt<>0 then SG1.rowcount:=SG1.rowcount+1;
SG1.Cells[0,SG1.rowcount-1]:=FloatToStr(x1);
SG1.Cells[1,SG1.rowcount-1]:=FloatToStr(y1);
SG1.height:=SG1.DefaultRowHeight*SG1.rowcount+15;
px:=round(Image1.width div 2+x1*Image1.width/(Xmax-Xmin));
py:=round(Image1.height div 2-y1*Image1.width/(Xmax-Xmin));
image1.Canvas.Ellipse(px-5, py-5, px+5, py+5);
procedure TForm1.FormCreate(Sender: TObject);
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
image1.Canvas.MoveTo(0,Image1.height);
procedure TForm1.Button5Click(Sender: TObject);
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
image1.Canvas.MoveTo(0,Image1.height);
SG1.height:=SG1.DefaultRowHeight*kol+15;
procedure TForm1.Button6Click(Sender: TObject);
Image1.Canvas.FillRect(Rect(0,0,Width,Height));
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
image1.Canvas.MoveTo(0,Image1.height);
{procedure TForm1.Button8Click(Sender: TObject);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ExtCtrls, jpeg;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
function PH(x: Extended; a,y:Mas ; var Xmax,Xmin,Ymax,Ymin:extended):Extended;
procedure TForm1.Button2Click(Sender: TObject);
a[j]:=StrToFloat(StringGrid1.Cells[j-1,0]);
y[j]:=StrToFloat(StringGrid1.Cells[j-1,1])
Apx:=trunc((a[j]-Xmin)*Image1.Width/(Xmax-Xmin));
Ypx:=trunc(Image1.Height-(y[j]-Ymin)*Image1.height/(Ymax-Ymin));
Image1.Canvas.Pixels[Apx,Ypx]:=clBlack;
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
x:=Xmin+0*(Xmax-Xmin)/Image1.Width;
yy:=(PH(x,a,y,Xmax,Xmin,Ymax,Ymin));
image1.Canvas.MoveTo(0,trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin)));
x:=Xmin+PX*(Xmax-Xmin)/Image1.Width;
yy:=(PH(x,a,y,Xmax,Xmin,Ymax,Ymin));
PY:=trunc(Image1.Height-(yy-Ymin)*Image1.height/(Ymax-Ymin));
function Pr1(x,h:Extended):Extended;
Pr:=(PH(x+h,a,y,Xmax,Xmin,Ymax,Ymin)-PH(x,a,y,Xmax,Xmin,Ymax,Ymin))/h;
function Pr2(x,h:Extended):Extended;
function Pr3(x,h:Extended):Extended;
function Pr4(x,h:Extended):Extended;
procedure TForm1.Button3Click(Sender: TObject);
yy:=(PH(x,a,y,Xmax,Xmin,Ymax,Ymin));
Memo1.Lines.add(' Значение функции в точке '+FloatToStr(x)+' = '+FloatToStr(yy));
px:=round(Image1.Width/2+x*Image1.width/(Xmax-Xmin));
py:=round(Image1.Height/2-yy*Image1.height/(Ymax-Ymin));
image1.Canvas.Ellipse(px-5, py-5, px+5, py+5);
procedure TForm1.Button4Click(Sender: TObject);
Form1.Memo1.Lines.add('Производная 1-ого порядка = '+FloatToStr(Pr1(StrToFloat(Edit4.text),0.1)));
Form1.Memo1.Lines.add('Производная 2-ого порядка = '+FloatToStr(Pr2(StrToFloat(Edit4.text),0.1)));
Form1.Memo1.Lines.add('Производная 3-ого порядка = '+FloatToStr(Pr3(StrToFloat(Edit4.text),0.1)));
Form1.Memo1.Lines.add('Производная 4-ого порядка = '+FloatToStr(Pr4(StrToFloat(Edit4.text),0.1)));
Form1.Memo1.Lines.add('Производная '+FloatToStr(n-1)+' ого порядка Многочлена степени :'+FloatToStr(n-1)+' ='+FloatToStr(sum));
procedure TForm1.Image1Click(Sender: TObject);
px:=ScreenToClient(MyMouse.CursorPos).x-image1.left;
py:=(ScreenToClient(MyMouse.CursorPos).y-image1.top);
{ Memo1.Lines.add(inttostr(px) + 'Х ' + inttostr(py)); }
yy:=(Ymax-(py*((Ymax-Ymin)/image1.height)));
xx:=(Xmin+px*(Ymax-Ymin)/image1.width);
StringGrid1.Cells[n-1,0]:=FloatToStrF(xx,ffFixed,4,2);
StringGrid1.Cells[n-1,1]:=FloatToStrF(yy,ffFixed,4,2);
Memo1.Lines.add('x: '+FloatToStrF(xx,ffFixed,4,2)+' y:'+FloatToStrF(yy,ffFixed,4,2));
Image1.Canvas.Ellipse(px-2,py-2,px+2,py+2);
procedure TForm1.FormCreate(Sender: TObject);
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
procedure TForm1.Button5Click(Sender: TObject);
For i:=0 to StringGrid1.ColCount-1 do
StringGrid1.Width:=StringGrid1.DefaultColWidth;
image1.Canvas.MoveTo(0,Image1.height div 2);
image1.Canvas.LineTo(Image1.width,Image1.height div 2);
image1.Canvas.MoveTo(Image1.width div 2,0);
image1.Canvas.LineTo(Image1.width div 2,Image1.height);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
procedure Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
Pop:integer; //Количество попавших точек
Ver,x,y,alfa,betta,S,a,Sigma,h:extended;
N := StrToInt(Edit5.text); //Количество точек
S := (betta-alfa)*(1/(sqrt(2*3.14159265)*Sigma));
If y <= (1/(sqrt(2*3.14159265)*Sigma))*exp((-1)*((x-a)*(x-a))/(2*Sigma*Sigma)) then
Memo1.Lines.add(IntToStr(Pop)+' - Кол-во попавших точек '+FloatToStr(Ver)+' - Площадь под кривой');
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Math, ExtCtrls, TeeProcs, TeEngine, Chart,
procedure Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
Xb:=StrToFloat(Edit4.Text); Xe:=StrToFloat(Edit3.Text);
SG1.Cells[0,0]:='i'; SG1.Cells[1,0]:='Xi'; SG1.Cells[2,0]:='Xi+h/2';
SG1.Cells[3,0]:='Xi+1'; SG1.Cells[4,0]:='Yi';
SG1.Cells[0,i+1]:=IntToStr(i); SG1.Cells[1,i+1]:=FloatToStr(Xb);
SG1.Cells[2,i+1]:=FloatToStr(Xb+h/2); SG1.Cells[3,i+1]:=FloatToStr(Xb+h);
Xi:=StrToFloat(SG1.Cells[1,i])+h; Yi:=StrToFloat(Edit6.Text);
SG1.Cells[0,i+1]:=IntToStr(i); SG1.Cells[1,i+1]:=FloatToStr(Xi);
SG1.Cells[2,i+1]:=FloatToStr(Xi+h/2); SG1.Cells[3,i+1]:=FloatToStr(Xi+h);
Label10.Caption:='Y'+IntToStr(i); Edit6.Text:=FloatToStr(Yi);
if Xi=Xe then Button1.Enabled:=false;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Math, ExtCtrls, TeeProcs, TeEngine, Chart,
procedure bt2Click(Sender: TObject);
procedure bt1Click(Sender: TObject);
type vector=array[0..max] of double;
alfa1,beta1,alfa2,beta2,c1,c2,h,x,y: double;
procedure TForm1.bt1Click(Sender: TObject); // Кнопка ОК
bt1.Enabled:=false; bt2.Visible:=true; sg1.Visible:=true;
a:=StrToInt(ed1.Text); b:=StrToInt(ed2.Text);
alfa1:=StrToFloat(ed3.Text); beta1:=StrToFloat(ed4.Text);
alfa2:=StrToFloat(ed6.Text); beta2:=StrToFloat(ed7.Text);
if frac((b-a)/h)>0.999999999999 then
ShowMessage('Выбранный шаг не позволяет поделить заданный отрезок на четное колличество отрезков!');
ShowMessage('Шаг изменнен на h = '+FloatToStr(h));
ShowMessage('Колличество отрезков n = '+IntToStr(n));
sg1.RowCount:=n+1; sg1.ColCount:=n+3;
sg1.Cells[0,0]:='X'+IntToStr(0)+'='+IntToStr(a); sg1.Cells[0,n]:='X'+IntToStr(n)+'='+IntToStr(b);
sg1.Cells[1,0]:=FloatToStr(beta1*h-alfa1);
sg1.Cells[n+2,0]:=FloatToStr(c1*h);
sg1.Cells[n,n]:=FloatToStr(-2*alfa2);
sg1.Cells[n+1,n]:=FloatToStr(beta2*(h*h)+alfa2);
sg1.Cells[n+2,n]:=FloatToStr(c2*(h*h));
sg1.Cells[0,i]:='X'+IntToStr(i)+'='+FloatToStr(x);
sg1.Cells[i+1,i]:=FloatToStr((-4)-(x*h)-(2*h*h));
sg1.Cells[i+2,i]:=FloatToStr(2-(x*h));
if sg1.Cells[i,j]='' then sg1.Cells[i,j]:='0';
procedure TForm1.bt2Click(Sender: TObject); //Кнопка Решить
sg2.Visible:=true; ch1.Visible:=true;
for i:=0 to n do begin //заполняем векторы исходными данными
Dm[i]:=StrToFloat(sg1.Cells[n+2,i]);
else Am[i]:=StrToFloat(sg1.Cells[j-1,i]);
Bm[i]:=-(StrToFloat(sg1.Cells[j,i]));
else Cm[i]:=StrToFloat(sg1.Cells[j+1,i]);
sg1.FixedCols:=0; sg1.FixedRows:=1; sg1.ColCount:=8;
sg1.Cells[0,0]:='i'; sg1.Cells[1,0]:='Ai'; sg1.Cells[2,0]:='Bi'; sg1.Cells[3,0]:='i';
sg1.Cells[4,0]:='Di'; sg1.Cells[5,0]:='Pi'; sg1.Cells[6,0]:='Qi'; sg1.Cells[7,0]:='Yi';
okr:=Cm[0]/Bm[0]; Pm[0]:=RoundTo(okr, -5); //подсчет прогоночных коэффициентов
okr:=-Dm[0]/Bm[0]; Qm[0]:=RoundTo(okr, -5);
Pm[i]:=Cm[i]/(Bm[i]-Am[i]*Pm[i-1]);
Qm[i]:=(Am[i]*Qm[i-1]-Dm[i])/(Bm[i]-Am[i]*Pm[i-1]);
for i:=0 to n+1 do //печать таблицы
sg1.Cells[1,i+1]:=FloatToStr(Am[i]);
sg1.Cells[2,i+1]:=FloatToStr(Bm[i]);
sg1.Cells[3,i+1]:=FloatToStr(Cm[i]);
sg1.Cells[4,i+1]:=FloatToStr(Dm[i]);
sg1.Cells[5,i+1]:=FloatToStr(Pm[i]);
sg1.Cells[6,i+1]:=FloatToStr(Qm[i]);
sg1.Cells[7,i+1]:=FloatToStr(Xm[i]);
sg2.Cells[0,0]:='X'; sg2.Cells[1,0]:='Y';
for i:=0 to n+1 do begin //печать корней
sg2.Cells[1,i+1]:=FloatToStr(Xm[i]);
Поставленные задачи были успешно решены с помощью самостоятельно разработанного ПО. Конфликтов, сбоев, ошибок и противоречий в работе программ выявлено не было.
Метод решения задачи, при котором коэффициенты a[i], определяются непосредственным решением системы - метод неопределенных коэффициентов. Интерполяционная формула Ньютона и ее варианты. Построение интерполяционного многочлена Лагранжа по заданной функции. лабораторная работа [147,4 K], добавлен 16.11.2015
Преобразование коэффициентов полиномов Чебышева. Функции, применяемые в численном анализе. Интерполяция многочленами, метод аппроксимации - сплайн-аппроксимация, ее отличия от полиномиальной аппроксимации Лагранжем и Ньютоном. Метод наименьших квадратов. реферат [21,5 K], добавлен 27.01.2011
Вычислительные методы линейной алгебры. Интерполяция функций. Интерполяционный многочлен Ньютона. Узлы интерполяции. Интерполяционный многочлен Лагранжа. Интерполяция сплайнами. Коэффициенты кубических сплайнов. лабораторная работа [70,5 K], добавлен 06.02.2004
Особенности решения алгебраических, нелинейных, трансцендентных уравнений. Метод половинного деления (дихотомия). Метод касательных (Ньютона), метод секущих. Численные методы вычисления определённых интегралов. Решение различными методами прямоугольников. курсовая работа [473,4 K], добавлен 15.02.2010
Численные методы представляют собой набор алгоритмов, позволяющих получать приближенное (численное) решение математических задач. Два вида погрешностей, возникающих при решении задач. Нахождение нулей функции. Метод половинного деления. Метод хорд. курс лекций [81,2 K], добавлен 06.03.2009
Некоторые сведения теории вероятностей. Математическое ожидание, дисперсия. Точность оценки, доверительная вероятность. Доверительный интервал. Нормальное распределение. Метод Монте-Карло. Вычисление интегралов методом Монте-Карло. Алгоритмы метода. курсовая работа [112,9 K], добавлен 20.12.2002
Задачи Коши и методы их решения. Общие понятия, сходимость явных способов типа Рунге-Кутты, практическая оценка погрешности приближенного решения. Автоматический выбор шага интегрирования, анализ брюсселятора и метод Зонневельда для его расчета. курсовая работа [1,7 M], добавлен 03.11.2011
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Численные методы решения математических задач курсовая работа. Математика.
Отчет по практике по теме Выяснение уровня участия жителей города в проектах компании
Курсовая работа по теме Об'єктно-орієнтоване програмування
Произведения С Я Маршака Для Детей Курсовая
План Зимнего Сочинения
Реферат: Организация системы гарантийного и сервисного обслуживания как стратегическое направление предпр
Эмоциональный Интеллект Дипломная Работа
Реферат: Понятие и основные методы исследовательской фотографии
Курсовая Работа На Тему Розробка Стратегії Маркетингової Діяльності На Прикладі Ват "Укртелеком"
Итоговое Сочинение Свой Путь
Реферат: Galileo Science And The Church Essay Research
Реферат по теме Инвестиции в недвижимость
Курсовая работа по теме Человеческий капитал: теоретические и практические аспекты
Контрольная работа: Плакирование металлов
Курсовая работа: The UK as a member of the EU
Дневник По Практике В Отделе Полиции
Органы Системы Органов Контрольная Работа
Курсовая работа: Специфика российского менеджмента
Курсовая работа по теме Анализ себестоимости важнейших видов продукции (на примере ООО 'ПО 'Орника')
Сочинение В Гостях У Рыцаря 6 Класс
Темы Для Рефератов По Физкультуре 10 Класс
Особенности строения и подсчет запасов шахтного поля в Южно-Донбасском угленосном районе Донецкого бассейна - Геология, гидрология и геодезия курсовая работа
Император Павел I - История и исторические личности реферат
Борьба народа Приднестровья за самоопределение. Образование ПМР - История и исторические личности дипломная работа


Report Page