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

Программирование процесса определения погрешности значений функций, приближенного решения систем уравнений, аппроксимации функций, вычисления интегралов, численного интегрирования дифференциальных уравнений, используя среду разработки Borland Delphi.

Рубрика Математика
Вид контрольная работа
Язык русский
Дата добавления 12.12.2012
Размер файла 302,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

Задание 1. Определение погрешности значений функций

Задание 2. Приближенное решение уравнений

Задание 3. Приближенное решение систем уравнений

Задание 4. Аппроксимация функций

Задание 5. Приближенное вычисление интегралов

Задание 6. Численное интегрирование дифференциальных уравнений

Задание 1. Определение погрешности значений функций

Вычислите значения величин х и у и оцените абсолютные и относительные погрешности этих значений при заданных значениях параметров a, b, c (указанные значащие цифры каждого из них являются верными).

Решение

Найдем значение х 0 и у 0 при а 0=1; b0=3; c0=1

Найдем значение х 1 и у 1 при а=1,25; b=3; c=1

Вычислим приближенные значения х 2 и у 2 при а 0=1,25; b0=3; c0=1

;

;

Абсолютная погрешность:

Относительная погрешность:

;

Задание 2. Приближенное решение уравнений

Дано уравнение f(x) = 0. Требуется:

1. Локализовать действительные корни уравнения;

2. Осуществить вручную 3 шага вычислений одного из корней указанным методом;

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

4. Найти все корни уравнения с точностью = 10 - 4 с помощью программы.

В вариантах с номерами 5п-4 использовать метод половинного деления; с номерами 5п-3 - метод хорд; с номерами 5п-2 - метод касательных; с номерами 5п-1 - комбинированный метод хорд и касательных; с номерами 5п - метод простых итераций. Здесь п - натуральное число(1, 2, 3, и т.д.).

1. Локализовать действительные корни уравнения

Интервалы изоляции корня определяем графически как абсциссу точки пересечения графиков функций:

рис.1.

Из графика находим интервал (1;2)

2. Осуществить вручную 3 шага вычислений одного из корней указанным методом.

Метод касательных.

Схематично последовательное нахождение приближений к корню рассматриваемым методом изображено на рис.2.

Рис.2

Каждое следующее приближение определяется как первая координата точки пересечения касательной к графику функции у = f(x) с осью 0x.

Итерационная схема отыскания корня имеет вид:

(2.5)

Здесь f (x) - первая производная функции f(x).

Условием окончания расчетов по формулам (2.5) может служить неравенство:

(2.6),

;

на , тогда итерационная формула имеет вид:

причем х0=а, в нашем случае, а=1, x0=1.

1) итерация

2) итерация

3) итерация

4) итерация

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

Программа

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Image1: TImage;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function fx(x:real): real; // объявление функции

begin

fx:=ln(x*x+2)-exp(-2*x)-1; // сама функция

end;

function fx2(x:real): real;

begin

fx2:= (4-2*x*x)/sqr((x*x+2))-4*exp(-2*x);

end;

function fx1(x:extended): extended;

begin

fx1:=2*x/(x*x+2)+2*exp(-2*x);

end;

procedure TForm1.Button1Click(Sender: TObject);

label 1;

var

a,b,e,ep: real; // объявление переменных

x0,f1,f2,x1,x: real;

k:integer;

s1,s2:string;

begin

a:=strtofloat(edit1.Text);

b:=strtofloat(edit2.Text);

e:=StrToFloat(edit3.Text);

k:=0;

ep:=e;

x:=(a+b)/2;

if fx1(x)*fx2(x)>0 then

x0:=b else x0:=a;

x1:=x0-fx(x0)/fx1(x0);

while abs(x1-x0)>e do

begin

x0:=x1;

x1:=x0-fx(x0)/fx1(x0);

end;

str(x1:10:8,s1);

str(f2:10:8,s2);

label1.Caption:='x='+floattostr(x1);

label2.Caption:='f(x)='+floattostr(fx(x1));

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close;

end;

end.

Результат

Задание 3. Приближенное решение систем уравнений

