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

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

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
Приложение 2
2
а
Программное приложение для определения параметра
> #Блок инициализации констант > N:= 7; #размерность
Z := 8.15;
fsigma := 0.0233542; # значение фикции sigma0
sigma0 := 0.054; # значение sigma0
tsigma := 0.0234583; # конечное значения sigma
Digits := 10; # точность выводимых значе- ний
alpha := 0.069507782;
  
 





> #Блок инициализации параметров P, T, t и a (от 0 до N) # array - используется, так как индексация у этой
структуры может начинаться с нуля (0..N а не 1..N) > t := array(0..N, [0, 0.1, 0.9, 4, 14, 70, 150,
227]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜 󰇛󰇜 󰇛󰇜 󰇛󰇜
   
> P := array(0..N, [infinity, 8.1007826976189,
0.97991767639357, 0.24588582509378,
0.0804781361485954, 0.0086764099896161,
0.0023543136698075, 0]);
121
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

> T := array(0..7, [0, 1.986, 6.306 , 10.413, 24.453,
54.412, 139.067, 227.332]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

> a := array(0..8, [0, 0.243002367, -0.015693306, -
0.017811474, -0.006226422, -0.001965216, -
0.001686047, -0.000545756, 0]);
 󰇛 󰇟
󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

> # задание функции расчета a2 f:=(idx)->(-1/Z)*ln(1­fsigma/sigma0*(1+sum(a[ii]*(1/P[idx]*(exp(1)^(­P[idx]*T[ii-1]) - exp(1)^(-P[idx]*T[ii]))), ii=1..7)));

 
 
󰇛

󰇛󰇜

󰇧



󰇜

󰇛
󰇛


󰇜
> #Вычисление последнего элемента A Alast := (-1/Z)*ln(1-tsigma/sigma0);
󰇜
󰇨
 
122
> #Построение массива А A := array(1..N, [seq(f(i), i=1..N-1), Alast]);
󰇟
󰇠
> #Вычисление С нулевого C0 := A[N]/alpha-1;

> #Построение массива С. С(нулевое) ставится в конец массива получаем (С1..СN-1, С0)
funcC := (idx)->(A[idx]/alpha - 1)*P[idx]; C := seq(funcC(i), i=1..N-1), C0;


 


> #Функция заполнения полей матрицы (не касается по­следней строки матрицы)
matrixFunc := (i, j)->evalf(exp(1)^(-P[i]*t[j-1]) ­exp(1)^(-P[i]*t[j]));
 󰇛 󰇜
󰇛󰇜


󰇛

󰇜
> #Процедура построения матрицы, для основного тела матрицы - вызывается функция описанная выше #Последняя строка матрицы заполняется как (T1, T2-
T1...) buildMatrix := proc(i, j) if (i<N) then matrixFunc(i, j) elif j=1 then t[1] else t[j]-t[j-1] end if; end proc;
123
#Процедура округления маленьких чисел, используя кон­станту epsilon
roundToZero := proc(val) if (abs(val) < epsilon) then 0 else val end if; end proc;
󰇛 
󰇜  󰇛 󰇜󰇟󰇠󰇟󰇠 󰇟  󰇠 
 󰇛󰇜󰇛󰇜
> #Построение матрицы N на N используя процедуру buildMatrix M := matrix(N, N, buildMatrix);



󰇠

󰇟





󰇟




󰇠
󰇟
 

󰇠
󰇟
 󰇠
󰇟
󰇠
󰇟
󰇠
󰇟 󰇠
124
> #Решение системы. Использует построенную матрицу и
последовательность С 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));
 
󰇭

 

  

󰇛󰇜 
> plot(funcD(x), x=0..230);
󰇮
125
Приложение 3
s
E
1
Программное приложение для определения параметра
> #Блок инициализации констант (N, пси, и других) > N := 7; #размерность
Z := 0; Za := 8.15; #Z для расчета массива a[i] sigma := 0.054; # значение sigma0 tsigma := 0.0234583; Digits := 10; #точность выводимых значений alpha := 0.069507782; H := 10; omega := 0.124399;
  
 


 



 
 
