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;

}


 

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

36203. Стропильные материалы для малоэтажных зданий 20.54 KB
  Стропила несущие конструкции скатной кровли. Наслонные стропила: концами опираются на стены здания а средней частью при пролете между опорами более 4. Наличие дополнительной опоры позволяет увеличить ширину перекрываемую наслонными стропилами до 12м а двух опор – до 15м. Висячие стропила: опираются только концами на стены здания; шаг таких стропил от 3 до 6.
36204. Конструктивные схемы зданий (схемы зданий каркасных и зданий с несущими стенами) 24.76 KB
  Несмотря на значительные различия существующие между зданиями разног назначения как во внешнем виде так и во внутренней структуре все они состоят из основных взаимосвязных архитектурноконструктивных элементов выполняющих определенные функции. Основные элементы здания разделяются на: Несущие – воспринимают основные нагрузки возникающие в здании. К основным элементам здания относятся: фундаменты стены перекрытия отдельные опоры крыша перегородки лестницы окна двери. ФУНДАМЕНТ подземная конструкция основным назначением...
36205. Естественные и искусственные основания зданий (классификация грунтов) 32.5 KB
  Классификация грунтов: Скальные грунты залегают в виде сплошного массива. Эти грунты несжимаемы водоустойчивы и при отсутствии трещин и пустот являются наиболее прочными и надежными основаниями. Менее прочны скальные грунты залегающие в виде трещиноватых слоев образующих подобие сухой кладки. Крупнообломочные грунты это несвязные обломки скальных пород с преобладанием по массе свыше 50 частиц размером более 2мм.
36206. Фундаменты малоэтажных зданий (конструкции, материалы) 188.22 KB
  Фундаменты малоэтажных зданий конструкции материалы Фундамент конструктивный элемент здания воспринимающий нагрузку от наземной части здания и передающий ее на основание. с подушкой3трапецеидальной формы4ступенчатый высота ступени больше или равно 30 см Фундаменты малоэтажных жилых зданий...
36207. Деревянные конструкции. Принцип фахверковой стены. Вопросы ее утепления и облицовки 51 KB
  Фахверковые дома имеют жёсткий несущий каркас из : стоек вертикальных элементов балок горизонтальных элементов раскосов диагональных элементов которые и являются основной отличительной особенностью конструкции фахверка. В основном применяются конструкции позволяющие создать большую площадь остекления что зрительно создает эффект растворения границы интерьера сближая человека с природой. В основном несущие элементы конструкции фахверка покрывают защитным составом позволяющим сохранять древесину сухой трудновоспламеняемой и...
36208. КАМЕННЫЕ КОНСТРУКЦИИ ОДНОСЛОЙНЫЕ И МНОГОСЛОЙНЫЕ КОНСТРУКЦИИ НЕСУЩИХ СТЕН 159 KB
  Стены основные элементы конструкции здания. Несущая стена является естественным продолжением и неотъемлемым элементом конструкции здания служит опорой для балок или бетонных плит потолочного перекрытия. Наружные стены могут быть однослойной или слоистой конструкции.
36209. Задачи дискретной оптимизации. Основные точные методы дискретной оптимизации: поиск с возвратом, динамическое программирование, метод ветвей и границ. Приближённые методы дискретной оптимизации: жадный алгоритм, метод локальных вариаций 126.5 KB
  Тогда в терминах ЦЧЛП задача о рюкзаке может быть сформулирована так: найти максимум линейной функции при ограничениях хj  0 . Найти кратчайший маршрут коммивояжера бродячего торговца начинающийся и заканчивающийся в заданном городе и проходящий через все города. Воспользовавшись им при k = n – 1 1 можно найти Q х0 – оптимальное значение критерия эффективности. Зная х1 можно найти – оптимальное управление на 2й стадии и т.
36210. Языки описания выбора. Процедуры выбора при критериальном описании: скалярно-оптимизационный механизм выбора, человеко-машинные процедуры, мажоритарные схемы 73.5 KB
  Процедуры выбора при критериальном описании: скалярнооптимизационный механизм выбора человекомашинные процедуры мажоритарные схемы. Как любая теория теория выбора начинается с языка описания. К настоящему времени сложилось три основных языка описания выбора: критериальный язык; язык бинарных отношений; язык функций выбора.
36211. Классы численных методов построения множеств неулучшаемых решений. Основные теоремы для поточечных методов и алгоритма последовательного выбора 31.5 KB
  Процедуры первой группы осуществляют поочередный поиск отдельных неулучшаемых точек как решений вспомогательных скалярных задач. В них на каждой итерации получается целое множество “неплохих†точек которое на последующих шагах постепенно улучшается. Генератор на каждой итерации порождает набор точек zk а ФВ осуществляет отбор в некотором смысле лучших из них: Генератор множеств точек zk Функция выбора С Для организации выбора необходимо произвести парные сравнения исходных вариантов и отбросить те из...