Дана система четырех линейных уравнений с четырьмя неизвестными х 1, х 2, х 3, х 4. Расширенная матрица этой системы имеет вид:

где В=(b1, b2, b3, b4)T- столбец свободных членов системы Ах = В.

Требуется:

1. Найти приближенно решение данной системы, сделав три итерации вручную и взяв в качестве начального приближения нулевой набор

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

В нечетных вариантах применить метод простых итераций, в четных - метод Зейделя. В программе предусмотреть возможность варьирования точности, вывода как искомых решений, так и невязок

(п - номер итерации).

Требуется:

1. Найти приближенное решение данной системы, сделав три итерации вручную и взяв в качестве начального приближения нулевой набор

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

В программе предусмотреть возможность варьирования точности, вывода как искомых решений, так и невязок

(n- номер итерации)

Метод Зейделя

1) Условие сходимости

Следовательно, система сходится. За начальную итерацию принимаем

Первая итерация

Вторая итерация

Третья итераций

Программа

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Edit1: TEdit;

Label9: TLabel;

Image1: TImage;

Label10: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a: array [1..4,1..4] of real;

b: array [1..4] of real;

e: real;

n: integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

a[1,1]:=9; a[1,2]:=-2; a[1,3]:=1; a[1,4]:=3; b[1]:=4 ;

a[2,1]:=3; a[2,2]:=10; a[2,3]:=1; a[2,4]:=-1; b[1]:=-4;

a[3,1]:=-1; a[3,2]:=2; a[3,3]:=8; a[3,4]:=3; b[1]:=2;

a[4,1]:=1; a[4,2]:=-1; a[4,3]:=-3; a[4,4]:=11; b[1]:=4;

n:=4;

end;

procedure TForm1.Button1Click(Sender: TObject);

label l1;

var

i,j,k: integer;

s,e,ep: real;

x: array [1..4] of real;

xn: array [1..4] of real;

t: array [1..4] of real;

bool: boolean;

s1,s2,s3,s4,s5,s6,s7,s8: string;

begin

x[1]:=0;

x[2]:=0;

x[3]:=0;

x[4]:=0;

e:=strtofloat(edit1.Text);

ep:= e;

k:=0;

repeat

ep:=ep*10;

k:=k+1;

until ep>=1;

bool:=false;

for i:=1 to 4 do x[i]:=b[i];

//while not bool do

// begin

l1: for i:=1 to 4 do

begin

s:=0;

for j:=1 to 4 do s:=s+a[i,j]*x[j];

xn[i]:=(b[i]-s)/a[i,i]+x[i];

t[i]:=abs(xn[i]-x[i]);

x[i]:=xn[i];

end;

for i:=1 to 4 do

begin

if t[i]>e then goto l1;

end;

str(x[1]:k+4:k,s1);

str(x[2]:k+4:k,s2);

str(x[3]:k+4:k,s3);

str(x[4]:k+4:k,s4);

str(t[1]:k+3:k+1,s5);

str(t[2]:k+3:k+1,s6);

str(t[3]:k+3:k+1,s7);

str(t[4]:k+3:k+1,s8);

Label1.Caption:='x1 = '+ s1;

Label2.Caption:='x2 = '+ s2;

Label3.Caption:='x3 = '+ s3;

Label4.Caption:='x4 = '+ s4;

Label5.Caption:='Невязка 1 = '+s5;

Label6.Caption:='Невязка 2 = '+s6;

Label7.Caption:='Невязка 3 = '+s7;

Label8.Caption:='Невязка 4 = '+s8;

end;

end.

Результат

Задание 4. Аппроксимация функций

уравнение интеграл дифференциальный delphi

Даны наборы десяти значений независимой переменной x и соответствующих им значений функции y. Требуется:

1) Методом наименьших квадратов (МНК) найти аппроксимацию зависимости y(x) в виде . С помощью найденной зависимости найти значения и .

2) Найти те же значения и методом квадратичной интерполяции (МКИ).

3) Программными средствами построить на одной координатной плоскости параболы, полученные с помощью МНК и с помощью МКИ.

