Определение количества теплоты, выделяющегося на единичном сопротивлении за единицу времени. Составление программы по блок-схеме и проверка правильности ее работы на тестовом примере

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

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

Задача №1

Напряжение в электрической цепи описывается уравнением:

Определить количество теплоты, выделяющегося на единичном сопротивлении за единицу времени. Количество теплоты определяется по формуле:

Дифференциальное уравнение решить методом Рунге-Кутта с точностью 10-3.

Интеграл вычислить по формуле Симпсона с шагом 0.1. Для нахождения значений функции в промежуточных узлах применить линейную интерполяцию.

Задача №2

а) Для задачи Коши составить программу по блок-схеме и проверить правильность ее работы на тестовом примере, где полагаем:

y/=f(x,y)=x,

Решением должна быть таблица:

x                   y

____________

0                   0

h                  y1

1                  0,5

Значение y=0,5 при х=1 является показателем правильности работы этой части программы. Поскольку значения х составляют массив U, а значения y-массив U2, то данные этих массивов и следует проверять при решении тестового примера. После успешной проверки переходим к решению задачи №1 и получаем уже для этой задачи искомые массивы U  и U2.

б) С помощью интерполирования и данных массива U2 получаем таблицу (при этом, значения у и составляют массив U2):

x                   y

____________

0                   у0

0.1                  y(0.1)

1                  у(1)

Значения у этой таблицы получены уже с шагом h=0.1

в)  Возводим полученные у в квадрат и используем, затем, в программе метода Симпсона для получения искомого значения интеграла. Программу следует составить в соответствии с блок-схемой, где N=10,h=0.1, а в блоке 4 как раз и следует получить у2, положив уi: yi2

Значения уi в правой части этого соотношения получены в б).

РЕШЕНИЕ

Задача № 1

Текст программы:

Program Zadacha1;

Uses CRT;

Const

     a=0;        {a,b - начало и конец интервала }

     b=1;

     e=0.001;     {погрешность}

     y0=0;       {начальное условие Коши}

     a0=3;       {данные варианта }

     b0=6;       {данные варианта }

TYPE

    mas=array [0..1000] of real;

Var

   k0,l0:real;

   x,h:real;

   i,m,m2:integer;

   L:boolean;

   U,U1,U2:mas;

{--------------------------------------------------------------------}

{данная функция описывает диф. урав-е  }

FUNCTION F(x,y:real):real;

Begin

     F:=k0*exp(-(k0+x*y))+l0*(x*x-y);

End;

{--------------------------------------------------------------------}

{эта процедура осуществ-т алгоритм Рунге-Кутта}

Procedure RK(m:integer; var y:mas);

var k1,k2,k3,k4,kc:real;

begin

     h:=(b-a)/m;

     y[0]:=y0;

     for i:=0 to m-1 do

     begin

          k1:=F(a+i*h,y[i]);                 {формулы алг-ма Р-Кутта}

          k2:=F(a+i*h+h/2,y[i]+k1*h/2);

          k3:=F(a+i*h+h/2,y[i]+k2*h/2);

          k4:=F(a+i*h+h,y[i]+k3*h);

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

          y[i+1]:=y[i]+kc*h;

     end;

end;

{--------------------------------------------------------------------}

{эта процедура осущест-т метод Симпсона для нахождения интеграла Q}

Procedure Simps;

const hh=0.1;     {шаг по условию задачи}

var

   t,s1,s2,s:real;

   i,j:integer;

begin

     s1:=0;

     s2:=0;

     t:=-hh;

     j:=1;

     writeln('проинтерполированная ф-я');

     {а этом цикле осущ-ся алгор. линейной интерполяции

     для нахождения промежуточных точек ф-ии }

     repeat

          i:=0;

          t:=t+hh;

          repeat

                i:=i+1;

          until ((t>=u[i-1]) and (t<=u[i])); {нахождение подинтервала}

          u1[j]:=((u2[i]-u2[i-1])*(t-u[i-1]))/(u[i]-u[i-1])+u2[i-1];

          writeln('x= ',t:4:4,'  y= ',u1[j]:4:4);

        j:=j+1;

     until t>=b;

     for i:=1 to (j-1) do u2[i]:=u1[i]*u1[i];

     {в этом цикле находится сумма всех значений ф-ии с четными индексами}

     for i:=1 to (j-1) do

     begin

           if odd(i)=false then s1:=s1+u2[i];

     end;

     s1:=4*s1;

     {в этом цикле находится сумма всех значений ф-ии с нечетными индексами}

     for i:=0 to (j-1) do

     begin

           if odd(i) then s2:=s2+u2[i];

     end;

     s2:=2*s2;

     s:=(u2[0]+u2[j]+s1+s2)*hh/3;     {формула Симпсона}

     writeln('интеграл равен');

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.