Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Индивидуальное задание № 7






1.Начальные условия: U(0)=0.25

2.Полином: x^5-7x-6

3.Коррекция: в средней точке

4.Метод поиска корня: Метод касательных

 

 


2.Листинг программы

unit kustysheva;

 

interface

 

uses

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

Dialogs, StdCtrls, Buttons;

 

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Label1: TLabel;

Label2: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

ListBox1: TListBox;

SaveDialog1: TSaveDialog;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

const

exp=0.000001;

x0=3;

U0=0.25;

h=0.1;

Nzach=7;

koc=1;

Npoint=50;

hinteg=5/Npoint;

Var

T: real;

U: array [0..Npoint+1] of real;

fname: string;

ft: text;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

procedure kasat(t, eps: real; var koren: real);

begin

repeat

t: =t-(t*t*t*t*t-7*t-6)/(5*sqr(sqr(t))-7);

until abs (t*t*t*t*t-7*t-6) < eps;

koren: =t;

end;

//--------------------------------------------------------------------------------------------------------------

function signal(t: real): real;

Var

z: real;

begin

if t< 0 then

z: =0

else if t< 1/2 then z: =2*t

else if t< =1 then z: =2-2*t

else z: =0;

signal: =z;

end;

function Period(x, T: real): real;

begin

x: =x-trunc(x/T)*T;

Period: =signal(x);

end;

procedure grafik;

Var

k: integer;

x, y: real;

begin

T: =1.6;

Form1.ListBox1.Visible: =true;

Form1.ListBox1.Width: =520;

With Form1.listBox1.Canvas do

begin

moveTo(5, 15);

for k: = 0 to 100 do

begin

x: =k*0.05;

y: =Period(x, T)*100;

LineTo(5*k+5, 115-round (y));

end;

end;

end;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

function RHS (x, U: real): real;

begin

RHS: =Nzach*(cos((4+Nzach/10)*x+U)+T*Period(x, T)-koc*U);

end;

procedure difur;

Var

k: integer;

x, y: real;

begin

U[0]: =U0;

for k: = 0 to Npoint do

begin

x: =k*hinteg;

y: =RHS(x, U[k]);

{коррекция метода Эйлера}

U[k+1]: = U[k]+hinteg*y;

Form1.ListBox1.Items.Add

(floattostrf(x, FFGeneral, 6, 2)+' '+floattostrf(U[k], ffFixed, 10, 4));

end;

end;

//=================================================================

procedure zapis;

Var

k: integer;

begin

Assignfile(ft, fname);

rewrite(ft);

for k: = 0 to Npoint do

Writeln(ft, k*0.1: 8: 2, U[k]: 10: 4);

Closefile(ft);

end;

//--------------------------------------------------------------------------------------------------------

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Label1.Caption: ='рисуем график сигнала';

grafik;

BitBtn1.Visible: =false;

BitBtn2.Visible: =true;

BitBtn2.SetFocus;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

Label1.Caption: ='Решаем задачу Коши';

difur;

BitBtn2.Visible: =false;

BitBtn3.Visible: =true;

BitBtn3.SetFocus;

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

Label1.Caption: ='Записываем в файл';

if SaveDialog1.Execute then

Fname: =SaveDialog1.FileName;

Label1.Caption: ='идет запись в файл'+fname;

zapis;

BitBtn3.Visible: =false;

BitBtn4.Visible: =true;

BitBtn4.SetFocus;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

Label1.Caption: ='Рисуем спектр сигнала';

BitBtn4.Visible: =false;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Caption: ='находим корень';

kasat(x0, exp, T);

Label2.Caption: ='корень='+floattostr(T);

Button1.Visible: =false;

BitBtn1.Visible: =true;

BitBtn1.SetFocus;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

close;

end;

end.







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.