Х

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1,0

У

0,1

0,2

0,4

0,7

0,9

1,3

1,9

2,6

3,5

4,6

Х 1=0,84

Х 2=0,27

Программа

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, ExtCtrls, TeeProcs, TeEngine, Chart, StdCtrls,math,

Series;

type

TForm1 = class(TForm)

Chart1: TChart;

StringGrid1: TStringGrid;

Series1: TLineSeries;

Series2: TPointSeries;

Series3: TPointSeries;

Series4: TPointSeries;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Series5: TPointSeries;

Series6: TPointSeries;

GroupBox1: TGroupBox;

Button2: TButton;

Button3: TButton;

GroupBox2: TGroupBox;

Button1: TButton;

Button4: TButton;

Image1: TImage;

Series7: TLineSeries;

Series8: TLineSeries;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Label4: TLabel;

Label5: TLabel;

Button8: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

x1:array[1..10] of real = (0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1);

x2:array[1..10] of real = (0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1);

y1:array[1..10] of real = (8.3,7.2,6.4,5.9,5.8,5.6,5.5,5.2,5.1,4.9);

y2:array[1..10] of real = (8.3,7.2,6.4,5.9,5.8,5.6,5.5,5.2,5.1,4.9);

k:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

i: integer;

sx1,sx2,sx3,sx4,sx2y,sxy,sy:real;

det,deta,detb,detc:real;

a,b,c:real;

y11,y22,x11,x22: real;

s1,s2: string;

q:array[1..3,1..3] of real;

w:array[1..3] of real;

y:array[1..10] of real;

begin

if RadioButton1.Checked then

begin

for i:=1 to 10 do

begin

x1[i]:=x2[i];

y1[i]:=y2[i];

end;

end;

if RadioButton2.Checked then

begin

for i:=1 to 10 do

begin

x1[i]:=strtofloat(StringGrid1.Cells[i,0]);

y1[i]:=strtofloat(StringGrid1.Cells[i,1]);

end;

end;

sx1:=0; sx3:=0; sx2y:=0; sy:=0;

sx2:=0; sx4:=0; sxy:=0;

for i:=1 to 10 do

begin

sx1 := sx1+x1[i];

sx2 := sx2+power(x1[i],2);

sx3 := sx3+power(x1[i],3);

sx4 := sx4+power(x1[i],4);

sx2y := sx2y + power(x1[i],2)*y1[i];

sxy := sxy + x1[i]*y1[i];

sy := sy + y1[i];

end;

q[1,1]:=sx4; q[1,2]:=sx3; q[1,3]:=sx2; w[1]:=sx2y;

q[2,1]:=sx3; q[2,2]:=sx2; q[2,3]:=sx1; w[2]:= sxy;

q[3,1]:=sx2; q[3,2]:=sx1; q[3,3]:=10; w[3]:=sy;

det:= (q[1,1]*q[2,2]*q[3,3]+q[2,1]*q[3,2]*q[1,3]+q[1,2]*q[2,3]*q[3,1])-(q[1,3]*q[2,2]*q[3,1]+q[2,3]*q[3,2]*q[1,1]+q[1,2]*q[2,1]*q[3,3]);

deta:= (w[1]*q[2,2]*q[3,3]+w[2]*q[3,2]*q[1,3]+q[1,2]*q[2,3]*w[3])-(q[1,3]*q[2,2]*w[3]+q[2,3]*q[3,2]*w[1]+q[1,2]*w[2]*q[3,3]);

detb:= (q[1,1]*w[2]*q[3,3]+q[2,1]*w[3]*q[1,3]+w[1]*q[2,3]*q[3,1])-(q[1,3]*w[2]*q[3,1]+q[2,3]*w[3]*q[1,1]+w[1]*q[2,1]*q[3,3]);

detc:= (q[1,1]*q[2,2]*w[3]+q[2,1]*q[3,2]*w[1]+q[1,2]*w[2]*q[3,1])-(w[1]*q[2,2]*q[3,1]+ w[2]*q[3,2]*q[1,1]+q[1,2]*q[2,1]*w[3]);

