Автор работы: Пользователь скрыл имя, 03 Декабря 2014 в 08:22, контрольная работа
Дан массив. 1)Определить элементы массива >-3 и < 9 2)определить элементы массива кратные 5 3)определить элементы массива больших их количества
Программа.
Sub Маркевич ()
Dim c(100) As Double, a As Integer, n As Integer
Range(Cells(1, 1), Cells(50, 50)).Clear
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Мытищинский филиал
Федерального государственного бюджетного образовательного учреждения высшего профессионального образования
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ»
Направление подготовки - 270800 - Строительство
Профиль подготовки - «Промышленное и гражданское строительство»
Квалификация выпускника - Специалист
Форма обучения – Очная
Выполнил студент: ПГСф 2-1с
Маркевич А.И.
2014г.
Работа №1.
Задание.
Дан массив. 1)Определить элементы массива >-3 и < 9 2)определить элементы массива кратные 5 3)определить элементы массива больших их количества
Программа.
Sub Маркевич ()
Dim c(100) As Double, a As Integer, n As Integer
Range(Cells(1, 1), Cells(50, 50)).Clear
n = Val(InputBox("n="))
Cells(1, 1) = "Массив"
Cells(1, 3) = "Задание 1"
Cells(1, 6) = "Задание 2"
Cells(1, 9) = "Задание 3"
For i = 2 To n
c(i) = Int(Rnd * 100)
Cells(i, 1) = c(i)
Next i
k1 = 0
For i = 2 To n
If (c(i) > -3) And (c(i) < 9) Then
c(i) = c(i)
Cells(i, 2) = c(i)
k1 = k1 + 1
Cells(3, 3) = "k1=" & k1
End If
Next i
If k1 = 0 Then
Cells(3, 3) = "таких элементов нет"
End If
MsgBox ("1З.k=" & k1)
p = 1
k2 = 0
For i = 2 To n
If (c(i) Mod 5 = 0) Then
c(i) = c(i)
Cells(i, 5) = c(i)
k2 = k2 + 1
p = p * c(i)
Cells(2, 6) = "k2=" & k2
Cells(3, 6) = "p=" & p
End If
Next i
If p = 1 And k2 = 0 Then
Cells(3, 6) = "таких элементов нет"
End If
For i = 2 To n
Cells(i, 9) = c(i)
If c(i) < n Then
c(i) = n
Cells(i, 9) = c(i)
End If
Next i
End Sub
Работа №2. Прогиб консольной балки.
Задание.
С помощью метода Элера, найти изгиб и изгибающий момент в консольной балки.
Программа:
Option Explicit
Sub Маркевич()
Range(Cells(1, 1), Cells(100, 100)).Clear
Dim x As Double, y As Double, z As Double, L As Integer, n As Integer, x0 As Double, y0 As Double, z0 As Double, h As Double, G As Integer, S As Integer
Worksheets("Лист2").Select
x0 = 0
y0 = 0
z0 = 0
h = 0.1
S = Val(InputBox("первая цифра зачетки="))
G = Val(InputBox("вторая цифра зачетки="))
n = Val(InputBox("число точек углубления балки"))
Cells(2, 1) = "x="
Cells(2, 2) = "y="
Cells(2, 3) = "z="
For L = 1 To n
z = z0 + h * F(z, x)
y = y0 + (h * (z + z0)) / 2
x = x0 + h
Cells(1, 1) = "координаты точки изгиба по x="
Cells(1, 2) = "координаты точки изгиба по y="
Cells(1, 3) = "координаты точки изгиба по z="
Cells(L + 3, 1) = x 'координаты точек изгиба
Cells(L + 3, 2) = y
Cells(L + 3, 3) = z
Cells(1, 5) = "изгибающий момент балки="
Cells(1, 6) = "прогиб балки="
Cells(2, 5) = "M(x)="
Cells(2, 6) = "F(z, x)="
Cells(L + 3, 5) = M(x)
Cells(L + 3, 6) = F(z, x)
z0 = z
y0 = y
x0 = x
Next L
End Sub
Private Function M(ByVal x As Double) As Double
M = 1 / Sqr((1 + 0.02 * (3 + 12) * x ^ 2) ^ 3)
End Function
Private Function F(ByVal z As Double, ByVal x As Double) As Double
F = 0.02 * (3 + 12) * M(x) * Sqr((1 + z ^ 2) ^ 3)
End Function
Работа №3. Задача теплопроводности.
Задача: Определить распределение температуры по толщине стены для заданного промежутка времени.
Программа:
Option Explicit
Sub Маркевич()
Dim u0(100) As Double, u1(100) As Double, g As Integer, s As Integer, n As Integer, h As Double, ae As Integer, tau As Double, i As Integer, k As Integer, t As Double, M As Integer, q As Double, x As Double
Worksheets("Лист3").Select
ae = 1
g = Val(InputBox("первая цифра зачетки="))
s = Val(InputBox("вторая цифра зачетки="))
n = Val(InputBox("число узлов по толщине стены"))
M = Val(InputBox("число узлов по времени"))
h = 1 / n
q = (h ^ 2) / (2 * ae)
For i = 0 To n
x = i * h
u0(i) = g + (g + 3 * s) * x - 2 * (g + s) * x ^ 2
u1(i) = u0(i)
Next i
For k = 0 To M
t = k * q
For i = 1 To n - 1
u1(i) = u0(i) + (q * ae / (h ^ 2)) * (u0(i + 1) - 2 * u0(i) + u0(i - 1))
Next i
For i = 1 To n - 1
u0(i) = u1(i)
Next i
Next k
Cells(1, 2) = "промежуток времени"
Cells(2, 2) = "t=" & t
For i = 0 To n
Cells(1, 1) = "распределение температуры по толщине стены за промежуток времени t"
Cells(i + 2, 1) = u1(i)
Next i
End Sub
Работа №4. Задача Дирихле.
Задача: Решить уравнения в частных производных с заданными значениями функции на границе расчетной области.
Программа.
Sub Маркевич()
Const N1 = 7, N2 = 5
DL1 = 1
DL2 = 1
Dim U(N1, N2) As Double
Worksheets("Лист4").Select
g = 1
s = 5
C = -8 * (s / DL1 + g / DL2) 'F(i,j)
H1 = DL1 / N1
H2 = DL2 / N2
For i = 0 To N1
x = H1 * i
For J = 0 To N2
Y = H2 * J
U(i, J) = 0
If ((i = 0) Or (i = N1)) Then U(i, J) = 4 * g * Y * (DL2 - Y) / DL2
If ((J = 0) Or (J = N2)) Then U(i, J) = 4 * s * x * (DL1 - x) / DL1
Next J
Next i
K = 0
5
Z = 0
For i = 1 To N1 - 1
For J = 1 To N2 - 1
R = U(i, J)
p = (U(i - 1, J) + U(i + 1, J)) / H1 / H1
p = p + (U(i, J - 1) + U(i, J + 1)) / H2 / H2 - C
U(i, J) = p / (2 / H1 / H1 + 2 / H2 / H2)
Z = Z + Abs(U(i, J) - R)
Next J
Next i
K = K + 1
If ((Z > 0.001) And (K < 100)) Then GoTo 5
Worksheets("Лист1").Select
Cells(1, 1) = " количество итераций = "
Cells(2, 1) = " k = " & K
For J = 0 To N2
For i = 0 To N1
Cells(1, 6) = "ЗНАЧЕНИЕ ФИЗ. ВЕЛИЧИНЫ :"
Cells(J + 3, i + 3) = " U(I, J)= " & U(i, J)
Next i
Next J
End Sub
Работа №5. Метод Гаусса.
Задача: решить систему линейного уравнения.
Программа:
Sub Маркевич()
Const n = 3
Dim a(n, n) As Double, b(n) As Double, x(n) As Double, i As Double, j As Double, k As Double, e As Double
For i = 1 To n
For j = 1 To n
a(i, j) = Cells(i, j)
Next j
b(i) = Cells(i, 5)
Next i
For i = 1 To n - 1
For j = 1 + i To n
a(j, i) = -(a(j, i) / a(i, i))
For k = i + 1 To n
a(j, k) = a(j, k) + a(j, i) * a(i, k)
Next k
b(j) = b(j) + a(j, i) * b(i)
Next j
Next i
x(n) = b(n) / a(n, n)
For i = n - 1 To 1 Step -1
e = b(i)
For j = i + 1 To n
e = e - x(j) * a(i, j)
Next j
x(i) = e / a(i, i)
Next i
For i = 1 To n
Cells(i, 7) = x(i)
Next i
End Sub