Хабаровский Государственный Технический Университет
Кафедра ПОВТ и АС
Лабораторная работа по дисциплине
«Уравнения математической физики» №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;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.