a := deta/det;

b := detb/det;

c := detc/det;

series1.Clear;

series2.Clear;

series3.Clear;

series4.Clear;

for i:=1 to 10 do

begin

y[i]:=a*x1[i]*x1[i]+b*x1[i]+c;

str (y[i]:10:4,s1);

str (x1[i]:10:4,s2);

series1.AddXY(x1[i],y[i]);

series2.AddXY(x1[i],y1[i]);

end;

x11:=0.27;

x22:=0.84;

y11:=a*x11*x11+b*x11+c;

y22:=a*x22*x22+b*x22+c;

series3.AddXY(x11,y11);

series4.AddXY(x22,y22);

end;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.FormCreate(Sender: TObject);

var

i:integer;

begin

StringGrid1.Cells[0,0]:= 'Значение Х ';

StringGrid1.Cells[0,1]:= 'Значение У ';

for i:=1 to 10 do

begin

StringGrid1.Cells[i,0]:=floattostr(x1[i]);

StringGrid1.Cells[i,1]:=floattostr(y1[i]);

end;

end;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.RadioButton1Click(Sender: TObject);

var

i:integer;

begin

for i:=1 to 10 do

begin

StringGrid1.Cells[i,0]:=floattostr(x2[i]);

StringGrid1.Cells[i,1]:=floattostr(y2[i]);

end;

if RadioButton1.Checked then StringGrid1.Enabled:=false;

end;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

if RadioButton2.Checked then StringGrid1.Enabled:=true;

end;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Button2Click(Sender: TObject);

var

i:integer;

x11,y11: real; //qwy massiwi

a,b,c:real;

t1,t2,t3:real;

nen:real;

xim1,xi1,xip1: real;

q:array[1..3,1..3] of real;

w:array[1..3] of real;

y3:array[1..10] of real;

yim1,yi,yip1:real;

det,deta,detb,detc:real;

begin

if RadioButton1.Checked then

begin

for i:=1 to 10 do

begin

x1[i]:=x2[i];

y1[i]:=y2[i];

end;

end;

if RadioButton2.Checked then

begin

for i:=1 to 10 do

begin

x1[i]:=strtofloat(StringGrid1.Cells[i,0]);

y1[i]:=strtofloat(StringGrid1.Cells[i,1]);

Button1.Click;

end;

end;

t1:=x1[1];

t2:=x1[1];

t2:=x1[1];

x11:=0.27;

//------

for i:=1 to 10 do

begin

if abs(t1-x11)<abs(x1[i]-x11) then

xim1:=t1

else

t1:=x1[i-1];

nen:=xim1;

end;

//------

for i:=1 to 10 do

begin

if (abs(t2-x11)<abs(x1[i]-x11))and(t2<>t1) then

xi1:=t2

else

t2:=x1[i-1];

nen:=xi1;

end;

//-----

for i:=1 to 10 do

begin

if (abs(t3-x11)<abs(x1[i]-x11))and(t3<>t1)and(t3<>t2) then

xip1:=t3

else

t3:=x1[i-1];

nen:=xip1;

end;

for i:=1 to 10 do

begin

if t1=x1[i]then

yim1:=y1[i];

if t2=x1[i]then

yi:=y1[i];

if t3=x1[i]then

yip1:=y1[i];

end;

q[1,1]:=xim1*xim1; q[1,2]:=xim1; q[1,3]:=1; w[1]:=yim1;

q[2,1]:=xi1*xi1; q[2,2]:=xi1; q[2,3]:=1; w[2]:= yi;

q[3,1]:=xip1*xip1; q[3,2]:=xip1; q[3,3]:=1; w[3]:=yip1;

det:= (q[1,1]*q[2,2]*q[3,3]+q[2,1]*q[3,2]*q[1,3]+q[1,2]*q[2,3]*q[3,1])-(q[1,3]*q[2,2]*q[3,1]+q[2,3]*q[3,2]*q[1,1]+q[1,2]*q[2,1]*q[3,3]);

