Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

тематических пакетов Mple MthCd

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 19.5.2024

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

Написать программу на языке программирования Паскаль для решения следующей задачи (вариант задания индивидуальный). Результаты расчетов должны выводиться на экран и в файл. Оформление графиков и таблиц выполнять средствами математических пакетов (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.




1. . КЛАССИФИКАЦИЯ НОМЕНКЛАТУРА И ОЦЕНКА ПРОИЗВОДСТВЕННЫХ ЗАПАСОВ Производственные запасы на предприятии в
2. Реферат- Философия атомизма Демокрита
3. Определение характеристик оптимального обнаружения сигналов
4. Техника и приемы настенной росписи
5. Россия как единое политическое сообщество народов
6. Модели социальной политики за рубежом Вопрос 1
7. экономических систем.
8. Национальнокультурное развитие Исилькульского района на современном этапе
9. ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АРХИТЕКТУРЫ И СТРОИТЕЛЬСТВА Факультет управления территориям.html
10. Выдающиеся ученые Томас Хант Морган
11. Реферат - История создания и развития языка Prolog
12. тема финансового регулирования деятельности зарубежных инвесторов
13. Психотерапия, основные методы
14. Reported Speech nd Sequence of Tenses Если глагол вводящий косвенную речь стоит в настоящем или будущем времени то в придат
15. рефератов- 1. Сотрудничество учителя и ученика в педагогической системе В
16. 60 г - л цилиндурия
17. лекциях и дистанционном образовании много сказано сделано мало
18. Профилактика приобретенной глухоты и тугоухости- меры личной профилактики; уход за ребенком; нормально
19. тематическая модель
20.  Психология как наука ее предмет функции история