Методы решения инженерных задач
Основы программирования
Ветвления
Часто возникают ситуации, когда для описать какие-либо характеристики невозможно с использвоанием одной функции. Поэтому для отдельных диапазонов аргементов применяются разные выражения. В связи с этим необходмио в зависимоти от значения аргументов изменять алгоритм расчета.
В языках программирования это делается с ичпользованием оператора ветвления.
Например заданим значение переменной равное 10
a = 11
В зависимости от величины переменной напишем будет ли эта переменная больше или меньше 10
if a >= 10
println("a ⩾ 10")
else
println("a < 10")
end
В качетве примера можно привести расчет коэффициента гидравлического трения (в некоторой литературе называемы коэффициент Дарси). Для ламинарного режима (когда Re< 2320) его значение может быть определено теоритически и равно .
При возникновении турбулентности формулы для расчета меняются. Для описания гидравлического сопротивления разаработано множество выражений основанных на экспериментальных данных. Вот функци для расчета коэффициента гидравлического трения для выражений Альтшуля:
function λᵧ(Re, ε)
if Re < 2320.0
return 64 / Re
elseif Re < 15 / ε
return 0.3164 / Re^0.25
elseif Re < 300 / ε
return 0.11 * (ε + 68 / Re)^0.25
else
return 0.11 * ε^0.25
end
end
В данном выражении последовательно проверяется, если Re < 2320.0 то λ расчитывается по формуле 64 / Re. Если больше то проверяется следующее условие, потом следующее и т.д.
using Plots
Re = 300:10:10^6
plot(Re, λᵧ.(Re, 1/30),xscale=:log10, yscale=:log10, label = "ε = 1/30")
plot!(Re, λᵧ.(Re, 1/500),xscale=:log10, yscale=:log10, label = "ε = 1/500")
plot!(Re, λᵧ.(Re, 1/1014),xscale=:log10, yscale=:log10, label = "ε = 1/1014")
xlabel!("Re")
ylabel!("λ")
В операторах ветвления можно устанавливать несколько условий. комбинировать их можно с использованием операторов и && или ||
Зададим еще одну переменную b
b = 5
Оператор && выдаст true (верно) только в том случае если выполняется оба условия:
a > 10 && b > 3
В случае, если не выполняется хотя бы одно из условий, то оператор вернет false (ложь)
a > 13 && b >3
a > 10 && b > 10
Оператор || вернет true в случае если хотя бы одно из условий выполняется
a > 10 || b > 3
a > 13 || b > 3
a > 10 || b > 10
Циклы
Циклы необходимы для организации повторяющихся расчетов.
Цикл for
используется в случае, если мы знаем сколько раз необходимо повтротить цикл.
В данном примере функция находит сумму
function myfunc1(N)
s = 0
for i = 1:N
s += i
end
return s
end
println("при N = 20 , s = ", myfunc1(20))
В случае если необходимо найти произведение величин, функция выглядит похоже. Но начальное значение переменной s равно 1.
function myfunc2(N)
s = 1
for i = 1:N
s *= i
end
return s
end
myfunc2(10)
цикл while
используется в случае, если мы не знаем сколько раз необходимо повторить цикл, но знаем условие, при котором цикл должен выполняться.
Решим пример по вычислению суммы из задания выше с использованием цикла while
function myfunc3(N)
s = 0
i = 1
while i <= N
s += i
i += 1
end
return s
end
В даном примере нам самим необходимо задать значение i и прибавлять 1 на каждой итерации цикла
myfunc3(20)