deta:= (w[1]*q[2,2]*q[3,3]+w[2]*q[3,2]*q[1,3]+q[1,2]*q[2,3]*w[3])-(q[1,3]*q[2,2]*w[3]+q[2,3]*q[3,2]*w[1]+q[1,2]*w[2]*q[3,3]);

detb:= (q[1,1]*w[2]*q[3,3]+q[2,1]*w[3]*q[1,3]+w[1]*q[2,3]*q[3,1])-(q[1,3]*w[2]*q[3,1]+q[2,3]*w[3]*q[1,1]+w[1]*q[2,1]*q[3,3]);

detc:= (q[1,1]*q[2,2]*w[3]+q[2,1]*q[3,2]*w[1]+q[1,2]*w[2]*q[3,1])-(w[1]*q[2,2]*q[3,1]+ w[2]*q[3,2]*q[1,1]+q[1,2]*q[2,1]*w[3]);

a := deta/det;

b := detb/det;

c := detc/det;

series5.Clear;

series8.Clear;

y11:=a*x11*x11+b*x11+c;

series5.AddXY(x11,y11);

for i:=1 to 10 do

begin

y3[i]:=a*x1[i]*x1[i]+b*x1[i]+c;

series8.AddXY(x1[i],y3[i]);

end;

end;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Button3Click(Sender: TObject);

var

i:integer;

x11,y11: real; //qwy massiwi

a,b,c:real;

t1,t2,t3:real;

nen:real;

xim1,xi1,xip1: real;

q:array[1..3,1..3] of real;

w:array[1..3] of real;

y3:array[1..10] of real;

yim1,yi,yip1:real;

det,deta,detb,detc:real;

begin

if RadioButton1.Checked then

begin

for i:=1 to 10 do

begin

x1[i]:=x2[i];

y1[i]:=y2[i];

end;

end;

if RadioButton2.Checked then

begin

for i:=1 to 10 do

begin

x1[i]:=strtofloat(StringGrid1.Cells[i,0]);

y1[i]:=strtofloat(StringGrid1.Cells[i,1]);

Button1.Click;

end;

end;

t1:=x1[1];

t2:=x1[1];

t2:=x1[1];

x11:=0.84;

//------

for i:=1 to 10 do

begin

if abs(t1-x11)<=abs(x1[i]-x11) then

xim1:=t1

else

t1:=x1[i-1];

nen:=xim1;

end;

//------

for i:=1 to 10 do

begin

if (abs(t2-x11) < abs(x1[i]-x11)) and (t2<>t1) then

xi1:=t2

else

t2:=x1[i-1];

nen:=xi1;

end;

//-----

for i:=1 to 10 do

begin

if (abs(t3-x11)<=abs(x1[i]-x11))and(t3<>t1)and(t3<>t2) then

xip1:=t3

else

t3:=x1[i-1];

nen:=xip1;

end;

for i:=1 to 10 do

begin

if t1=x1[i]then

yim1:=y1[i];

if t2=x1[i]then

yi:=y1[i];

if t3=x1[i]then

yip1:=y1[i];

end;

q[1,1]:=xim1*xim1; q[1,2]:=xim1; q[1,3]:=1; w[1]:=yim1;

q[2,1]:=xi1*xi1; q[2,2]:=xi1; q[2,3]:=1; w[2]:= yi;

q[3,1]:=xip1*xip1; q[3,2]:=xip1; q[3,3]:=1; w[3]:=yip1;

det:= (q[1,1]*q[2,2]*q[3,3]+q[2,1]*q[3,2]*q[1,3]+q[1,2]*q[2,3]*q[3,1])-(q[1,3]*q[2,2]*q[3,1]+q[2,3]*q[3,2]*q[1,1]+q[1,2]*q[2,1]*q[3,3]);

deta:= (w[1]*q[2,2]*q[3,3]+w[2]*q[3,2]*q[1,3]+q[1,2]*q[2,3]*w[3])-(q[1,3]*q[2,2]*w[3]+q[2,3]*q[3,2]*w[1]+q[1,2]*w[2]*q[3,3]);

