Написание программы для решения системы уравнений методом сеток

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

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

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

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

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

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

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

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

Хабаровский Государственный Технический Университет

                                                                Кафедра ПОВТ и АС

Лабораторная работа по дисциплине

«Уравнения математической физики» №1.2

                                                             Выполнил: ст-т группы ПО-12 Черенков В.Л.

Проверил: Вихтенко Э.М.

Хабаровск 2004

Задание: Написать программу, которая решала бы методом сеток следующую систему уравнений:

a1(x,y)*d2U/dx2+ a2(x,y)*d2U/dxdy+ a3(x,y)*d2U/dy2+ b1(x,y)*dU/dx+ b2(x,y)*dU/dy+c(x,y)*U(x,y)=f(x,y) ;

U(x,b0)=Q1(x);

U(x,b)=Q2(x);

U(a0,y)=Q3(y);

U(a,y)=Q4(y);

Рассчитать погрешность метода.

Составить три тестовых примера для программы.

Реализация:

Пользователь задаёт прямоугольную область, на которой применяется метод сеток через координаты левого нижнего (a0,b0) и правого верхнего (a,b) углов области , а также количество узлов сетки по x и y (Nx,Ny).

Программой вычисляется шаг сетки (hx и hy) и формируется матрица Size*Size+1, где Size – количество точек сетки, то есть Nx*Ny. Матрица формируется следующим образом: для всех внутренних узлов сетки все виды производных можно приближённо записать через соседние точки:

Таким образом, эллиптическое уравнение для каждой из внутренних точек можно переписать относительно соседних точек в следующем виде:

Получается уравнений столько же, сколько и внутренних точек, но с Size неизвестными. Недостающие уравнения получаем из краевых условий.

Решаем полученную матрицу методом Гаусса и получаем вектор со значениями функции в узлах сетки.

Тестовые примеры:

1. U(x,y) = x3 + y3;

В программу забиваем следующие параметры:

et = x*x*x + y*y*y.

f(x,y) = a1(x,y)*(6*x + y*y*y) + a2(x,y)*(3*x*x + 3*y*y) + a3(x,y)*(x*x*x + 6*y) +

+ b1(x,y)*(3*x*x+y*y*y) + b2(x,y)*(x*x*x + 3*y*y) + c(x,y)*(x*x*x + y*y*y).

Q1(x) = x*x*x + b0*b0*b0.

Q2(x) = x*x*x + bn*bn*bn.

Q3(y) = y*y*y + a0*a0*a0.

Q4(y) = y*y*y + an*an*an.

Результаты:

U(0 , 0)=0

U(0,25 , 0)=0,015625

U(0,5 , 0)=0,125

U(0,75 , 0)=0,421875

U(1 , 0)=1

U(0 , 0,25)=0,015625

U(0,25 , 0,25)=0,01719348133

U(0,5 , 0,25)=0,1296774745

U(0,75 , 0,25)=0,4310065806

U(1 , 0,25)=1,015625

U(0 , 0,5)=0,125

U(0,25 , 0,5)=0,1296774

U(0,5 , 0,5)=0,2416544408

U(0,75 , 0,5)=0,5420243144

U(1 , 0,5)=1,125

U(0 , 0,75)=0,421875

U(0,25 , 0,75)=0,431006521

U(0,5 , 0,75)=0,5420243144

U(0,75 , 0,75)=0,8409865499

U(1 , 0,75)=1,421875

U(0 , 1)=1

U(0,25 , 1)=1,015625

U(0,5 , 1)=1,125

U(0,75 , 1)=1,421875

U(1 , 1)=2

F(0 , 0)=0

F(0,25 , 0)=0,015625

F(0,5 , 0)=0,125

F(0,75 , 0)=0,421875

F(1 , 0)=1

F(0 , 0,25)=0,015625

F(0,25 , 0,25)=0,03125

F(0,5 , 0,25)=0,140625

F(0,75 , 0,25)=0,4375

F(1 , 0,25)=1,015625

F(0 , 0,5)=0,125

F(0,25 , 0,5)=0,140625

F(0,5 , 0,5)=0,25

F(0,75 , 0,5)=0,546875

F(1 , 0,5)=1,125

F(0 , 0,75)=0,421875

F(0,25 , 0,75)=0,4375

F(0,5 , 0,75)=0,546875

F(0,75 , 0,75)=0,84375

F(1 , 0,75)=1,421875

F(0 , 1)=1

F(0,25 , 1)=1,015625

F(0,5 , 1)=1,125

F(0,75 , 1)=1,421875

F(1 , 1)=2

max=∆(0.25,0.25)=0.014;

2. U(x,y) = sin(x) + cos(y);

В программу забиваем следующие параметры:

et = sin(x) + cos(y).

f(x,y) = a1(x,y)*(-sin(x) + cos(y)) + a2(x,y)*(cos(x) - sin(y)) + a3(x,y)*(sin(x) - cos(y)) +

+ b1(x,y)*(cos(x) + cos(y)) + b2(x,y)*(sin(x) - sin(y)) + c(x,y)*(sin(x) + cos(y)).

Q1(x) = sin(x) + cos(b0).

Q2(x) = sin(x) + cos(bn).

