Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Расчет водонасыщенных грунтовых оснований. Монография

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
󰇟
 󰇠
󰇟
󰇠
󰇟
󰇠
󰇟 󰇠
> #Расчет правой части системы линейных уравнений. C := seq((kappa[i]/kappa[0]-1)*P[i], i=1..N-1), kappa[N]/kappa[0]-1;
  
 
> #Решение системы. Используется построенную матрицу и последовательность С
res := linalg[linsolve](M, vector([C]));
󰇟 
 󰇠
> #Конвертация полученного решения в array (так как array индексируется от нуля) d := array(0..N+1, [0, seq(res[i], i=1..N), 0]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

> funcD := (idx)->alpha*(1-sum((d[j]-d[j+1])*(idx­T[j])*Heaviside(idx-T[j]), j=0..N));
  
󰇭

 

  

󰇛󰇜 
󰇮
131
> plot(funcD(x), x=0..400);
132
Приложение 4
Программное приложение для определения деформированного
состояния водонасыщенных оснований
> #Блок инициализации констант (N, пси, и других) > N := 7; #размерность
Z := 0; Za := 8.15; #Z для расчета массива
a[i]
sigma0 := 0.054; # значение sigma0 fSigma := 0.0234583; # значение фикции
sigma(0)
Digits := 10; #точность выводимых зна-
чений
alpha := 0.069507782; H := 10; omega := 0.124399;
  
 





 
 
ТОЧКИ КОЛЛОКАЦИИ ДЛЯ ФУНКЦИИ Us
# Блок инициализации параметров P, T, t и a (от 0 до N) # array - используется, так как индексация у этой структуры может начинаться с нуля (0..N а не 1..N) T := array(0..N, [0, 0.09, 0.81, 3.24, 11.34, 56.7,
168.76, 360]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

133
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

> P := array(0..N, [infinity, 8.2873889706053,
0.96609795368344, 0.285466183166673,
0.0912067168620717, 0.0138748108690414,
0.0043427829407659, 0]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

ФУНКЦИЯ a2
Pa := array(0..N, [infinity, 8.1007826976189,
0.97991767639357, 0.24588582509378,
0.0804781361485954, 0.0086764099896161,
0.0023543136698075, 0]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

> taNum := 7; #Количество заданных Т элемен- тов (автоматически подставляется в формулу "сумма от 1 до tnum")
ta := array(0..taNum, [0, 0.1, 0.9, 4, 14, 70, 150, 227]);

 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜 󰇛󰇜 󰇛󰇜 󰇛󰇜
   
134
> d := array(1..N, [0.231362355, 0.455142243,
0.144900436, -0.042625511, -0.003097535213, -
0.002704241826, -0.000186732]);
 󰇟  
  󰇠
> #Формула для вычисления массива a[i] funcA := (Pai)->alpha*(1+sum(d[i]*(1/Pai*exp(1)^(­Pai*ta[i-1]) - 1/Pai*exp(1)^(-Pai*ta[i])), i=1..ta­Num));
 󰇧 



󰇛󰇜


󰇛󰇜


󰇨
> Alast := -1/Za*ln(1-fSigma/sigma0); a := array(1..N, [seq(funcA(Pa[j]), j=1..N-1), Alast]);
 
 󰇟
󰇠
ФУНКЦИЯ 1/Es
# Блок ввода дополнительных данных (массивов te и k) для расчета массива w teNum := 7; #количество элементов в задаваемом мас­сиве te (получаем te массив от 0 до teNum)
te := array(0..teNum, [0, 0.09, 0.81, 3.24, 11.34,
56.7, 168.76, 360]);

 󰇛 󰇟
󰇛󰇜

󰇛󰇜 󰇛󰇜
 
󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

135
> kNum := teNum; #количество элементов в задаваемом
массиве k, должно быть не менее чем teNum k := array(1..kNum, [0.12455654905, 0.19567986381,
0.11861439511, 0.06974564691, 0.025686294387,
0.00561547079, 0.00186715393]);

 󰇟
 󰇠
> Pe := array(0..N, [infinity, 8.2873889706053,
0.96609795368344, 0.285466183166673,
0.0912067168620717, 0.0138748108690414,
0.0043427829407659, 0]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

> W0 := 0.31963159724; # W0 - обозначение для П0 Wlast := 1.32862761809; # Wlast - обозначение для по-
следнего элемента П. (при N=7, последний элемент бу­дет П7)

 
> #функция для расчета элементов массива w funcW := (PE)->W0*(1+sum(k[i]*(exp(1)^(-PE*te[i-1]) ­exp(1)^(-PE*te[i]))/PE, i=1..teNum));
  󰇧 



󰇛󰇜


󰇛󰇜


󰇨
> W := array(0..N, [W0, seq(funcW(P[ii]), ii=1..N-1), Wlast]);
136
󰇛  󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

> F := 0.054; nu := 0.35; r := 0.001; R := 50;

 
 
 
> #функция для расчета элементов массива U funcU := (Wi, Ai)->evalf(F*2/Pi*Wi*(nu*(1+nu)+(1­nu*(1+nu)*Ai*r)*exp(1)^(-Ai*r)*(ln(R/r) + Ai*r+(Ai*r)^2/4 + (Ai*r)^3/18 + (Ai*r)^4/96)));
>󰇛 󰇜󰇡󰇛  󰇜󰇛  󰇛 
󰇜󰇜󰇛
󰇜
󰇛

󰇜

󰇡
 





󰇢󰇢
> u := array(0..N, [funcU(W0, alpha) , seq(funcU(W[j], a[j]), j=1..N)]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

> #Функция заполнения полей матрицы (не касается по­следней строки матрицы)
matrixFunc := (i, j)->evalf(exp(1)^(-P[i]*T[j-1]) ­exp(1)^(-P[i]*T[j]));
 󰇛 󰇜
󰇛󰇜


󰇛

󰇜
137
> #Процедура построения матрицы, для основного тела
матрицы - вызывается функция описанная выше #Последняя строка матрицы заполняется как (T1, T2-
T1...) buildMatrix := proc(i, j) if (i<N) and (j<=N) then matrixFunc(i, j) elif j=1 then T[j] else T[j]-T[j-1] end if; end proc;
󰇛 
󰇜
 󰇛   󰇟
󰇠
󰇜
󰇟󰇠 󰇟  󰇠 
> #Построение матрицы N на N используя процедуру buildMatrix M := matrix(N, N, buildMatrix);

󰇟






󰇟
 



󰇟
 

󰇟
 󰇠
󰇟
󰇠
󰇟
󰇠
󰇟 󰇠
󰇠

󰇠

󰇠
138
> #Расчет правой части системы линейных уравнений.
C := seq((u[i]/u[0]-1)*P[i], i=1..N-1), u[N]/u[0]-1;
 
 
> #Решение системы. Используется построенную матрицу и последовательность С
res := linalg[linsolve](M, vector([C]));
󰇟 
 󰇠
> #Конвертация полученного решения в array (так как array индексируется от нуля) g := array(0..N+1, [0, seq(res[i], i=1..N), 0]);
 󰇛 󰇟
󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

> funcD := (idx)->u[0]*(1-sum((g[j]-g[j+1])*(idx­T[j])*Heaviside(idx-T[j]), j=0..N));
 
 
󰇭

 

  

󰇛󰇜 
󰇮
139
> plot(funcD(x), x=0..400);
140
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]