detb:= (q[1,1]*w[2]*q[3,3]+q[2,1]*w[3]*q[1,3]+w[1]*q[2,3]*q[3,1])-(q[1,3]*w[2]*q[3,1]+q[2,3]*w[3]*q[1,1]+w[1]*q[2,1]*q[3,3]);

detc:= (q[1,1]*q[2,2]*w[3]+q[2,1]*q[3,2]*w[1]+q[1,2]*w[2]*q[3,1])-(w[1]*q[2,2]*q[3,1]+ w[2]*q[3,2]*q[1,1]+q[1,2]*q[2,1]*w[3]);

a := deta/det;

b := detb/det;

c := detc/det;

series6.Clear;

series7.Clear;

//Button1.Click;

y11:=a*x11*x11+b*x11+c;

for i:=1 to 10 do

begin

y3[i]:=a*x1[i]*x1[i]+b*x1[i]+c;

series7.AddXY(x1[i],y3[i]);

end;

series6.AddXY(x11,y11);

end;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Timer1Timer(Sender: TObject);

var

DateTime : TDateTime;

str : string;

begin

DateTime := Time;

str := TimeToStr(DateTime);

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

form1.Close;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

series1.Clear;

series3.Clear;

series4.Clear;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

series5.Clear;

series8.Clear;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

series6.Clear;

series7.Clear;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

Series2.Clear;

end;

end.

Результат

Задание 5. Приближенное вычисление интегралов

Дан интеграл . Требуется:

1. Вычислить вручную методом, указанным в варианте, приближенное значение интеграла, разбив отрезок интегрирования на 8 частей.

2. Составить программу для вычисления на компьютере данного интеграла методом, указанным в варианте. В программе должна быть предусмотрена возможность варьирования точности.

В вариантах с номерами 3n-2 использовать метод прямоугольников, в вариантах с номерами 3n-1 - метод трапеций, в вариантах с номерами 3n - метод Симпсона. (n=1,2,…)

1. Вычислить вручную определенный интеграл указанным методом, приняв число интервалов разбиения отрезка интегрирования N=8 (метод прямоугольников).

Разобьем отрезок на 8 части. Шаг разбиения . Вычисляем в каждой точке разбиения значения подынтегральной функции

i

0

1

2

3

4

5

6

7

8

X

1

1,125

1,25

1,375

1,5

1,625

1,75

1,875

2

Y

0,910239

1,198449

1,544581

1,959033

2,455553

3,052755

3,776527

4,664044

5,77078

Формула прямоугольников

,

2. Составить программу для вычисления на компьютере данного интеграла методом прямоугольников. В программе должна быть предусмотрена возможность варьирования точности.

Программа

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Image1: TImage;

Label2: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function fx(x:real):real;

begin

fx:=x*x/ln(4-x);

end;

procedure TForm1.Button1Click(Sender: TObject);

// процедура на расчет методом прямоугольников

var

ep,a,b: real;

i1,h,s,x,e,r,i: extended;

ii: integer;

k,n: integer;

s1: string;

begin

a:=strtofloat(edit1.text);

b:=strtofloat(edit2.text);

e:=strtofloat(edit3.text);

n:=round(1/e);

k:=0;

ep:=e;

e:=1/n;

h:=(b-a)/n;

i1:=0;

i:=0;

r:=2*e;

while r>e do

begin

s:=0;

for ii:=1 to round(int((b-a)/ h)) do

begin

x:=a+h;

s:=s+fx(x);

end;

i:= h*s;

r:=abs(i-i1);

h:=h/2;

i1:=i;

end;

label1.Caption:=floattostr(i);

end;

end.

Результат

Задание 6. Численное интегрирование дифференциальных уравнений

Дано обыкновенное дифференциальное уравнение . Требуется приближенно найти частное решение этого уравнения, удовлетворяющее начальному условию . Для этого следует:

1) Вычислить вручную, с шагом h=0.1, пять последовательных значений искомого частного решения (в четных вариантах - методом Эйлера, в нечетных - методом Адамса).

