49006

Саздание программы на языке программирования Паскаль

Другое

Информатика, кибернетика и программирование

Результаты расчетов должны выводиться на экран и в файл. Оформление графиков и таблиц выполнять средствами математических пакетов (Maple, MathCad). Демонстрационный вариант программы подготовить в среде визуального программирования Delphi.

Русский

2013-12-19

254 KB

7 чел.

Задание для курсовой работы.

Написать программу на языке программирования Паскаль для решения следующей задачи (вариант задания индивидуальный). Результаты расчетов должны выводиться на экран и в файл. Оформление графиков и таблиц выполнять средствами математических пакетов (Maple, MathCad). Демонстрационный вариант программы подготовить в среде визуального программирования Delphi.

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

Напряжение U=U(t) на входе транзистора как функция времени описывается дифференциальным уравнением

с начальными условиями (1), где n – последняя цифра номера зачетной книжки, k – коэффициент усиления (см. ниже), fs(t) – периодический сигнал

(рис. 1), mкоэффициент  обратной связи.

Указания и пояснения.

  1.  Дифференциальное уравнение с заданными начальными условиями (задача Коши) решается методом Рунге-Кутта второго порядка с коррекцией (3) на отрезке [0;5] с шагом  h=0.01.(в узлах  tj =jh, j=0,1,2…). Функция fs(t) в правой части представляет собой регулирующий периодический (период Т) сигнал единичной амплитуды (рис 1, номер варианта  n – последняя цифра номера зачетной книжки,). Результаты расчетов—таблица (tj,Uj) и график функции U(t) (на экран и в файл).
  2.  Значение коэффициента усиления k в правой части дифференциального уравнения есть наименьший положительный корень полинома (2), который вычисляется одним из методов нахождения корней уравнения (метод касательных, метод простой итерации).
  3.  Построить спектральные характеристики периодического сигнала fs(t), заданного в аналоговой форме и в виде дискретного сигнала. Длительность сигнала равна 1, период T=k.
  4.   Период функции U(t) определить с помощью функции автокорреляции.

Курсовая работа выполняется в ЧЕТЫРЕ  этапа.

  1.  Средствами математического пакета Maple  решается задача спектрального анализа аналогового и дискретного периодического сигнала fs(t). Сравниваются спектры амплитуд аналогового и дискретного представлений сигнала. (образец выполнения задания – файл вариант11.mws).
    1.  Создается проект в визуальной среде Delphi, решающий эту же задачу для дискретного сигнала, а результаты выполнения сравниваются визуально.
      1.  С помощью языка программирования системы Maple решается задача интегрирования дифференциального уравнения (задача Коши) методом (по варианту задания). Окончательные вычисления в программе зависят от результатов расчета программы в Delphi (следующий пункт). Образец выполнения задания – файл RUTTA.mws.
        1.  Создается проект в визуальной среде Delphi, решающий ту же задачу Коши, результаты расчета которой записываются в файл,  который используется в предыдущем пункте. Выводятся графики результатов вычислений в Maple и Delphi и сравниваются между собой. Явные несовпадения свидетельствуют об ошибке в программе на  Delphi.

Оформление:

  •  Формат А4.
  •  Титул
  •  Постановка задачи
  •  Алгоритмы решения вспомогательных задач
  •  Блок-схемы
  •  Результаты расчетов, графики
  •  Литература

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

  1.  Начальные условия: U(0)=0.2
  2.  полином:x^5-8x-1
  3.  коррекция:по средней производной
  4.   метод:касательных 

Часть 1

> restart;

> with(linalg):with(plots):with(plottools):

Warning, the protected names norm and trace have been redefined and unprotected

Warning, the name changecoords has been redefined

Warning, the name arrow has been redefined

> fun:= proc(t) local z ;z:=piecewise(t<0,0,t<1/2,2*t,t<1,2-2*t,0); evalf(z);end;

> fun(t/tau);

