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;

}


 

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

15848. Проблема постмодерна и фильм Питера Гринауэя «Брюхо архитектора» 154.5 KB
  Г. С. Кнабе Проблема постмодерна и фильм Питера Гринауэя Брюхо архитектора Кнабе Г.С. Древо познания древо жизни. М.: РГГУ 2006 с. 331344 Предметом настоящих заметок будет духовная и социокультурная ситуация в которой сегодня находится большая ч
15849. КИНО — ИСКУССТВО ИЗОБРАЗИТЕЛЬНОЕ 56.5 KB
  Aлександр Княжинский КИНО ИСКУССТВО ИЗОБРАЗИТЕЛЬНОЕ1 Из лекции во ВГИКе Давайте начнем с самого начала... Первое к чему я вас призываю никогда не натаскивайте в павильон где вам предстоит снимать много реквизита. Что обычно происходит в процессе съемки Ас...
15850. Взрывобезопасность. Взрывозащищенное (Ex) оборудование 488 KB
  Вид взрывозащиты – специальные меры, предусмотренные в электрооборудовании с целью предотвращения воспламенения окружающей взрывоопасной среды; совокупность средств взрывозащиты электрооборудования, установленная нормативными документами.
15851. Психоанализ о кино и кино о психоанализе 86 KB
  Ксения Корбут Психоанализ о кинои кино о психоанализе Данная статья представляет собой краткий обзор психоаналитических размышлений о кино и предназначается для тех кто не только любит кино но и хочет знать как же оно воздействует на зрителей. Иначе говоря кому инт...
15852. Язык-это баланс, а фильм-сюрприз 51.5 KB
  Дэвид Кроненберг Язык это баланс а фильм сюрприз1 Журнал Стюдио Studio Франция ведет рубрику Урок кино предназначенную для массового читателя и начинающих кинематографистов. В ней выступают многие крупные режиссеры излагающие свои вз
15853. Режиссер - это хозяин 135 KB
  Дэвид Линч РЕЖИССЕР ЭТО ХОЗЯИН1 В юности я хотел стать художником. Но во время занятий живописью я снял маленький мультфильм для того чтобы показывать его без перерыва нонстоп то есть в виде кольца на объемном так называемом скульптурном эк...
15854. Титаник. Спецэффекты в фильме 627.5 KB
  Титаник. Спецэффекты в фильме Автор: Дмитрий Мороз Титаник корабльлегенда изза своего катастрофического крушения навеки оставшийся в памяти простых смертных. Титаник фильм снятый за умопомрачительные 200 млн. долларов и ставший в итоге самой кассовой картин...
15855. ПАВЕЛ ПЕЧЕНКИН: ВРЕМЯ В ДОКУМЕНТАЛЬНОМ КИНО 57.5 KB
  ПАВЕЛ ПЕЧЕНКИН: ВРЕМЯ В ДОКУМЕНТАЛЬНОМ КИНО Интересно поговорить на тему которая объявлена немного провокационно в названии нашего фестиваля новое документальное кино. Мы должны всетаки решить есть оно или нет. Поэтому у меня в программе был заявлен доклад Акс
15856. Капитализация локальных ресурсов регионов России – ключевая стратегия модернизации их экономик 212 KB
  Капитализация локальных ресурсов регионов России ключевая стратегия модернизации их экономик К постановке проблемы Проблема капитализации территорий как систематической деятельности по превращению всех без исключения ее ресурсов фондов и активов в работ