Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Rozrakha_11.docx
Скачиваний:
1
Добавлен:
24.11.2019
Размер:
854.4 Кб
Скачать

Міністерство освіти і науки України Івано-Франківський національний технічний університет нафти і газу

кафедра: ЕП і ЕО

Розрахункова робота №1

Тема “Методи розв’язання нелінійного скінченого рівняння

Виконав:

ст.гр. ЕТ-09-1

Терлецький Ю.О.

Перевірив:

Гаврилюк Р.Б.

м. Івано-Франківськ

2011 р.

На рисунку 1 зображено електричну схему, яка складається з джерела живлення e = 30 В, активного лінійного опору R = 3 Ом та нелінійного опору, який має задану вольтамперну характеристику . Необхідно знайти струм у такій елементарній схемі.

Запишемо на підставі другого закону Кірхгофа нелінійне рівняння

.

Рисунок 1 – Електрична схема

Підставивши в рівняння вхідні дані з умови задачі, одержимо

Зведемо подібні члени рівняння:

.

Розв’язання рівняння

Метод половинного ділення

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Math, Grids, TeEngine, TeeFunci, Series, ExtCtrls,

TeeProcs, Chart;

type

TForm1 = class(TForm)

BtnExit: TButton; BtnClean: TButton; BtnPolDil: TButton; BtnHord: TButton; BtnNuton: TButton; BtnIteration: TButton; BtnLobach: TButton; EdtA0: TEdit; EdtA1: TEdit; EdtA2: TEdit; EdtB0: TEdit; EdtB1: TEdit; EdtB2: TEdit; LblA0: TLabel; LblA1: TLabel; LblA2: TLabel; LblB0: TLabel; LblB1: TLabel; LblB2: TLabel; LblKoef: TLabel; LblStep: TLabel; StrRezult: TStringGrid; LblRezult: TLabel; EdtERS: TEdit; LblERS: TLabel; EdtMaxNevjazka: TEdit; LblMaxNevjazka: TLabel; Edt1: TEdit; Edt2: TEdit; LblMegi: TLabel; Label1: TLabel;

procedure BtnExitClick(Sender: TObject);

procedure BtnCleanClick(Sender: TObject);

procedure BtnPolDilClick(Sender: TObject);

procedure BtnHordClick(Sender: TObject);

procedure BtnNutonClick(Sender: TObject);

procedure BtnLobachClick(Sender: TObject);

procedure BtnIterationClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnExitClick(Sender: TObject);

begin

close;

end;

procedure TForm1.BtnCleanClick(Sender: TObject);

begin

Edta0.Text:='';

Edta1.Text:='';

Edta2.Text:='';

Edtb0.Text:='';

Edtb1.Text:='';

Edtb2.Text:='';

EdtERS.Text:='';

end;

procedure TForm1.BtnPolDilClick(Sender: TObject);

var a0,a1,a2,n0,n1,n2,m1,m2,e,c,x1,x2,y1,y2,y3,Epsylon,Nevjazka,ERS:real;

i:integer;

begin

form1.StrRezult.RowCount:=1;

a0:=strToFloat(Edta0.Text);

a1:=strToFloat(Edta1.Text);

a2:=strToFloat(Edta2.Text);

n0:=strToFloat(Edtb0.Text);

n1:=strToFloat(Edtb1.Text);

n2:=strToFloat(Edtb2.Text);

ERS:=strToFloat(EdtERS.Text);

m1:=strToFloat(Edt1.Text);

m2:=strToFloat(Edt2.Text);

e:=strToFloat(EdtMaxNevjazka.Text);

form1.StrRezult.Cells[0,0]:='№';

form1.StrRezult.Cells[1,0]:='x1';

form1.StrRezult.Cells[2,0]:='x2';

form1.StrRezult.Cells[3,0]:='Нев"язка 1' ;

form1.StrRezult.Cells[4,0]:='Нев"язка 2' ;

form1.StrRezult.Cells[5,0]:='Похибка' ;

x1:=m1; x2:=m2; c:=0;

y1:=a0*power(x1,n0)+a1*power(x1,n1)+a2*power(x1,n2)+ERS;

y2:=a0*power(x2,n0)+a1*power(x2,n1)+a2*power(x2,n2)+ERS;

y3:=a0*power(c,n0)+a1*power(c,n1)+a2*power(c,n2)+ERS;

if abs(y1)<abs(y2) then

Nevjazka:=abs(y1)

else Nevjazka:=abs(y2);

i:=1;

Epsylon:=(abs(m1-m2))/2;

while (Nevjazka>=e) do

begin

c:=(x1+x2)/2;

y3:=a0*power(c,n0)+a1*power(c,n1)+a2*power(c,n2)+ERS;

if (y1*y3)<0 then

x2:=c;

else if (y2*y3)<0 then

x1:=c;

y1:=a0*power(x1,n0)+a1*power(x1,n1)+a2*power(x1,n2)+ERS;

y2:=a0*power(x2,n0)+a1*power(x2,n1)+a2*power(x2,n2)+ERS;

if abs(y1)<abs(y2) then

Nevjazka:=abs(y1)

else Nevjazka:=abs(y2);

Epsylon:=(abs(x1-x2))/2;

form1.StrRezult.RowCount:=form1.StrRezult.RowCount+1;

form1.StrRezult.Cells[0,i]:=intToStr(i);

form1.StrRezult.Cells[1,i]:=floatToStr(x1);

form1.StrRezult.Cells[2,i]:=floatToStr(x2);

form1.StrRezult.Cells[3,i]:=floatToStr(y1);

form1.StrRezult.Cells[4,i]:=floatToStr(y2);

form1.StrRezult.Cells[5,i]:=floatToStr(Epsylon);

inc(i);

end; end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]