> p(x):=x^5-8*x-1;

> Koeff:=fsolve(p(x)=0,x,0..3);

> tau:=Koeff:

> plot(p(x),x=Koeff-0.5..Koeff+0.5,thickness=2,color=black);

> R1:=plot(fun(t),t=0..2.5,thickness=2,linestyle=3,color=blue):

> R11:=plot(fun(t/tau),t=0..2.5,thickness=2,color=black):

> display(R1,R11);

> Fourier_T:=proc(F,T0,TN,k::evaln) local T;

 global A0,Ak,Bk;

   T:=TN-T0;

  A0:=2/T*Int(F(x),x=T0..TN);

  Ak:=2/T*int(F(x)*cos(k*x*2*Pi/T),x=T0..TN):

  Bk:=2/T*int(F(x)*sin(k*x*2*Pi/T),x=T0..TN):

end proc:

> Trig_polynom:=proc(N,T,a0,ak,bk,k::evaln) local n,Pol,A0,A,B;

 global a,b,RisTrig;

 a:=array(0..N);b:=array(0..N);

   A0:=evalf(a0);a[0]:=A0;b[0]:=0;

   A:=seq(evalf(subs(k=n,ak)),n=1..N);

   B:=seq(evalf(subs(k=n,bk)),n=1..N);

    for n from 1 to N do

     a[n]:=A[n];b[n]:=B[n];

    end do;

   Pol:=A0/2+sum(A[k]*cos(2*Pi*k*x/T)+B[k]*sin(2*Pi*k*x/T),k=1..N):

   RisTrig:=plot(Pol,x=-T/2..3*T/2,color=blue,thickness=2):

 RETURN(Pol);

end proc:

> ARR:=proc(n::integer,c) local L,H,ma,mi,k::integer,

  Sim::array(0..n);

  ma:=c[0];mi:=c[0];

  L:=line([0,c[0]],[n,c[n]],thickness=2,color=red);

 for k from 1 to n do

  if c[k]>ma then ma:=c[k];end if;

  if c[k]<mi then mi:=c[k];end if;

 end do;

 H:=ma-mi;

 if H=0 then RETURN(L) end;

 for k from 0 to n do

  if abs(c[k])<H/1000 then

    Sim[k]:=ellipse([k,c[k]],0.2,0.01*H,color=blue);

  else

   Sim[k]:=plottools[arrow]([k,0],[k,c[k]],0.2,0.2,0,color=black);

  end if;

 end do;

 convert(Sim,list);

end:

> Spectr:=proc(n,a,b,c,Risphi) local k,R,phi;

  for k  from 0 to n do

    c[k]:=evalf(abs(I*a[k]+b[k])):

#    print(k,c[k]);

    phi:=evalf(argument(I*a[k]+b[k]));

    R[k]:=[eval(k),eval(phi)];

  end:;

Risphi:=plot(convert(R,list)):

end:

> T:=3;# величина периода

> F_for_all:=proc(t) global tau;fun(t/tau);end proc:;

> Ris1:=plot(F_for_all(t),t=0..T,color=brown,thickness=2,discont=true):display(Ris1);

> Fourier_T(F_for_all,0,T,k):

> a0:=evalf(A0);

> Nk:=20;

> Trig_polynom(Nk,T,A0,Ak,Bk,k):

> display(RisTrig,Ris1);

> Spectr(Nk,a,b,c,'Risphi1');

> display(ARR(Nk,c));

>

> Ampl:=display(ARR(Nk,c)):;

> 2: DTF:=proc (y,N,Y) local n,k,j,p,h;

n:=N-1;

h:=2*Pi/N;

2.1: for k from 0 to N do

p:=0;

  for j from 0 to n do

    p:=p+evalf(y[j]*exp(-I*k*j*h));

  end;

 Y[k]:=evalf(1/N*p);

end:

end:;

> 3: CDTF:=proc(N,Y,y) local n,k,h,p,j;