2) Составить программу для расчета и построения на компьютере соответствующей этому решению интегральной кривой. Ограничиться значениями аргумента на отрезке [0;1]. В вариантах с четными номерами расчеты провести с использованием как метода Эйлера, так и метода Рунге- Кутта 3-го порядка; в вариантах с нечетными номерами - как метода Адамса, так и метода Рунге-Кутта 4-го порядка. В программах предусмотреть возможность варьирования шага h.

, y(0)= 0

Решение

При разбиении отрезка на 5 частей шаг постоянный h=0.2, значение

k

x

y

0

0

0

1

0,2

0,1

2

0,4

0,217038

3

0,6

0,344405

4

0,8

0,475873

5

1

0,607114

Программа:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Label4: TLabel;

Edit4: TEdit;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

y0, x0, a, b, h: extended;

implementation

{$R *.dfm}

function fxy(x,y: extended): extended;

begin

fxy:=(x+exp(y))/(y*y+exp(y));

end;

procedure TForm1.Button1Click(Sender: TObject);

var

x,y : extended;

K1,X1,Y1,K2,Y2,

K3,Y3,x2,k4,dy :extended;

begin

y0 := StrToFloat(Edit1.Text);

x0 := 0;

a := StrToFloat(Edit2.Text);

b := StrToFloat(Edit3.Text);

h := StrToFloat(Edit4.Text);

memo1.Lines.Add(' Метод Рунге-Кутта');

x:=x0;

y:=y0;

memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y));

while x<=b do

begin

k1:=h*fxy(x,y);

x1:=x+h/2;

y1:=y+k1/2;

k2:=h*fxy(x1,y1);

y2:=y+k2/2;

k3:=h*fxy(x1,y2);

y3:=y+k3;

x2:=x+h;

k4:=h*fxy(x2,y3);

dy:=(k1+2*k2+2*k3+k4)/6;

y:=y+dy;

x:=x+h;

memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y));

end;

memo1.Lines.Add('');

memo1.Lines.Add(' Метод Адамса ');

x:=x0;

y:=y0;

memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y));

while x<=b do

begin

x:=x+h;

y:=y+h*fxy(x,y);

memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y));

end;

end;

end.

Результат

Размещено на Allbest.ru

...

