51087

Решение краевой задачи второго порядка для обыкновенных дифференциальных уравнений

Лабораторная работа

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

Цель работы: Практическое использование методов численного решения краевой задачи. Дано: Дифференциальное уравнение с граничными условиями

Русский

2014-02-05

30.33 KB

3 чел.

Науково-навчальний комплекс "Інститут прикладного системного аналізу"  

при Національному технічному університеті України "КПІ"

Кафедра математичних методів системного аналізу

Лабораторна робота № 1

з курсу "Чисельні методи"

на тему "Решение краевой задачи второго порядка для обыкновенных дифференциальных уравнений"

                                

                                       Виконав:    студент 3-го курсу

                                        групи КА-06

                                        Анікін Вадим

                                   Прийняв:  Коновалюк М. М.

Київ 2012

Цель работы: Практическое использование методов численного решения краевой задачи.

 Дано:  Дифференциальное уравнение с граничными условиями:

              

         

Ход работы:

Найдем численное решение краевой задачи  на отрезке [1.7;2] с шагом h=0,05, используя метод конечных разностей. Будем использовать разностные производные второго порядка точности:

 

Решим данню систему с помощью разложения Холецкого.

Результат:

//Result.txt

A:   -14       20       -5        0        0        0        0

    400     -798      380        0        0        0        0

      0      405     -798      355        0        0        0

      0        0      420     -798      320        0        0

      0        0        0      445     -798      275        0

      0        0        0        0      480     -798      220

      0        0        0        0       10      -40       30

b: 1.500 1.750 1.800 1.850 1.900 1.950 2.000

y: -1.278 -1.015 -0.782 -0.594 -0.450 -0.338 -0.233

A*y: 1.500 1.750 1.800 1.850 1.900 1.950 2.000

 Вывод: 

Мы нашли численное решение краевой задачи  на отрезке [1.7; 2] с шагом h=0,05, используя метод конечных разностей и метод Холецкого. Точность решения – три знака после запятой.

Приложение:

//method.cpp

#include <iostream>

#include <fstream>

#include <math.h>

include <conio.h>

using namespace std;

double pi(double y)

{

 return -0.5 * pow(y, 2);

}

double qi(double y)

{

 return 2;

}

double fi(double y)

{

 return y;

}

FILE * p;

void outV (double *v, char *name)

{

fprintf (p, name);

fprintf (p, "\n");

 for (int i = 0; i < 7; i++)

 fprintf (p, "%.3f ", v[i]);

fprintf (p, "\n"); fprintf (p, "\n");

}

void outM (double *m, char* name)

{

fprintf (p, name);

fprintf (p, "\n");

 for (int i = 0; i < 7; i++)

{

 for (int j = 0; j < 7; j++)

  fprintf (p, "%8.0f ", *(m + 7*i + j));

 fprintf (p, "\n");

}

fprintf (p, "\n");

}

double *Cholesky( double *A, double *b)

{

 double *X, l[7][7]={0}, c[7][7] = {0}, y[7], sum = 0, *LC;

X=(double *)calloc(7,10);

 for (int i = 0; i < 7; i++)

{

 l[i][0] = *(A+7*i);

 c[0][i] = *(A+i) / l[0][0];

}

 for (int i = 0; i < 7; i++)

{

 for (int j = 0; j < 7; j++)

 {

  sum = 0;

  if (i>=j)

  {

   for (int k = 0; k < j; k++)

    sum += l[i][k] * c[k][j];

   l[i][j] = *(A+7*i+j) - sum;

  }

  if (i <= j)

  {

   sum = 0;

   for (int k = 0; k < i; k++)

    sum += l[i][k] * c[k][j];

   c[i][j] = (*(A+7*i+j) - sum) / l[i][i];

  }

  

 }

}

fprintf (p, "\n");

LC=(double *)calloc(49,10);

 for (int i=0; i < 7; i++)

 for (int j=0; j < 7; j++)

  for (int k=0;k < 7; k++)

   *(LC+7*i+j)+=l[i][k]*c[k][j];

y[0]=b[0]/l[0][0];

 for (int i = 1; i < 7; i++)

{

 sum = 0;

 for (int k = 0; k < i; k++)

  sum += l[i][k] * y[k];

 y[i]=(b[i]-sum)/l[i][i];

}

*(X+6)=y[6];

 for (int i = 5; i>=0; i--)

{

 sum = 0;

 for (int k = i+1; k < 7; k++)

  sum += c[i][k] * (*(X+k));

 *(X+i)=(y[i]-sum);

}

outV(X, "X: ");

 return X;

}

void check( double *A, double *X)

{

 double sum[7]={0,0,0,0,0,0,0}, *I;

I=(double *)calloc(49,10);

 for (int i = 0; i < 7; i++)

{

 for (int j=0; j < 7; j++)

 sum[i] += *(A + 7 * i + j) * (*(X+j));

}

outV(sum, "A*x: ");

}

int main()