n:=N-1;

 h:=2*Pi/N;

for k from 0 to n do

p:=0;

  for j from 0 to n do

    p:=p+Y[j]*exp(I*k*j*h);

  end;

 y[k]:=evalf(Re(p));

end:

end:

> Setka_DTF:=proc(Nt,T,F,Y::array) local h,j,x,R,RL;  

  global GrafF;

  h:=T/Nt;

 for j from 0 to Nt do

  x:= evalf(j*h);

  Y[j]:= F(x);

  R[j]:=[j,eval(Y[j])];

 end:

   5.1: R[Nt]:=[j,eval(Y[0])];

    GrafF:=plot(convert(R,list),0..Nt-1,color=brown,

    style=point,symbol=circle):

end:

> Spectr_DTF:=proc(n,C,A,phi) local k,R;global Risphi;

 6.1:  for k  from 0 to n do

    A[k]:=evalf(abs(C[k])):

    phi[k]:=evalf(argument(C[k]));

    R[k]:=[eval(k),eval(phi[k])];

end:;

Risphi:=plot(convert(R,list),thickness=2,color=blue,style=point,symbol=box):

end:

Параметры задачи

> Nt:=19:`число дискретных отсчетов `:

> n:=Nt;N:=Nt-1;# параметры ДПФ

> C:=array(0..n):phi:=array(0..n):A:=array(0..n):;

Y:=array(0..N):

> Setka_DTF(N,T,F_for_all,Y);

> DTF(Y,Nt,C,n):

> Spectr_DTF(n,C,A,phi):

> display(ARR(n,A));

> display(ARR((n-1)/2,A));

> CDTF(Nt,C,F):

> display(GrafF,ARR(n-1,F));

> Setka:=proc(Nt,T,F,Y::array) local h,j,x,R,RL;  

  global GrafF;

  h:=T/Nt;

 for j from 0 to Nt do

  x:= evalf(j*h);

  Y[j]:= F(x);

  R[j]:=[x,eval(Y[j])];

 end:

   5.1: R[Nt]:=[x,eval(Y[0])];

    GrafF:=plot(convert(R,list),0..T,color=brown,

    style=point,symbol=circle):

end:

> F_Discret:=proc (Y,N,a,b,n) local k,j,p,q,h;

 h:=2*Pi/N;

for k from 0 to n do

p:=0;q:=0;

  for j from 0 to N do

    p:=p+evalf(Y[j]*cos(k*j*h));

    q:=q+evalf(Y[j]*sin(k*j*h));

  end;

 a[k]:=2/N*p;b[k]:=2/N*q;

# print(k,a[k],b[k]);

end:

if 2*n=N then b[n]:=0; end;

RETURN(n);

end:;

> 3: Trig:=proc(t,n,T,a,b) local z,k;

z:=a[0]/2+sum(a[k]*cos(k*t*2*Pi/T)+b[k]*sin(k*t*2*Pi/T),k=1..n);

end:

> M:=Nk:

> a:=array(0..M):b:=array(0..M):c:=array(0..M);

> Setka(N,T,F_for_all,Y):

> F_Discret(Y,N,a,b,M):

> Cl:=blue,red,brown:;

> 15: RT:=seq(plot(Trig(t,5*k,T,a,b),t=-0.1..T+0.1,

numpoints=500,color=Cl[k]),k=1..3):

> 16: display(RT,GrafF);

> Spectr(M,a,b,c,'Grafphi');:

> display(ARR(M,c));:

> display(Ampl);

>

>

>

>

>

unit Unit1;

interface

uses

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

 Dialogs, StdCtrls, ExtCtrls;

type

 TForm1 = class(TForm)

   Button1: TButton;

   Label1: TLabel;

   Button2: TButton;

   Label2: TLabel;

   Button3: TButton;

   ListBox1: TListBox;

   Button4: TButton;

   Button5: TButton;

   Image1: TImage;

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

   procedure Button4Click(Sender: TObject);

   procedure Button5Click(Sender: TObject);

   procedure FormCreate(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.dfm}