Q3(y) = sin(a0) + cos(y).

Q4(y) = sin(an) + cos(y).

Результаты:

U(0 , 0)=1

U(0,25 , 0)=1,247403979

U(0,5 , 0)=1,47942555

U(0,75 , 0)=1,681638718

U(1 , 0)=1,841470957

U(0 , 0,25)=0,9689124227

U(0,25 , 0,25)=1,214879751

U(0,5 , 0,25)=1,447626948

U(0,75 , 0,25)=1,650351405

U(1 , 0,25)=1,810383439

U(0 , 0,5)=0,87758255

U(0,25 , 0,5)=1,124423385

U(0,5 , 0,5)=1,35679698

U(0,75 , 0,5)=1,55921936

U(1 , 0,5)=1,719053507

U(0 , 0,75)=0,7316888571

U(0,25 , 0,75)=0,9789865017

U(0,5 , 0,75)=1,211125493

U(0,75 , 0,75)=1,413384795

U(1 , 0,75)=1,573159814

U(0 , 1)=0,5403022766

U(0,25 , 1)=0,7877062559

U(0,5 , 1)=1,019727826

U(0,75 , 1)=1,221941113

U(1 , 1)=1,381773233

F(0 , 0)=1

F(0,25 , 0)=1,247403979

F(0,5 , 0)=1,47942555

F(0,75 , 0)=1,681638718

F(1 , 0)=1,841470957

F(0 , 0,25)=0,9689124227

F(0,25 , 0,25)=1,216316342

F(0,5 , 0,25)=1,448337913

F(0,75 , 0,25)=1,6505512

F(1 , 0,25)=1,810383439

F(0 , 0,5)=0,87758255

F(0,25 , 0,5)=1,124986529

F(0,5 , 0,5)=1,3570081

F(0,75 , 0,5)=1,559221268

F(1 , 0,5)=1,719053507

F(0 , 0,75)=0,7316888571

F(0,25 , 0,75)=0,9790928364

F(0,5 , 0,75)=1,211114407

F(0,75 , 0,75)=1,413327575

F(1 , 0,75)=1,573159814

F(0 , 1)=0,5403022766

F(0,25 , 1)=0,7877062559

F(0,5 , 1)=1,019727826

F(0,75 , 1)=1,221941113

F(1 , 1)=1,381773233

max=∆(0.25,0.25)=0.0014;

3. U(x,y) = (x+y)2.

В программу забиваем следующие параметры:

et = (x + y)*(x + y).

f(x,y) = a1(x,y)*(y*y + 2*y + 2) + a2(x,y)*(2*x + 2*y + 2) + a3(x,y)*(x*x + 2*x + 2) +

+ b1(x,y)*(2*x + y*y + 2*y) + b2(x,y)*(x*x + 2*x + 2*y) + c(x,y)*(x + y)*(x + y).

Q1(x) = (x + b0)*(x + b0).

Q2(x) = (x + bn)*(x + bn).

Q3(y) = (a0 + y)*(a0 + y).

Q4(y) = (an + y)*(an + y).

Результаты:

U(0 , 0)=0

U(0,25 , 0)=0,0625

U(0,5 , 0)=0,25

U(0,75 , 0)=0,5625

U(1 , 0)=1

U(0 , 0,25)=0,0625

U(0,25 , 0,25)=-0,9098126888

U(0,5 , 0,25)=-0,212270245

U(0,75 , 0,25)=0,6120939255

U(1 , 0,25)=1,5625

U(0 , 0,5)=0,25

U(0,25 , 0,5)=-0,2122700661

U(0,5 , 0,5)=0,4826195836

U(0,75 , 0,5)=1,303506613

U(1 , 0,5)=2,25

U(0 , 0,75)=0,5625

U(0,25 , 0,75)=0,6120939255

U(0,5 , 0,75)=1,303506374

U(0,75 , 0,75)=2,12035203

U(1 , 0,75)=3,0625

U(0 , 1)=1

U(0,25 , 1)=1,5625

U(0,5 , 1)=2,25

U(0,75 , 1)=3,0625

U(1 , 1)=4

F(0 , 0)=0

F(0,25 , 0)=0,0625

F(0,5 , 0)=0,25

F(0,75 , 0)=0,5625

F(1 , 0)=1

F(0 , 0,25)=0,0625

F(0,25 , 0,25)=0,25

F(0,5 , 0,25)=0,5625

F(0,75 , 0,25)=1

F(1 , 0,25)=1,5625

F(0 , 0,5)=0,25

F(0,25 , 0,5)=0,5625

F(0,5 , 0,5)=1

F(0,75 , 0,5)=1,5625

F(1 , 0,5)=2,25

F(0 , 0,75)=0,5625

F(0,25 , 0,75)=1

F(0,5 , 0,75)=1,5625

F(0,75 , 0,75)=2,25

F(1 , 0,75)=3,0625

F(0 , 1)=1

F(0,25 , 1)=1,5625

F(0,5 , 1)=2,25

F(0,75 , 1)=3,0625

F(1 , 1)=4

max=∆(0.25,0.25)=1.159;

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

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

Тип:
Отчеты по лабораторным работам
Размер файла:
55 Kb
Скачали:
0

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

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

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

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

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

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