{

 double *A, *b, *X, aa = 1.7, bb = 2, h = 0.05, alpha0 = 1, alpha1 = 0.5, betta0 = 0, betta1 = 1;

 int N = (int)((bb - aa) / h) + 1;

p = fopen ("Result.txt","w");

A=(double*)calloc(N * N, 10);

 for (int i = 1; i < N - 1; i++)

{

 for (int j = 0; j < N; j ++)

  if (j == i - 1) A[N * i + j] = 1 / (h * h) - pi(j) / (2 * h); else

   if (j == i) A[N * i + j] = - 2 / (h * h) + qi(j); else

    if (j == i + 1) A[N * i + j] = 1 / (h * h) + pi(j) /

 (2 * h); else A[N * i + j] = 0;

}

A[0] = alpha0 - 3 * alpha1 / (2 * h); A[1] = 2 * alpha1 / h; A[2] = - alpha1 /

 (2 * h);

A[48] = betta0 + 3 * betta1 / (2 * h);

A[47] = -2 * betta1/ h;

A[46] = betta1 / (2 * h);

b=(double*)calloc(N, 10);

b[0] = 1.5; b[6] = 2;

 for (int i = 1; i < N - 1; i++)

 *(b + i) = fi(aa + i * h);

outM(A, "A: ");

outV(b, "b: ");

X=Cholesky(A, b);

check(A, X);

 return 0;

}


 

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

43158. Поиск неисправностей 3.06 MB
  Пульт оперативного управления СВ Назначение и состав ПОУ СВ ПОУ СВ предназначен для ручного управления и контроля за работой СВ при наладке аппаратуры и программ и для оперативного вмешательства в работу программ при решении рабочих задач. ПОУ выполняем следующие функции: установку в исходное состояние регистров ВчУ и УО занесение на регистр словосостояния процессора ССП...
43159. Поиск неисправности. Теоретический ремонт РМ 176.5 KB
  Краткое описание тракта прохождения сигнала. Краткое описание тракта прохождения сигнала. оно входит в тракт прохождения сигнала то рассмотрим его более подробно. ЦВУ предназначен для формирования разверток на БИО и БИВ пересчета координат из абсолютной системы в относительную осуществлению синхронизации и программного управления отображением и обменом информации в реальном масштабе времени формировании управляющих служебных сигналов.
43160. Теоретический ремонт РМ при отсутствии отображения информации в режиме «ТХ» 94.5 KB
  На экране индикатора БИВ РМ №1 2 3 4 5 отсутствует отображение информации в режиме ТХ 2. УОП предназначен для организации обмена РМ с СВ хранения и регенерации принятой информации кодирования информации набранной на пультах контроля работоспособности РМ. В состав блока УОП входит: устройство управления обменом УУО; устройство кодирования пультовой информации УКПИ; устройство контроля РМ. Состав УУО: Сдвиговый регистр №1 Рг С1 96 разр осуществляет прием и выдачу информации.
43161. ИСПОЛНИТЕЛЬНЫЙ МЕХАНИЗМ 4.44 MB
  Провести расчет элементов и параметров конструкции исполнительного механизма прибора комплекса ЛА с учетом указанных в задании системных особенностей. Введение 4 Расчет кинематических параметров 5 Выбор двигателя 5 Расчет мощности двигателя 5 Кинематический расчет редуктора 6 Определение передаточного числа 6 Выбор кинематической схемы и типа используемых зп 7 Расчет числа зубьев 7 Ошибка по скорости 8 Расчет КПД...
43162. Проектирование технических расчетов зон ТО, диагностики и ТР на примере подвижного состава автотранспортных предприятий 273.5 KB
  Автомобильный транспорт является наиболее массовым и удобным видом транспорта обладающим большой манёвренностью хорошей проходимостью и приспособленностью для работы в различных климатических и географических условиях. Техническое обслуживание ТО является профилактическим мероприятием проводимым в плановом порядке через определенные длительность пробега или срок работы подвижного состава. ТО1 и ТО2 включают контрольнодиагностические крепёжные...
43163. Водный транспорт леса 2.26 MB
  В данном курсовом проекте рассмотрен пример организации первоначального лесосплава, представляющий собой комплекс производственных и подготовительных работ, связанных с перемещением лесных грузов по водным путям. В проекте рассматриваются наиболее распространенные виды водной транспортировки леса - молевой лесосплав, сплав леса в пучках, плотах и в баржах. Также необходимо оптимальным образом подобрать технику и оборудование на технологических участках, что, в свою очередь, обеспечивало бы беспрерывность работы и снижало простой данного оборудования.
43164. Восстановление детали оси пульта управления автокрана К-64 и разработка технологической планировки кабино-жестяницкого участка завода по ремонту тракторов Т-130 374.5 KB
  Курсовой проект является завершающим этапом изучения дисциплины ремонт машин и оборудования позволяющим в ходе работы над ним углубить и закрепить умение и навыки более детально изучить вопросы восстановления детали в частности оси пульта управления автокрана К64 углубить и закрепить умение и навыки в разработке технологической планировки медницкорадиаторного участка завода по ремонту тракторов Т130. В настоящее время ремонт детали достаточно широко применяется в практике эксплуатации строительных машин что и делает тему...
43165. Тепловой расчет конвективной туннельной сушильной установки для зимнего и летнего режимов 1.72 MB
  Определяем по заданным температурам tол=20.4 Определяем влагосодержание do г кгс.5 Определяем энтальпию ho кДж кгс.6 Определяем плотность природного газа при нормальных условиях.
43166. Тепловой расчет конвективной туннельной сушильной установки для зимнего (январь) и летнего (июль) периода 1.57 MB
  Выполнить тепловой расчет конвективной туннельной сушильной установки, определить длительность сушки, размеры установки, выбрать вентилятор для подачи наружного воздуха, дымосос, циклон и сожигательное устройство, на основании следующих данных.