{=====================}

const

N=80;

m=N div 2;

t=3;

hx=T/N;

x0=0;

type

koeff=array[0..m]of real;

dann=array[0..N]of real;

Var

Y:dann;

a,b:koeff;

Tau:real;

h:real;

eps:real;

nkoeff:integer;

 function Pol(t:real):real;

   begin

   Pol:=sqr(sqr(t))*t-8*t-1;

   end;

 function derive(t:real):real;

   begin

   derive:=sqr(sqr(t))*5-8;

   end;

function root(a,b:real):real;

    var

   X0,X1,delta :real;

  begin

   X0:=(a+b)/2;

   repeat

     X1:=X0-Pol(X0)/derive(X0);

     delta:=abs(X1-X0);

     X0:=X1;

   until delta<0.00001;

   root:=X0;

    end;

 function itez(a,b:real):real;

    var

    X0,X1,delta :real;

    const

     lambda=0.0001 ;

  begin

   X0:=(a+b)/2;

   repeat

     X1:=X0-Pol(X0)*lambda;

     delta:=abs(X1-X0);

     X0:=X1;

   until delta<0.00001;

   itez:=X0;

    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;

 procedure trig(m,N:integer;Y:dann;var a,b:koeff);

 var

   j,k: integer;

   p,q,x,h:real;

 begin

   h:=2*Pi/N;

   for k := 0 to m do

     begin

       p:=0;q:=0;

       for j := 1 to N do

         begin

           x:=j*h;

           p:=p+Y[j]*cos(x*k);

           q:=q+Y[j]*sin(x*k);

         end;

         a[k]:=p*2/N;

         b[k]:=q*2/N;

     end;

 end;

  function Tpol(m:integer;x:real):real;

var

z:real;

k:integer;

begin

 z:=a[0]/2;

  for k:=1 to m do

   z:=z+(a[k]*cos(k*2*Pi/T*x)+b[k]*sin(k*2*Pi/T*x));

  Tpol:=z;

end;

 procedure grafik(numvar:integer);

type

  dann= array[0..N] of real;

var

  L,R,W,H: integer;

  X: dann;

  Y: dann;

  k:integer;

  ymin,ymax:real;

  Mx,My:real;

  x0,y0: integer;

  posx,posy:integer;

  Nkf:string;

  tx:real;

  ypol:real;

  procedure min_max(N:integer;Y:dann; var min, max:real);

  var

    k: integer;

  begin

     min:=Y[0];max:=Y[0];

     for k := 1 to N do

     if Y[k]> max then

        max:=Y[k]

       else if Y[k]< min then

        min:=Y[k];

     {увеличим диапазон}

      max:=max+0.1;

      min:=min-0.1;

  end;

begin

  L:=20;

  R:=form1.image1.clientHeight-20;

  W:=form1.image1.Width-50;

  H:=form1.image1.clientheight-50;

  case numvar of

