|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Разработка приложения “Расчет гравитационного поляот геологического объекта заданного вертикальным сечением”
Эта курсовая работа должна представлять интерес для геофизиков, но для получения навыков программирования она может быть использована студентами любых специальностей, тем более что никаких геофизических знаний, кроме знания закона всемирного тяготения Ньютона, здесь не требуется. Сила притяжения, которую в точке (X,Y,Z) создает точечная масса Mj, находящаяся в точке (Xj,Yj,Zj), вычисляется по формуле f = G ∙ Mj / Rj2, где G – гравитационная постоянная, а Rj – расстояние между точками: Rj2 = (X-Xj) 2 + (Y-Yj) 2 + (Z-Zj) 2. В разведочной гравиметрии измеряют вертикальную производную силы тяжести: ∆g = G ∙ Mj ∙ (Z-Zj) / Rj3, причем учитывают не всю массу геологического тела, например, гранитного массива, а его избыточную массу, обусловленную избыточной плотностью σ – разностью плотностей тела и вмещающих его горных пород. Рассмотрим задачу расчета ∆g от геологического тела, которое вытянуто вдоль оси Y перпендикулярно плоскости чертежа и в разрезе (в вертикальной плоскости XOZ) имеет сложную форму. На листе Excel построим модель тела в пределах диапазона ячеек (A5:D10). Вместо контура тела в ячейки занесем значения избыточной плотности. Если, например, избыточная плотность объекта равна 0.3, то в ячейки, две трети которых принадлежат геологическому телу, занесем избыточную плотность 0.2. Если ячейка целиком принадлежит телу, то в нашем примере ее избыточная плотность равна 0.3. Если же ячейка находится за пределами тела, то ей припишем нулевую избыточную плотность. Теперь с помощью параметров опишем геометрию модели, учитывая, что наш чертеж как бы повернут на 90о – фактически ось Z направлена вверх. Прежде всего, введем параметры для обозначения размеров параллелепипедов, моделирующих тело. Размеры по осям X и Y обозначим через a, b. Размер верхнего параллелепипеда по оси Z обозначим через c. Размер следующего параллелепипеда увеличим в q раз и т.д. Загрубление модели с глубиной целесообразно, т.к. точность геофизических исследований с глубиной падает. Будем считать, что верхняя кромка геологического тела (и системы параллелепипедов) находится на глубине z0 относительно горизонтальной плоскости Z=0, содержащей профиль измерений. Следовательно, координата Z верхней кромки тела равна –z0. Ось X также изображена на чертеже. Вдоль оси X показаны точки, в которых надо вычислить ∆g от системы параллелепипедов. Сами параллелепипеды размещены от X=3.5∙a до X=9.5∙a. Для ввода параметров модели на листе Excel надо разместить поля TextBoxA, TextBoxB, TextBoxC, TextBoxQ, TextBoxZ0. Кроме того, требуется командная кнопка с надписью (свойство Caption) «Вычислить гравитационное поле». Точки, в которых вычисляется поле, имеют координаты Y=0, Z=0, X = (i-1) ∙ a, где i = 1,…, 15. Результаты вычислений надо разместить в диапазоне ячеек (F1:F15).
Итак, точки, в которых требуется вычислить гравитационное поле, определены. Поле в каждой точке – это суммарный гравитационный эффект от заданных параллелепипедов. Следовательно, разработка этого приложения сводится к разработке событийной процедуры и функции (назовем ее GXYZ), которая в точке (X,0,0) вычисляет гравитационное поле параллелепипеда с координатами граней X1,X2,Y1,Y2,Z1,Z2 и с избыточной плотностью σ. Событийная процедура должна извлечь из полей TextBoxA, TextBoxB и т.д. параметры модели, организовать цикл по точкам, а внутри него – цикл по параллелепипедам, содержащий для каждого параллелепипеда обращение к функции GXYZ. Суммарное поле параллелепипедов в очередной i-ой точке надо занести в столбец F: Cells(i,6).Value = g. Координаты граней очередного параллелепипеда и его избыточную плотность рекомендуем перед обращением к функции GXYZ поместить в глобальные переменные, определяемые в начале модуля: Option Explicit Dim XYZ(1 To 6) As Single Dim Sigma As Single ' XYZ - Массив, содержащий координаты граней X1,X2,Y1,Y2,Z1,Z2 ' Sigma - Плотность параллелепипеда Private Sub Btn1_Click() Dim I As Integer, J As Integer, K As Integer Dim a As Single, b As Single, c As Single, q As Single, cq As Single Dim g As Single, X As Single, z0 As Single a = TextBoxA.Value: b = TextBoxB.Value: c = TextBoxC.Value q = TextBoxQ.Value: z0 = TextBoxZ0.Value XYZ(3) = -b / 2: XYZ(4) = b / 2
Здесь приведено только начало модуля и событийной процедуры. В курсовой работе надо разработать полностью событийную процедуру и функцию
Function GXYZ(X As Single) As Single
При программировании функции GXYZ необходимо знать, что поле параллелепипеда с координатами граней X1,X2,Y1,Y2,Z1,Z2 в точке (X,Y,Z) вычисляется по формуле:
X-X2 Y-Y2 Z-Z2 ∆g = G ∙ σ ∙ ∫ ∫ ∫ [ z / R 3] dx dy dz, где R = (x 2 + y 2 + z 2) 1/2 . X-X1 Y-Y1 Z-Z1 После взятия интеграла получим: X-X2 Y-Y2 Z-Z2 ∆g = G ∙ σ ∙ [ x ∙ Ln│ y + R │ + y ∙ Ln│ x + R │- z ∙ arctg (x ∙ y / z ∙ R)] │ │ │. X-X1 Y-Y1 Z-Z1 В этой формуле G = 6.67, если линейные величины выражены в км, а ∆g в мГал. Выражение в квадратных скобках вычисляется 8 раз: при каждом из двух значений x – для двух значений y, а при каждом y – для двух значений z. Следовательно, для вычислений необходимо организовать тройной цикл: во внешнем цикле определяется x (первый раз x = X-X1, во второй раз x = X-X2), в следующем цикле определяется y и, наконец, в третьем, внутреннем цикле определяется z и вычисляется выражение в квадратных скобках. Знак, с которым результат этого вычисления должен добавляться к накапливаемому значению ∆g, можно определить заранее в массиве Sign: Dim Sign(1 To 8) As Single Sign(1) = -1: Sign(2) = 1: Sign(3) = 1: Sign(4) = -1 Sign(5) = 1: Sign(6) = -1: Sign(7) = -1: Sign(8) = 1 Последняя рекомендация: выражение в квадратных скобках надо вычислять, если R > Eps (Eps – малое число, например, Eps = 0.0000000001), первое слагаемое в квадратных скобках надо вычислять и добавлять к накапливаемому результату, если Abs(y+R)> Eps, второе слагаемое – если Abs(x+R)> Eps, а третье слагаемое – если z > Eps. Эта курсовая работа, безусловно, сложна для начинающего программиста. Но хорошо подготовленный студент, интересующийся программированием, может с ней справиться. Эта работа показывает, насколько кропотлив труд программиста: требуется умение построить модель объекта, затем математическую модель, а для этого нужны математические знания - в нашем примере - умение взять тройной интеграл. Наконец, при программировании надо предусмотреть особые ситуации (в этом примере - возможность попадания результирующей точки в вершину параллелепипеда), причем с учетом точности вычислений. Взяв за основу эту работу, можно подготовить варианты менее сложных курсовых работ. Например, вычисление поля параллелепипеда можно заменить расчетом поля точечной массы, помещенной в центр тяжести параллелепипеда и равной произведению его объема на избыточную плотность. Еще более простой вариант: на листе 1 книги Excel в три столбца размещаются координаты точек X, Y, Z, а на листе 2 – координаты и значения точечных масс (4 столбца); на листе 1 надо поместить в четвертый столбец значения гравитационного поля, создаваемого всеми массами в каждой точке. Литература к курсовой работе 5. Ломтадзе В.В. Программное и информационное обеспечение геофизических исследований. М.: Недра, 1993. –268 с.
6. Разработка приложения “Графические построения в плоскости XOY”
Различные графические построения часто необходимы в любой практической деятельности. В литературе по VBA этот вопрос практически не освещен, но в Excel и в Word всегда можно вызвать на экран панель инструментов Рисование и конструировать рисунок, включая в него линии, надписи и другие фигуры, образцы которых (Shapes) представлены на панели инструментов Рисование. Если перед созданием рисунка включить запись макроса (кнопка Записать макрос на панели инструментов Visual Basic), а затем в окне Visual Basic посмотреть его текст и, кроме того, обратиться к встроенной справке, то становится ясно, как программировать векторную графику в VBA. Именно так мы и поступили. Далее приводится начало модуля, содержащего базовые процедуры, с помощью которых можно программировать графические построения на плоскости XOY.
' Глобальные переменные и константы Dim cx As Single, cy As Single ' cx,cy - масштабные коэффициенты: пиксели/сантиметры Dim nx1 As Integer, ny1 As Integer, nx2 As Integer, ny2 As Integer Dim RedClr As Integer, GreenClr As Integer, BlueClr As Integer Dim FntName As String, FntSize As Integer, FntColor As Integer Const nx0 As Integer = 25.5: Const ny0 As Integer = 25.5: ' Инициализация графического окна размером Lx ∙ Ly (в сантиметрах) ' Начало координат в левом верхнем углу окна, ось X направлена вправо, Y- вниз Sub GrIni() SP 0, 0, 0 cx = TextBoxCX.Value: cy = TextBoxCY.Value Lx = TextBoxLX.Value: Ly = TextBoxLY.Value Лист2.Activate: Лист2.Shapes.SelectAll Selection.Delete ' Удаление графических элементов с листа 2 Лист2.Shapes.AddShape(msoShapeRectangle, nx0, ny0, Lx * cx, Ly * cy).Select End Sub ' Пересчет координат из сантиметров чертежа в пиксели (точки) Function GETnx(xcm As Single) As Integer GETnx = nx0 + xcm * cx End Function Function GETny(ycm As Single) As Integer GETny = ny0 + ycm * cy End Function ' Перемещение в точку xcm, ycm (Move Absolute, координаты точки - в см) Sub MA(xcm As Single, ycm As Single) nx1 = GETnx(xcm): ny1 = GETny(ycm) End Sub ' Вычерчивание линии из текущей точки в точку xcm, ycm (Plot Absolute) Sub PA(xcm As Single, ycm As Single) nx2 = GETnx(xcm): ny2 = GETny(ycm) With Лист2.Shapes.AddLine(nx1, ny1, nx2, ny2).Line .ForeColor.RGB = RGB(RedClr, GreenClr, BlueClr) End With nx1 = nx2: ny1 = ny2 End Sub ' Установка цвета линий (Set Pen) Sub SP(Red As Integer, Green As Integer, Blue As Integer) RedClr = Red: GreenClr = Green: BlueClr = Blue End Sub ' Установка шрифта, его размера и цвета (Set Font) ' Цвет: 1-черный, 2-пусто, 3-красный, 4- ярко-зеленый, 5-синий, ' 6-желтый, 7-светло-фиол., 8-голубой, 9-коричн., 10-зеленый, 11-темно-синий Sub SF(Name As String, Size As Integer, Color As Integer) FntName = Name: FntSize = Size: FntColor = Color End Sub ' Надпись (Write String) – указываются размеры текстового окна и сам текст Sub WS(xcm As Single, ycm As Single, Lxcm As Single, Lycm As Single, _ Txt As String) Лист2.Shapes.AddTextbox(msoTextOrientationHorizontal, _ GETnx(xcm), GETny(ycm), Lxcm * cx, Lycm * cy).Select Selection.ShapeRange.Line.Visible = msoFalse Selection.Characters.Text = Txt With Selection.Characters(Start:=1, Length:=Len(Txt)).Font .Name = FntName .Size = FntSize .ColorIndex = FntColor End With End Sub Private Sub Btn1_Click() ' Событийная процедура GrIni MA 5, 5 PA 10, 5 SP 200, 0, 0 PA 10, 10 SF "Times New Roman Cyr", 9, 11 WS -0.8, -0.2, 0.8, 0.4, "0.0" End Sub
Предлагаемые процедуры разработаны нами, чтобы избежать непосредственного использования конструкций VBA, позволяющих размещать на листе книги Excel линии и надписи, поскольку синтаксис этих конструкций довольно сложен. Приведенный в конце модуля пример простейшей событийной процедуры показывает, как используя процедуры GrIni, MA, PA, SP, SF, WS, программировать построение графиков, схем, чертежей и т.п. Набор перечисленных процедур рассчитан на то, что на листе 1 книги Excel размещены поля TextBoxLX, TextBoxLY, TextBoxCX, TextBoxCY и командная кнопка Btn1.
В полях редактирования (TextBox) задаются размеры чертежа в см и масштабные коэффициенты для перехода от см к точкам (пикселям). Коэффициенты cx, cy можно скорректировать после вывода чертежа на принтер. Процедура GrIni должна использоваться первой – она вычерчивает прямоугольное окно размером Lx∙Ly на листе 2 книги Excel. В этом окне затем проводятся дальнейшие построения. Остальные процедуры легко понять по распечатке. Теперь сформулируем варианты курсовой работы. Вариант 1. На листе 1 разместить элементы управления и в двух столбцах - значения X, Y. На листе 2 построить график Y(X). При построении координатных осей найти диапазоны изменения X, Y; оси оцифровать «круглыми» значениями. Вариант 2. Аналогичен варианту 1, но надо строить график X(Y). Вариант 3. Построить разными цветами графики F1(X), F2(X), разместив на листе 1 три ряда (столбца) чисел: X, F1, F2. Возможно построение обоих графиков в разных масштабах или в одном и том же масштабе. БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Гончаров А. Excel 97 в примерах. –СПб.: Питер, 1997. –336 с. 2. Громов Г.Г. Национальные информационные ресурсы: проблемы промышленной эксплуатации. –М.: Наука, 1984. 3. Информатика: Учебник /Под ред. проф. Н.В.Макаровой. -М.: Финансы и статистика, 1997. -768 с. 4. Информатика. Учебное пособие /Под ред. чл.-корр. МАИ В.Г.Кирия. -Иркутск: Изд-во Иркутского госуд. техн. ун-та, 1998. Часть 1 -159 с. Часть 2 -381 с. 5. Мэнсфилд Р. Windows 95 для занятых /Перев. с англ. - СПб: Питер, 1996. -304 с. Также др. книги по Windows 95. 6. Нельсон С. Office 97 для занятых /Перев. с англ. - СПб: Питер, 1997. -288 с. Также др. книги по Microsoft Office, Word, Excel, Access, PowerPoint, OutLook. 7. Очков В.Ф. Mathcad 7 Pro для студентов и инженеров. -М.: КомпьютерПресс, 1998. -384 с. 8. Петров А.В. Windows-информатика. Учебное пособие. -Иркутск: Изд-во Иркутского госуд. техн. ун-та, 1998. -135 с. 9. Санна П. и др. Visual Basic для приложений (версия 5) в подлиннике: пер. с англ. – СПб.: BHV – Санкт-Петербург, 1998. – 704 с. 10. Microsoft Visual Basic 5. Шаг за шагом: Практ.пособ./Пер. с англ. кн. Микаэла Хальворсона. -М.: Изд-во ЭКОМ, 1998. -432 с. 11. Oracle 7 и вычисления клиент-сервер /Пер.с англ. кн. Стивена Бобровски. -М.: Изд-во ЛОРИ, 1996. -651 с. Учебное издание
В.В.Ломтадзе, Л.П.Шишкина Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.018 сек.) |