Подобные документы

  • Численные методы решения систем линейных уравнений: Гаусса, простой итерации, Зейделя. Методы аппроксимации и интерполяции функций: неопределенных коэффициентов, наименьших квадратов. Решения нелинейных уравнений и вычисление определенных интегралов.

    курсовая работа [322,7 K], добавлен 27.04.2011

  • Вычисление приближенных величин и погрешностей. Решение алгебраических и трансцендентных уравнений, интерполяция функций и методы численного интегрирования. Применение метода наименьших квадратов к построению эмпирических функциональных зависимостей.

    курсовая работа [378,5 K], добавлен 08.01.2013

  • Задачи Коши и методы их решения. Общие понятия, сходимость явных способов типа Рунге-Кутты, практическая оценка погрешности приближенного решения. Автоматический выбор шага интегрирования, анализ брюсселятора и метод Зонневельда для его расчета.

    курсовая работа [1,7 M], добавлен 03.11.2011

  • Определение дифференциальных уравнений в частных производных параболического типа. Приведение уравнения второго порядка к каноническому виду. Принцип построения разностных схем. Конечно-разностный метод решения задач. Двусторонний метод аппроксимации.

    дипломная работа [603,8 K], добавлен 24.01.2013

  • Основные понятия теории погрешностей. Приближенное решение некоторых алгебраических трансцендентных уравнений. Приближенное решение систем линейных уравнений. Интерполирование функций и вычисление определенных интегралов, дифференциальных уравнений.

    методичка [899,4 K], добавлен 01.12.2009

  • Изучение численных методов приближенного решения нелинейных систем уравнений. Составление на базе вычислительных схем алгоритмов; программ на алгоритмическом языке Фортран - IV. Приобретение практических навыков отладки и решения задач с помощью ЭВМ.

    методичка [150,8 K], добавлен 27.11.2009

  • Дифференциальные уравнения как математический инструмент моделирования и анализа разнообразных явлений и процессов в науке и технике. Описание математических методов решения систем дифференциальных уравнений. Методы расчета токов на участках цепи.

    курсовая работа [337,3 K], добавлен 19.09.2011

  • Анализ методов решения систем дифференциальных уравнений, которыми можно описать поведение материальных точек в силовом поле, законы химической кинетики, уравнения электрических цепей. Этапы решения задачи Коши для системы дифференциальных уравнений.

    курсовая работа [791,0 K], добавлен 12.06.2010

  • Постановка задачи вычисления значения определённых интегралов от заданных функций. Классификация методов численного интегрирования и изучение некоторых из них: методы Ньютона-Котеса (формула трапеций, формула Симпсона), квадратурные формулы Гаусса.

    реферат [99,0 K], добавлен 05.09.2010

  • Неизвестная функция, ее производные и независимые переменные - элементы дифференциального уравнения. Семейство численных алгоритмов решения обыкновенных дифференциальных уравнений, их систем. Методы наименьших квадратов, золотого сечения, прямоугольников.

    контрольная работа [138,9 K], добавлен 08.01.2016

  • Исследование функции, построение ее графика, используя дифференциальное исчисление. Вычисление неопределенных интегралов, используя методы интегрирования. Пределы функции. Определение области сходимости степенного ряда. Решение дифференциальных уравнений.

    контрольная работа [592,7 K], добавлен 06.09.2015

  • Понятие, закономерности формирования и решения дифференциальных уравнений. Теорема о существовании и единственности решения задачи Коши. Существующие подходы и методы решения данной задачи, оценка погрешности полученных значений. Листинг программы.

    курсовая работа [120,8 K], добавлен 27.01.2014

  • Решение систем линейных алгебраических уравнений методом простой итерации. Полиномиальная интерполяция функции методом Ньютона с разделенными разностями. Среднеквадратическое приближение функции. Численное интегрирование функций методом Гаусса.

    курсовая работа [2,4 M], добавлен 14.04.2009

  • Решение систем линейных алгебраических уравнений методом исключения Гаусса. Табулирование и аппроксимация функций. Численное решение обыкновенных дифференциальных уравнений. Приближенное вычисление определенных интегралов. Решение оптимизационных задач.

    курсовая работа [1,6 M], добавлен 21.11.2013

  • Метод последовательного исключения неизвестных (метод Гаусса) при решении задач аппроксимации функции в прикладной математике. Метод Гаусса с выбором главного элемента и оценка погрешности при решении системы линейных уравнений, итерационные методы.

    контрольная работа [94,4 K], добавлен 04.09.2010

  • Методы решения систем линейных алгебраических уравнений (СЛАУ): Гаусса и Холецкого, их применение к конкретной задаче. Код программы решения перечисленных методов на языке программирования Borland C++ Builder 6. Понятие точного метода решения СЛАУ.

    реферат [58,5 K], добавлен 24.11.2009

  • Методы оценки погрешности интерполирования. Интерполирование алгебраическими многочленами. Построение алгебраических многочленов наилучшего среднеквадратичного приближения. Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений.

    лабораторная работа [265,6 K], добавлен 14.08.2010

  • Приближенные числа и действия над ними. Решение систем линейных алгебраических уравнений. Интерполирование и экстраполирование функций. Численное решение обыкновенных дифференциальных уравнений. Отделение корня уравнения. Поиск погрешности результата.

    контрольная работа [604,7 K], добавлен 18.10.2012

  • Понятие и характеристика неопределенного интеграла, его свойства. Методы интегрирования функций: разложение, замена переменной, по частям. Задача Коши, ее содержание. Дисперсия случайной величины. Решения для дифференциальных уравнений n-порядка.

    лекция [187,9 K], добавлен 17.12.2010

  • Методы численного интегрирования, основанные на том, что интеграл представляется в виде предела суммы площадей. Геометрическое представление метода Гаусса с двумя ординатами. Численные примеры и сравнение методов. Решение систем алгебраических уравнений.

    курсовая работа [413,4 K], добавлен 11.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.