1: begin

     for  k:=0 to N do

       X[k]:=signal(hx*k/Tau);

     min_max(N,X,ymin,ymax);

     Mx:=W/N;

     My:=H/(ymax-ymin);

     x0:=L;

     y0:=R-abs(Round(ymin*My));

     with form1.image1.Canvas do

     begin

       pen.Color:=clblue;

       font.Name:='Tahoma';

       font.Size:=8;

       font.Color:=claqua;

       for k:=0 to N do

        begin

          posx:=x0+round(k*Mx);

          posy:=y0-round(X[k]*My);

          textout(posx-2,posy-8,'o');

          Pixels[posx,posy]:=clRed;

        end;

       pen.Width:=2;

       Moveto(L,R);lineto(L,R-H);

       moveto(x0,y0);lineto(x0+W,y0);

       font.Color:=clred;

       textout(x0+W,y0+10,'x');

       textout(x0+W,y0-20,floattostrF(T,ffFixed,3,0));

       textout(x0+round(W*Tau/T), y0-20,'tau='+ floattostrF (Tau,ffFixed, 6, 3));

       Nkf:=Inputbox('Число коэффициентов полинома','например 10','20');

       Nkoeff:=strtoint(Nkf);

       pen.Color:=clNavy;

       tx:=0;

       ypol:=Tpol(Nkoeff,tx/Tau);

        posx:=x0+round(0*Mx/2);

        posy:=y0-round(ypol*My);

       moveto(posx,posy);

       for k:=1 to 2*N do

       begin

         tx:=hx*k/2;

         ypol:=Tpol(Nkoeff,tx/Tau);

         posx:=x0+round(k*Mx/2);

         posy:=y0-round(ypol*My);

         lineto(posx,posy);

       end;

     end;

   end;

  2: begin

       for  k:=0 to m do

        Y[k]:=sqrt(sqr(a[k])+sqr(b[k]));

        min_max(m,Y,ymin,ymax);

        Mx:=W/m;

        My:=H/(ymax-ymin);

        x0:=L;

        y0:=R-abs(Round(ymin*My));

     with form1.image1.Canvas do

     begin

        pen.Width:=2;

        pen.Color:=clred;

        Moveto(L,R);lineto(L,R-H);

        moveto(x0,y0);lineto(x0+W,y0);

        pen.Width:=5;

        pen.Color:=clblue;

       for  k:=0 to m do

        begin

         posx:=x0+round(k*Mx);

         posy:=y0-round(Y[k]*My);

         moveto(posx,y0);

         lineto(posx,posy);

        end;

     end;

     end;

  end;

end;

{ ==========================}

  

procedure TForm1.Button1Click(Sender: TObject);

 const

 a=0;

 b=3;

begin

Tau:=root(a,b);

Label1.caption:='корень='+floattostr(Tau);

button1.Visible:=false;

button3.Visible:=true;

button3.SetFocus;

button4.Visible:=false;

button5.Visible:=false;

end;

procedure TForm1.Button2Click(Sender: TObject);

 const

 a=0;

 b=3;

begin

Tau:=itez(a,b);

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

end;

procedure TForm1.Button3Click(Sender: TObject);

var

 j: Integer;

 s1,s2,s3:string;

begin

for j := 0 to N  do

 Y[j]:=signal(x0+j*hx);

 Y[N]:=(Y[0]+Y[N])/2;

 Trig(m,N,Y,a,b);

 for j := 0 to m do

   begin

     str(j:2,s1);

     str(a[j]:10:5,s2);

     str(b[j]:10:5,s3);

     listbox1.items.Add(s1+s2+s3);

   end;

 Label1.Caption:='Вычислены коэффиченты Фурье';

   button3.Visible:=false;

   button4.Visible:=true;

   button4.SetFocus;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

form1.Caption:='Построение графиков';

label1.Caption:='Графики сигналов и полиномов';

button4.Visible:=false;

Button5.Visible:=true;

button5.SetFocus;

   Label2.Visible:=false;

  listbox1.Visible:=false;

   grafik(1); { 1 - сигнал точками, полином - линией}

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

 Form1.Caption:='Спектр амплитуд';

   {здесь поместим алгоритм построения спектра амплитуд}

   Label1.Caption:='График спектра амплитуд';

   Button5.Visible:=false;

   form1.image1.Canvas.FillRect(rect(0,0,clientwidth,clientheight));

   grafik(2);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

button3.visible:=false;

button4.visible:=false;

button5.visible:=false;

end;

end.

Часть 2

> restart;

> with(linalg):with(plots):

pp:=(x,y)->[x,y];

Warning, the protected names norm and trace have been redefined and unprotected

Warning, the name changecoords has been redefined