> #Блок инициализации параметров 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]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
> P := array(0..N, [infinity, 8.2873889706053,
0.96609795368344, 0.285466183166673,
126
0.0912067168620717, 0.0138748108690414,
0.0043427829407659, 0]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

> Pa := array(0..N, [infinity, 8.1007826976189,
0.97991767639357, 0.24588582509378,
0.0804781361485954, 0.0086764099896161,
0.0023543136698075, 0]);
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

> tnum := 7; #Количество заданных Т элементов (автома- тически подставляется в формулу "сумма от 1 до tnum")
t := array(0..tnum, [0, 0.1, 0.9, 4, 14, 70, 150, 227]);
  󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜 󰇛󰇜 󰇛󰇜 󰇛󰇜
   
> b := array(1..N, [0.231362355, 0.455142243,
0.144900436, -0.042625511, -0.003097535213, -
0.002704241826, -0.000186732]);
 󰇟  
  󰇠
127
> #Формула для вычисления массива a[i]
funcA := (Pai)->alpha*(1+sum(b[i]*(1/Pai*exp(1)^(­Pai*t[i-1]) - 1/Pai*exp(1)^(-Pai*t[i])), i=1..tnum));
 󰇧 



󰇛󰇜


󰇛󰇜


󰇨
> Alast := -1/Za*ln(1-tsigma/sigma); a := array(1..N, [seq(funcA(Pa[j]), j=1..N-1), Alast]);
 
 󰇟
󰇠
> # Блок ввода дополнительных данных (массивов tau и d) для расчета массива w tauNum := 8; #количество элементов в задаваемом мас-
сиве tau (автоматически подставляется в формулу рас­чета суммы)
tau := array(0..tauNum, [0, 20, 41, 103, 131, 162, 223, 345, 360]);

 󰇛 󰇟
󰇛󰇜 󰇛󰇜 󰇛󰇜 󰇛󰇜
   
󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

> dNum := 8; #количество элементов в задаваемом мас- сиве d, должно быть не менее чем tauNum
d := array(0..dNum, [0, 0.053084028, 0.024183742,
0.013227728, 0.008354741, 0.004735283, 0.002700723,
0.001579463, 0]);
 
 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

128
> #функция для расчета элементов массива w
funcW := (Pii)->omega*(1+sum(d[i]*(exp(1)^(­Pii*tau[i-1])/Pii - exp(1)^(-Pii*tau[i])/Pii), i=1..tauNum));
 󰇭 


󰇧
󰇛󰇜
󰇛

󰇜


󰇛󰇜
󰇛


󰇜
󰇨
󰇮
> wLast := 0.516141; w := array(1..N, [seq(funcW(P[ii]), ii=1..N-1), wLast]);

 󰇟
󰇠
> # Так как Pi зарезервированное имя, Pi обозначим как Kappa;
# Задание функции расчета, расчет последнего элемента массива и самого массива
funcKappa := (ww, aa)­>evalf((ww*aa)/(sigma*(exp(1)^(-aa*Z) - exp(1)^(­aa*H)))); kappa0 := evalf((omega*alpha)/(sigma*(exp(1)^(-Z*al­pha) - exp(1)^(-alpha*H)))); kappa := array(0..N, [kappa0, seq(funcKappa(w[i], a[i]), i=1..N)]);
 󰇛 󰇜
󰇡
󰇛󰇛

󰇜

󰇛

󰇜
󰇢
󰇜

 󰇛 󰇟
󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜

󰇛󰇜
 󰇠󰇜
󰇛󰇜

󰇛󰇜

󰇛󰇜

129
> #Функция заполнения полей матрицы (не кaсается по-
следней строки матрицы) matrixFunc := (i, j)->evalf(exp(1)^(-P[i]*T[j-1]) ­exp(1)^(-P[i]*T[j]));
 󰇛 󰇜
󰇛󰇜


󰇛

󰇜
> #Процедура построения матрицы, для основного тела матрицы - вызывается функция описанная выше #Последняя строка матрицы заполняется как (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);

󰇟






󰇟
 



󰇟
 

󰇠

󰇠

󰇠
130
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]