> fun:= proc(t) local z ;z:=piecewise(t<0,0,t<1/2,2*t,t<=1,2-2*t,0); evalf(z);end;

> plot(fun(t),t=-1..2,thickness=2,color=brown):;

> p(x):=x^5-x*8-1;

> Koeff:=fsolve(p(x),x,0..2);

> T:=Koeff;

> tau:=1;

> Period:=proc(t,t0,tau,T,f) local x,z;

x:=evalf(t-t0-floor((t-t0)/T)*T);

z:=fun(x/tau);evalf(z);

end;

> plot(Period(x,0,tau,T,fun),x=-1..3,thickness=2,color=brown);

> #==============================================================================

>

> Koc:=2;Nzac:=1;

> ur:=diff(U(t),t);

> F:=Nzac*(cos((4+Nzac/10)*t+U(t))+Koeff*Period(t,0,tau,T,f)-Koc*U(t));

> RK:=dsolve({ur=F,U(0)=0.2},U(t),type=numeric,output=listprocedure);

> fU:=subs(RK,U(t));

> T0:=5;Nt:=50;h:=T0/Nt;

> Tx:=array(0..Nt):U:=array(0..Nt):U_map:=array(0..Nt);

> for j from 0 to Nt do

x:=j*h;z:=fU(x);Tx[j]:=x;U[j]:=z;U_map[j]:=z;

#print(x,z);

od:

> RisU:=zip(pp,Tx,U):

> RU:=plot(RisU):

> display(RU):;

> #====================================

> RisU:=zip(pp,Tx,U):

> whattype([RisU]);

> RU0:=plot(RisU,style=point,symbol=cross):

> display(RU0):;

Определение периода с помощью функции автокорреляции

> R:=proc(Nt,T::array,U::array)

local k,j,t,z,Af::array,Uf::array,RAf,RisAf;

Af:=array(0..Nt);Uf:=array(0..2*Nt);

for j from 0 to Nt do Uf[j]:=U[j];Uf[j+Nt]:=U[j];

end;

for j from 0 to Nt do

t:=0;

for k from 0 to Nt do

t:=t+evalf(Uf[k]*Uf[k+j]);

end;

Af[j]:=evalf(t/Nt);

end;

RAf:=zip(pp,T,Af);RisAf:=plot(RAf):

display(RisAf):;

end:

> R(Nt,Tx,U):;

>

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=

>

> fn:=`E:\\WORK\\Архипкин.txt`;

>

>

++++++++++++++++++++++++++++++++++++++++++++++++++++

> L:=readdata(fn,2):;

Nstrok:=vectdim(L):;

> U_n:=array(1..Nstrok);:

T_n:=array(1..Nstrok);

> for j from 1 to Nstrok do

T_n[j]:=L[j,1];

U_n[j]:=L[j,2];

#print(j,T_n[j],U_n[j]);

od:

> u1:=zip(pp,T_n,U_n):

> RU1:=plot(u1,style=point,symbol=cross,color=black):

> display(RU,RU1);

> #printf("%s",`  №      t      U_map    U_pas     разн \n`);

for k from 0 to Nt do t:=Tx[k]:del:=U_map[k]-U_n[k+1];

#printf("% 3.0f  % 6.2f % 8.4f  % 8.4f % 8.4f \n",k,t,U_map[k],U_n[k+1],del):

end:;

unit final;

interface

uses

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

 Dialogs, Menus, StdCtrls;

type

 TForm1 = class(TForm)

   MainMenu1: TMainMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   Label1: TLabel;

   ListBox1: TListBox;

   Label2: TLabel;

   savedialog1: TSaveDialog;

   N4: TMenuItem;

   N5: TMenuItem;

   N6: TMenuItem;

   Label3: TLabel;

   Label4: TLabel;

   procedure N3Click(Sender: TObject);

   procedure N2Click(Sender: TObject);

   procedure N5Click(Sender: TObject);

   procedure N6Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.dfm}

{=====================================================}

const

  U0=0.2;

  nzac=1;

  koc=2;

  hintegr=0.1;

  Npoint=50;

var

      tau:real; {период сигнала}

      Koeff:real; {равен периоду}

      min,sec:byte;

      frez:string;

      ftxt:text;

{===================корень полинома==============}

{фунция, задающая вычисление полинома в точке}

function polynom(t:real):real;

begin

  polynom:=sqr(sqr(t))*t-8*t-1;

end;

{процедуры метода простой итерации}

function derive(x:real):real;

begin

 derive:=sqr(sqr(x))*5-8;

end;

procedure Iter(a,b:real;var root:real;var K:integer);

const

 eps=0.0000001;{погрешность определения корня}

 Q0=1.5; {нормирующий множитель для ламбда}

var

 lambda:real;

 g:real;

 x,x0:real;

begin

  g:=derive(b);

   form1.label2.caption:='max производной =  '+ floattostrF (g, ffGeneral, 5, 1);

   lambda:=1.99/g;

   x:=(a+b)/2;

   k:=0;

   repeat

     x0:=x;

     x:=x0-lambda*polynom(x0);

     form1. listbox1.Items.Add(floattostrF(x,ffGeneral, 12, 9));

     k:=k+1;

   until abs(x-x0)<eps;

   root:=x;

end;

function signal(t:real):real;{сигнал 11-го варианта}

 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;

 var

   z:real;

begin

  z:=x-trunc(x/T)*T;{выделение дробной части}

  Period:=signal(z);

end;

{====================правая часть диф. уравнения===}

function F(t,U:real):real;

begin

 F:=Nzac*  (cos((4+nzac/10)*t+U)+Koeff*Period(t,Koeff)-Koc*U);

end;

procedure difur;

var

 j:integer;

 U,t:real;

 U1:real;

 strU,strt:string;

begin

 form1.listbox1.Clear;

  U:=U0;

  t:=0;

  Koeff:=Tau;

  for j :=0 to Npoint+1 do

  begin

         strt:=floattostrF(t,ffGeneral, 7, 4);

    strU:=floattostrF(U,ffGeneral, 7, 4);

    form1. listbox1.Items.Add(strt+'   '+ stru);

    writeln(ftxt,t:8:2,' ',U:8:3);

    {Метод Эйлера}

         U1:=U+hintegr*F(t,U);

         U:=U1;

         t:=t+hintegr;

  end;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

 if savedialog1.Execute then

  begin

    frez:=savedialog1.FileName;

    label1.caption:='эапись в файл '+#10+frez;

  end;

 assignfile(ftxt,frez);

 rewrite(ftxt);

end;

procedure TForm1.N3Click(Sender: TObject);

begin

form1.Close;

closefile(ftxt);

end;

procedure TForm1.N5Click(Sender: TObject);

 var

a,b:real;

kiter:integer;

begin

   Form1.Caption:='Вычисляем корень полинома';

    b:=3;

    a:=0;

   {здесь вызов алгоритма вычисления корня уравнения}

   Iter(a,b,Tau,Kiter);{вызов процедуры метода итераций}

   Label3.Caption:='корень равен '+floattostr(Tau);

   Label4.Caption:='число итераций '+inttostr(Kiter);

end;

procedure TForm1.N6Click(Sender: TObject);

begin

difur;

end;

end.


 

А также другие работы, которые могут Вас заинтересовать

34343. Сырьевые материалы и основы производства резины 28 KB
  Резину изготавливают с помощью вулканизации. В результате вулканизации каучук превращается в прочную эластичную упругую массу резину. В результате вулканизации молекулы каучука сливаются между собой дисульфидными мостиками в одну трехмерную макромолекулу. Большую роль играют так называемые ускорители вулканизации органические соединения содержащие серу или азот меркаптобензтиазол дифенилгуанидин и др.
34344. Основные свойства и назначения природных и искусственных строительных материалов 21 KB
  Основные свойства и назначения природных и искусственных строительных материалов. Основные свойства строительных материалов можно разделить на несколько групп. К 1ой группе относятся физические свойства материалов: плотность и пористость. Ко 2й свойства характеризующие устойчивость материала к воздействию воды и низких температур: водопоглощение влажность влагоотдача гигроскопичность водопроницаемость водо морозостойкость.
34345. Классификация и свойства керамических материалов 21.5 KB
  Классификация и свойства керамических материалов Керамические строительные материалы это искусственные каменные изделия получаемые из глиняных масс с добавками или без добавок других материалов путем формования и последующего обжига. Керамические материалы и изделия классифицируются по различным признакам. В зависимости от структуры керамические материалы разделяют на две основные группы: Плотные спекшиеся имеющие блестящий раковистый излом не пропускающие воду с водопоглощением менее 5 клинкерный кирпич для мощения дорог плитки для...
34346. Технология производства керамического кирпича 23 KB
  Технология производства керамического кирпича Несмотря на обширный ассортимент разнообразие форм и свойств керамических изделий основные этапы их производства являются общими и включают следующие стадии: Карьерные работы добыча транспортирование и хранение запаса глин подготовку глиняной массы формование изделий сушку отформованных изделий обжиг высушенных изделий обработку изделий глазурование ангобирование и прочее и упаковку. Формование изделий осуществляется преимущественно на прессах: при первом способе подготовке глиняной...
34347. Основные свойства, классификация и назначение стеклянных изделий 22 KB
  Материалы и изделия из стекла применяемые в строительстве в зависимости от назначения разделяются на следующие группы: Материалы для заполнения проемов зданий и сооружений наиболее обширная группа строительных материалов из стекла включающая листовые стекла различных видов и стеклопакеты; в свою очередь листовое стекло подразделяется на листовое оконное витринное полированное и неполированное армированное узорчатое увиолевое трехслойное закаленное и др.; Материалы для строительных конструкций профильное стекло стеклоблоки;...
34348. Производство листового стекла, труб 24 KB
  Производство листового стекла труб. Это изделие из стекла в виде плоских листов отношение толщины которых к длине сравнительно невелико и составляет приблизительно 015 15. Стекольной промышленностью вырабатывается широкий ассортимент листового стекла: обычное оконное витринное полированное и неполированное армированное узорчатое увиолевое трехслойное и др. Производство строительного стекла включает следующие основные операции: подготовку сырьевых материалов приготовление стекольной шихты варку стекла формование изделий отжиг...
34349. Технология производства сортового и тарного стекла 21 KB
  Сфе изделия поступают на отжиг вырабатывают изделия бригадным способом. При механическом сплавах для формирования машины производятся изделия прем.
34350. Сравнительная экономическая оценка разных видов стекла 22.5 KB
  Сравнительная экономическая оценка разных видов стекла. Основными направлениями интенсификации прва стекла являются:1дальнейшие автоматизации техн прв; 2 расширение ассортимента и повышение качества стекла; 3реконструкция действующей прти; ;4 совершенствования техн прва стр стекла. Усовершенствование методов варки стекла предполагает увеличение площади покрытия пламенем зеркала шихты и стекломассы применением печей новых типов. велики амортизационные отчисления при его производстве высокая стоимость оборудования для флотационного...
34351. Классификация, основные свойства и назначение минеральных вяжущих материалов 23 KB
  Минеральные вяжущие вещества по способности затвердевать и сохранять прочность на воздухе или в воде подразделяют на воздушные и гидравлические. Воздушные вяжущие вещества после смешивания с водой твердеют прочность получающегося камня сохраняется или повышается только на воздухе. Поэтому такие вяжущие применяют при возведении надземных сооружений не подвергающихся действию воды. Гидравлические вяжущие вещества обладают этими свойствами не только на воздухе но и в воде их применяют в надземных подземных...