c語言共軛梯度
㈠ matlab有多少api函數
matlab有多少api函數,因為數量很多,而且不同版本的函數數量也或許不一樣,因為會把常用的需求去添加成新的api函數,不完全統計,matlab的api函數不少於420個。
例如,下面列舉其中的一部分較為常用的api函數。
1.
sym函數--定義符號矩陣
2.
syms函數--定義矩陣的又一函數
3.
sym的另一職能--把數值矩陣轉化成相應的符號矩陣
4.
cat函數--創建多維數組
5.
zeros函數--零矩陣的生成
6.
eye函數--單位矩陣的生成
7.
ones函數--生成全1陣
8.
rand函數--生成均勻分布隨機矩陣
9.
randn函數--生成正態分布隨機矩陣
10.
randperm函數--產生隨機序列
11.
linspace函數--線性等分向量的生成
12.
logspace函數--產生對數等分向量
13.
blkdiag函數--產生以輸入元素為對角線元素的矩陣
14.
compan函數--生成友矩陣
15.
hankel函數--生成Hankel方陣
16.
hilb函數--生成Hilbert(希爾伯特)矩陣
17.
invhilb函數--逆Hilbert矩陣生成
18.
pascal函數--生成Pascal矩陣
19.
toeplitz函數--生成托普利茲矩陣
20.
wilkinson函數--生成Wilkinson特徵值測試陣
21.
dot函數--向量的點積
22.
cross函數--向量叉乘
23.
conv函數--矩陣的卷積和多項式乘法
24.
deconv函數--反褶積(解卷)和多項式除法運算
25.
kron函數--張量積
26.
intersect函數--求兩個集合的交集
27.
ismember函數--檢測集合中的元素
28.
setdiff函數--求兩集合的差
29.
setxor函數--求兩個集合交集的非(異或)
30.
union函數--求兩集合的並集
31.
unique函數--取集合的單值元素
32.
expm函數--方陣指數函數
33.
logm函數--求矩陣的對數
34.
funm函數--方陣的函數運算
35.
sqrtm函數--矩陣的方根
36.
polyvalm函數--求矩陣的多項式
37.
det函數--求方陣的行列式
38.
inv函數--求矩陣的逆
39.
pinv函數--求矩陣的偽逆矩陣
40.
trace函數--矩陣的跡
41.
norm函數--求矩陣和向量的范數
42.
cond函數--求矩陣的條件數
43.
condest函數--1-范數的條件數估計
44.
rcond函數--矩陣可逆的條件數估值
45.
condeig函數--特徵值的條件數
46.
rank函數--矩陣的秩
47.
diag函數--矩陣對角線元素的抽取
48.
tril函數--下三角陣的抽取
49.
triu函數--上三角陣的抽取
50.
reshape函數--矩陣變維
51.
rot90函數--矩陣旋轉語法說明
52.
fliplr函數--矩陣的左右翻轉
53.
flipud函數--矩陣的上下翻轉
54.
flipdim函數--按指定維數翻轉矩陣
55.
repmat函數--復制和平鋪矩陣
56.
rat函數--用有理數形式表示矩陣
57.
rem函數--矩陣元素的余數
58.
sym函數--數值矩陣轉化為符號矩陣
59.
factor函數--符號矩陣的因式分解
60.
expand函數--符號矩陣的展開
61.
simple或simplify函數--符號簡化
62.
numel函數--確定矩陣元素個數
63.
chol函數--Cholesky分解
64.
lu函數--LU分解
65.
qr函數--QR分解
66.
qrdelete函數--從QR分解中刪除列
67.
qinsert函數--從QR分解中添加列
68.
schur函數--Schur分解
69.
rsf2csf函數--實Schur向復Schur轉化
70.
eig函數--特徵值分解
71.
svd函數--奇異值分解
72.
gsvd函數--廣義奇異值分解
73.
qz函數--特徵值問題的QZ分解
74.
hess函數--海森伯格形式的分解
75.
null函數--求線性齊次方程組的通解
76.
symmlq函數--線性方程組的LQ解法
77.
bicg函數--雙共軛梯度法解方程組
78.
bicgstab函數--穩定雙共軛梯度方法解方程組
79.
cgs函數--復共軛梯度平方法解方程組
80.
lsqr函數--共軛梯度的LSQR方法
81.
qmres函數--廣義最小殘差法
82.
minres函數--最小殘差法解方程組
83.
pcg函數--預處理共軛梯度方法
84.
qmr函數--准最小殘差法解方程組
85.
cdf2rdf函數--復對角矩陣轉化為實對角矩陣
86.
orth函數--將矩陣正交規范化
87.
sparse函數--創建稀疏矩陣
88.
full函數--將稀疏矩陣轉化為滿矩陣
89.
find函數--稀疏矩陣非零元素的索引
90.
spconvert函數--外部數據轉化為稀疏矩陣
91.
spdiags函數--生成帶狀(對角)稀疏矩陣
92.
speye函數--單位稀疏矩陣
93.
sprand函數--稀疏均勻分布隨機矩陣
94.
sprandn函數--生成稀疏正態分布隨機矩陣
95.
sprandsym函數--稀疏對稱隨機矩陣
96.
nnz函數--返回稀疏矩陣非零元素的個數
97.
nonzeros函數--找到稀疏矩陣的非零元素
98.
nzmax函數--稀疏矩陣非零元素的內存分配
99.
spfun函數--稀疏矩陣的非零元素應用
100.
spy函數--畫稀疏矩陣非零元素的分布圖形
101.
colmmd函數--稀疏矩陣的排序
102.
colperm函數--非零元素的列變換
103.
dmperm函數--Dulmage-Mendelsohn分解
104.
randperm函數--整數的隨機排列
105.
condest函數--稀疏矩陣的1-范數
106.
normest函數--稀疏矩陣的2-范數估計值
107.
luinc函數--稀疏矩陣的分解
108.
eigs函數--稀疏矩陣的特徵值分解
109.
sin和sinh函數--正弦函數與雙曲正弦函數
110.
asin、asinh函數--反正弦函數與反雙曲正弦函數
111.
cos、cosh函數--餘弦函數與雙曲餘弦函數
112.
acos、acosh函數--反餘弦函數與反雙曲餘弦函數
113.
tan和tanh函數--正切函數與雙曲正切函數
114.
atan、atanh函數--反正切函數與反雙曲正切函數
115.
cot、coth函數--餘切函數與雙曲餘切函數
116.
acot、acoth函數--反餘切函數與反雙曲餘切函數
117.
sec、sech函數--正割函數與雙曲正割函數
118.
asec、asech函數--反正割函數與反雙曲正割函數
119.
csc、csch函數--餘割函數與雙曲餘割函數
120.
acsc、acsch函數--反餘割函數與反雙曲餘割函數
121.
atan2函數--四象限的反正切函數
122.
abs函數--數值的絕對值與復數的幅值
123.
exp函數--求以e為底的指數函數
124.
expm函數--求矩陣以e為底的指數函數
125.
log函數--求自然對數
126.
log10函數--求常用對數
127.
sort函數--排序函數
128.
fix函數--向零方向取整
129.
roud函數--朝最近的方向取整
130.
floor函數--朝負無窮大方向取整
131.
rem函數--求余數
132.
ceil函數--朝正無窮大方向取整
133.
real函數--復數的實數部分
134.
imag函數--復數的虛數部分
135.
angle函數--求復數的相角
136.
conj函數--復數的共軛值
137.
complex函數--創建復數
138.
mod函數--求模數
139.
nchoosek函數--二項式系數或所有的組合數
140.
rand函數--生成均勻分布矩陣
141.
randn函數--生成服從正態分布矩陣
142.
interp1函數--一維數據插值函數
143.
interp2函數--二維數據內插值
144.
interp3函數--三維數據插值
145.
interpn函數--n維數據插值
146.
spline函數--三次樣條插值
147.
interpft函數--用快速Fourier演算法作一維插值
148.
spline函數--三次樣條數據插值
149.
table1函數--一維查表函數
150.
table2函數--二維查表
151.
max函數--最大值函數
152.
min函數--求最小值函數
153.
mean函數--平均值計算
154.
median函數--中位數計算
155.
sum函數--求和
156.
prod函數--連乘計算
157.
cumsum函數--累積總和值
158.
cumprod函數--累積連乘
159.
quad函數--一元函數的數值積分
160.
quad8函數--牛頓?康茲法求積分
161.
trapz函數--用梯形法進行數值積分
162.
rat、rats函數--有理數近似求取
163.
dblquad函數--矩形區域二元函數重積分的計算
164.
quad2dggen函數--任意區域上二元函數的數值積分
165.
diff函數--微分函數
166.
int函數--積分函數
167.
roots函數--求多項式的根
168.
poly函數--通過根求原多項式
169.
real函數--還原多項式
170.
dsolve函數--求解常微分方程式
171.
fzero函數--求一元函數的零點
172.
size函數--符號矩陣的維數
173.
compose函數--復合函數運算
174.
colspace函數--返回列空間的基
175.
real函數--求符號復數的實數部分
176.
image函數--求符號復數的虛數部分
177.
symsum函數--符號表達式求和
178.
collect函數--合並同類項
179.
expand函數--符號表達式展開
180.
factor函數--符號因式分解
181.
simplify函數--符號表達式的化簡
182.
numden函數--符號表達式的分子與分母
183.
double函數--將符號矩陣轉化為浮點型數值
184.
solve函數--代數方程的符號解析解
185.
simple函數--求符號表達式的最簡形式
186.
finverse函數--函數的反函數
187.
poly函數--求特徵多項式
188.
poly2sym函數--將多項式系數向量轉化為帶符號變數的多項式
189.
findsym函數--從一符號表達式中或矩陣中找出符號變數
190.
horner函數--嵌套形式的多項式的表達式
191.
limit函數--求極限
192.
diff函數--符號函數導數求解
193.
int函數--符號函數的積分
194.
dsolve函數--常微分方程的符號解
195.
ezplot函數--畫符號函數的圖形
196.
ezplot3函數--三維曲線圖
197.
ezcontour函數--畫符號函數的等高線圖
198.
ezcontourf函數--用不同顏色填充的等高線圖
199.
ezpolar函數--畫極坐標圖形
200.
ezmesh函數--符號函數的三維網格圖
201.
ezmeshc函數--同時畫曲面網格圖與等高線圖
202.
ezsurf函數--三維帶顏色的曲面圖
203.
ezsurfc函數--同時畫出曲面圖與等高線圖
204.
fourier函數--Fourier積分變換
205.
ifourier函數--逆Fourier積分變換
206.
laplace函數--Laplace變換
207.
ilaplace函數--逆Laplace變換
208.
ztrans函數--求z-變換
209.
iztrans函數--逆z-變換
210.
vpa函數--可變精度演算法計算
211.
subs函數--在一符號表達式或矩陣中進行符號替換
212.
taylor函數--符號函數的Taylor級數展開式
213.
jacobian函數--求Jacobian矩陣
214.
jordan函數--Jordan標准形
215.
rsums函數--互動式計算Riemann
216.
latex函數--符號表達式的LaTex的表示式
217.
syms函數--創建多個符號對象的快捷函數
218.
maple函數--調用Maple內核
219.
mfun函數--Maple數學函數的數值計算
220.
mhelp函數--Maple函數幫助
221.
sym2poly函數--將符號多項式轉化為數值多項式
222.
ccode函數--符號表達式的c語言代碼
223.
fortran函數--符號表達式的Fortran語言代碼
224.
binornd函數--二項分布的隨機數據的產生
225.
normrnd函數--正態分布的隨機數據的產生
226.
random函數--通用函數求各分布的隨機數據
227.
pdf函數--通用函數計算概率密度函數值
228.
binopdf函數--二項分布的密度函數
229.
chi2pdf函數--求卡方分布的概率密度函數
230.
ncx2pdf函數--求非中心卡方分布的密度函數
231.
lognpdf函數--對數正態分布
232.
fpdf函數--F分布
233.
ncfpdf函數--求非中心F分布函數
234.
tpdf函數--求T分布
235.
gampdf函數--求Γ分布函數
236.
nbinpdf函數--求負二項分布
237.
exppdf函數--指數分布函數
238.
raylpdf函數--瑞利分布
239.
weibpdf函數--求韋伯分布
240.
normpdf函數--正態分布的概率值
241.
poisspdf函數--泊松分布的概率值
242.
cdf函數--通用函數計算累積概率
243.
binocdf函數--二項分布的累積概率值
244.
normcdf函數--正態分布的累積概率值
245.
icdf函數--計算逆累積分布函數
246.
norminv函數--正態分布逆累積分布函數
247.
sort函數--排序
248.
sortrows函數--按行方式排序
249.
mean函數--計算樣本均值
250.
var函數--求樣本方差
251.
std函數--求標准差
252.
nanstd函數--忽略NaN計算的標准差
253.
geomean函數--計算幾何平均數
254.
mean函數--求算術平均值
255.
nanmean函數--忽略NaN元素計算算術平均值
256.
median函數--計算中位數
257.
nanmedian函數--忽略NaN計算中位數
㈡ 岩質邊坡最危險滑裂面的GA-Sarma 演算法
5.3.1 邊坡危險滑裂面研究概述
邊坡穩定性分析方法中極限平衡法是工程評價和設計中最主要的也是最有效的實用分析方法,並為國家規范所採用。但是極限平衡法的最大困難在於很難找出對應於最小穩定性系數的臨界滑動面(朱大勇,1997)。通常確定邊坡最小穩定性系數包括兩個步驟,首先對邊坡體內某一滑裂面按一定計算方法確定其穩定性系數,然後在所有可能的滑裂面中找出安全系數最小的臨界滑裂面,如果滑裂面曲線為函數y(x),則問題具體化為泛函F=F(y)的極值(陳祖煜,2003)。由於岩土邊坡的幾何形狀各異,材料具有非均質性,純解析的變分原理很難進行極值計算。
近幾十年來,眾多學者開展了基於最優化方法的穩定性系數極值的計算研究,具體的方法包括解析法(如負梯度法、DFP法等)、直接搜索法(枚舉法、單形法、復形法、模式搜索法、共軛梯度法等)、人工智慧方法(模擬退火法、遺傳演算法、神經網路法、蟻群演算法等)。在二維垂直條分法領域,穩定性系數最小的臨界滑動面的搜索問題已經得到了很好的解決,無論是圓弧還是任意狀滑裂面,而進入斜條分法和三維領域,由於自由度的增加,優化演算法面臨著嚴峻的挑戰(陳祖煜等,2005)。總體看來,邊坡穩定性系數極值的優化演算法呈現從解析法、直接搜索法向人工智慧方法過渡的趨勢。
以「岩體結構控制論」的觀點來看,岩質邊坡的穩定性主要受斷層破碎帶、軟弱夾層、岩層層面、節理面等不連續結構面的控制,因此在穩定性計算中應充分考慮這些不連續面的分布情況和力學強度性狀。Sarma法滿足滑體條塊間的力平衡條件,可任意條分,並考慮臨界地震加速度,適用於任意形狀滑面,在岩質邊坡穩定性分析中運用最為廣泛,本書擬以Sarma法為穩定性計算方法,在潛在滑移體的條塊劃分時考慮岩層層面等結構面,滑裂面為折線性形態的基礎上探索岩質邊坡最危險滑裂面優化和最小穩定性系數的計算問題。遺傳演算法(Genetic Algorithms,GA)使用自適應概率尋優,在解決多參數的全局優化中具有更高的效率,因此運用遺傳演算法來解決這一問題,由此提出了岩質邊坡最危險滑裂面全局優化的GA-Sarma演算法。
5.3.2 遺傳演算法理論基礎
遺傳演算法由美國密歇根大學的Holland教授(1975)年在《自然系統與人工系統中的適應性》一書中正式提出其概念和理論框架,此後吸引了眾多的研究者和探索者,相繼發展和深化了該演算法,其中伊利諾大學的Goldberg(1989)以專著形式對遺傳演算法理論及其領域的應用進行了較為全面的分析和例證。遺傳演算法提供了一種求解復雜系統優化問題的通用框架,廣泛應用於組合優化、機器學習、自適應控制、規劃設計、圖像處理和模式識別、人工生命等領域。
遺傳演算法是借鑒生物的自然選擇和遺傳進化機制而開發出來的一種全局優化自適應概率搜索演算法。它使用群體搜索技術,通過對當前群體施加選擇、交叉、變異等一系列遺傳操作,產生新一代的群體,並逐步使群體進化到包含或接近最優解的狀態。它的主要特點是群體搜索策略和群體中個體之間的信息交換,搜索不依賴於梯度信息,它尤其適用於處理傳統搜索方法難於解決的整體極值和非線性問題的求解。
遺傳演算法是在給定初始群體和遺傳操作的前提下,通過迭代實現群體的進化,它包括三個基本操作:選擇、交叉和變異(許國志等,2000)。候選解(目標函數)是模擬生物體的染色體,對待求問題編碼而形成,組成一個固定規模的群體。最初候選解的群體是隨機生成的,每一個染色體代表給定優化問題的一個可能的解,組成染色體的每一個基因代表一個待優化的參數。使用目標函數可計算一個染色體對應的目標函數值(穩定性系數),進而可以確定每一個染色體的適應度(穩定性系數的函數)。染色體通過迭代而進化,每一個迭代步驟中,父代群體中的兩個染色體相互結合(交叉操作)或直接改變父代群體中的某個染色體(變異操作)形成子代群體中染色體。從父代和子代中選擇某些適應度大的染色體而淘汰適應度小的染色體(選擇操作),可以形成新一代的染色體。適應度最大(穩定性系數最小)的染色體,最有可能被選擇並用於產生下一代染色體,這一迭代過程直到尋找到最優解為止(陳祖煜,2003)。遺傳演算法的流程(王小平等,2000)如圖5.3.1所示。
圖5.3.1 遺傳演算法的基本流程
遺傳演算法在邊坡穩定性分析領域已得到運用並備受關注。如肖傳文等(1998)應用遺傳演算法進行Bishop圓弧滑裂面的優化分析,Goh(1999)運用遺傳演算法進行斜條分法臨界滑動模式的搜索,張宏亮等(2003)應用上限解斜條分法和遺傳演算法確定邊坡的最小穩定性系數,陳昌富等(2003)基於水平條分法和遺傳演算法計算水平向成層邊坡在地震作用下的穩定性,何則乾等(2004)利用遺傳模擬退火演算法結合瑞典圓弧法尋找邊坡最危險滑裂面,呂文傑等(2005)用遺傳演算法配合單純形法優化提出邊坡圓弧滑動穩定分析通用演算法。這些研究提出了一些好的思路,並取得了滿意的結果,但演算法或基於圓弧滑動假設,或未能充分考慮岩體結構面的控制,現在仍處於未成熟階段,而且在當前國內外應用較廣泛的一些邊坡穩定分析軟體尚未實現真正意義的全局優化演算法。
5.3.3 Sarma法基本原理
如圖5.3.2所示,將滑體沿任意條分為n個條塊。作用在i第條塊上作用力包括重力Wi,條塊底面的作用力Ni,Ti,以及條塊兩側的作用力Ei、Xi、Ei+1、Xi+1。在第i條塊施加一個體積力KcWi,假定在其作用下,滑體處於極限平衡狀態,其中Kc是臨界加速度系數,邊坡的穩定性系數K是Kc為零時的相應值(Sarma,1979)。根據條塊垂直和水平方向力的平衡,可以得到:
內外動力地質作用與斜坡穩定性
圖5.3.2 Sarma法計算簡圖
內外動力地質作用與斜坡穩定性
根據mohr-coulomb破壞准則,在條塊底面、左側和右側界面上有:
內外動力地質作用與斜坡穩定性
將式(5.3.3)、(5.3.4)、(5.3.5)代入式(5.3.1)、(5.3.2),消去Ti、Xi、Xi+1和Ni,可以得到:
內外動力地質作用與斜坡穩定性
由此循環式,不考慮外荷載作用,即邊界條件E1=En+1=0,可以求得:
內外動力地質作用與斜坡穩定性
式(5.3.7)中
內外動力地質作用與斜坡穩定性
內外動力地質作用與斜坡穩定性
式中:
Ui、PWi為第i條塊底面和側面上的水壓力;cbi、φbi為第i條塊底面上的粘聚力和內摩擦角;csi、φsi、csi+1、φsi+1為第i條塊第i、i+1側面上的粘聚力和內摩擦角;δi、δi+1為第i條塊第i側面和第i+1側面的傾角(以鉛直線為起始線,順時針為正,逆時針為負);αi為第i條塊底面與水平面的夾角;bi為第i條塊底面水平投影長度;di、di+1分別為第i條塊第i側面和第i+1側面的長度。
5.3.4 GA-Sarma演算法原理
GA-Sarma演算法的基本思想是滑裂面為折線形,其擴展方向追蹤順坡向節理面或者其他不連續結構面,潛在滑體以岩層層面等結構面為條分邊界,用Sarma極限平衡法計算穩定性系數,以遺傳演算法優化最危險滑裂面的位置。
5.3.4.1 目標函數的建立
如圖5.3.3所示,當滑裂面由M點向坡頂擴展時的可能的路徑有無數條,在此假設滑裂帶在N點向上擴展時,滑裂路徑的可能方向用γ表示,γ是滑裂路徑與X軸正方向之間的夾角。若坡體內存在順坡向不連續結構面(如節理面、軟弱夾層等),則滑裂面路徑沿不連續結構面擴展。
圖5.3.3 邊坡滑移路徑局部模型示意圖
這樣,根據Sarma演算法有:
內外動力地質作用與斜坡穩定性
確定了γi(i=1,2,…,n)之後,也就確定了滑裂路徑,沿該路徑可計算出穩定性系數。這樣問題就轉化成如何搜索γi使得式(5.3.20)的值最小。將γi視為參數,則參數的數量與折線形滑移面的段數的數量一致,這是一個多變數函數的極值問題。
5.3.4.2遺傳演算法的構造
(1)決策變數、約束條件及目標函數
決策變數就是參數γi的數量,與折線形滑面的段數一致。γi是滑裂路徑的擴展方向,因此其取值范圍為[0,90°]。目標函數就是:
內外動力地質作用與斜坡穩定性
因此,用遺傳演算法求解滑裂面的最小穩定性系數,是要找到一個由所有滑動方向構成的滑移路徑使f(γi)的值最小。
(2)編碼及解碼方法
將函數優化問題的解空間轉換成遺傳演算法的搜索空間的過程稱為編碼(Encoding)二進制編碼方法具有編碼、解碼過程容易操作以及交叉、變異等遺傳運算元便於實現等優點,是遺傳演算法中最常用的一種編碼方法。
因為γi的取值范圍為[0,90°],將每個變數的二進制編碼位數取10位,則γi的取值精度約為0.1°。將分別代表變數γi的二進制編碼串連接在一起,設滑裂面的折線段數為n,則滑裂路徑組成一個共10n位的二進制編碼長串,它代表目標函數優化問題的染色體編碼。
解碼(Decoding)是編碼的逆過程,將編碼所表示的數值從搜索空間轉換到解空間首先將10n位長的二進制編碼串分拆成n個分別表示不同變數的二進制編碼串,然後把它們分別轉換成相應的十進制代碼。
(3)適應度函數
適應度函數(Fitness function)是遺傳演算法進化的指導准則,用來度量個體在優化過程中可能達到或接近於最優解的優良程度。遺傳演算法按照群體中各個個體的適應度大小來確定個體遺傳到下一代的概率,適應度較高的個體比適應度較低的個體遺傳到下一代的概率就相對大一些。
穩定性系數最小的滑裂面是一個求目標函數f(γi)的全局最小值問題,因此,適應度函數F(γi)由f(γi)經以下轉換得到:
內外動力地質作用與斜坡穩定性
這樣F(γi)的物理意義代表著穩定性系數值最小的f(γi)的路徑的適應度最大,在遺傳與變異過程中最有可能被保存下來。
(4)遺傳與變異
選擇(Selection)運算元在遺傳演算法中以個體的適應度評價為基礎來對群體中的各個個體進行優勝劣汰操作。目的是為了保持基因穩定、增強全局收斂能力和計算效率。在採用回放式隨機采樣方式的比例選擇方法中,個體被選中的概率與其適應度大小成正比。設群體的規模大小為M,第i個個體的適應度Fi由式(5.3.22)得到,則個體i被選中的概率Pi為:
內外動力地質作用與斜坡穩定性
交叉(Crossover)運算元在遺傳演算法中起著重要的作用,是產生新個體的主要方法。演算法中採用了如圖5.3.4所示的單點交叉方法。
圖5.3.4 交叉操作
變異(Mutation)運算元相對交叉運算元來說,只是產生新個體的一種輔助方法,但也不可忽視,因為它可以改善遺傳演算法的局部搜索能力,保持群體中個體的多樣性,避免出現早熟現象。為了不破壞太多已有的較好模式,變異概率Pi的值取得較小。變異操作如圖5.3.5 所示:
圖5.3.5 變異操作
(5)保留最優個體的災變策略
在遺傳演算法的運行過程中,由於交叉運算元產生的新遺傳特性不足,群體中所有個體的適應度會出現趁向於相同的現象,使得個體多樣性喪失,遺傳演算法的演化進程陷入僵局。為擺脫這種狀況,多次增大變異概率Pi的值,但效果不明顯。於是引入災變策略(Catas-trophe strategy),模仿殘酷的自然災變現象,對群體進行大規模的消亡和產生新的後代的操作,以達到產生新的優良個體的作用。而在實行災變策略的同時,為了不使已有的最優個體(Elitist)消失,在新的群體生成時保留最優個體至下一代,其他的個體則隨機產生。
5.3.5 實例運用及驗證
如圖5.3.6所示,一個岩質邊坡,高度H=30m,坡腳ε=60°,岩層傾角β=40°。邊坡中隨機分布有不連續結構面。岩體的重度γ=25kN/m3,岩體粘聚力和內摩擦角分別為150kPa、20°;岩層面粘聚力和內摩擦角分別為100kPa、18°;不連續結構面粘聚力和內摩擦角分別為100kPa、10°。以GA-Sarma演算法計算邊坡最危險滑裂面及其穩定性系數。
5.3.5.1 計算過程
Sarma法中的安全系數值K是在Kc=0的條件下的相應值,方程Kmin(式5.3.21)是一個隱式方程,直接編程求解較為困難,因此GA-Sarma演算法用C語言編程並基於Matlab軟體平台實現。在上述算例中,坡體中含順坡向不連續結構面,因此在滑裂面搜索時約束路徑必通過PQ,即在該范圍的路徑編碼中變數γi是事先確定的。計算中選取群體規模M100,運行代數為300。當遺傳演算法在連續30代的運行期間,K值保持不變時,災變程序開始執行。
圖5.3.6 計算實例示意圖
5.3.5.2 計算結果
圖5.3.7中記錄了實行保留最優的災變策略情況下群體中所有路徑對應到K的平均值(藍色點線)和最小值(紅色實線)的變化過程。縱軸代表穩定性系數值,由式(5.3.21)表示的目標函數決定。為清晰起見,圖5.3.7中只表示了運行代數為300的情況,實際的運行代數為1000,期間災變程序執行了16次,K值從15.5下降至1.1996。也就是說,當災變程序執行後,K的平均值的變化劇烈,而最小值的變化則是穩定下降,但變化幅度不明顯。由GA-Sarma法計算的邊坡最小穩定性系數為1.1996,相應的最危險滑裂面如圖5.3.8所示。
圖5.3.7 遺傳演算法迭代過程中穩定系數的變化情況
圖5.3.8 計算所得的最危險滑裂面路徑
5.3.5.3 結果驗證
為了驗證GA-Sarma演算法的可靠性和合理性,用國內外廣泛應用的邊坡穩定性計算商業軟體Slide5.0對算例進行計算。圖5.3.9表示的是以PQ為滑移面的基準位置進行非圓弧滑動搜索計算的結果,其中紅色箭頭表示的是滑移面向左右方向擴展的角度范圍,陰影塊體為最危險滑移體。圖5.3.10表示的是以上述GA-Sarma演算法求取得最危險滑裂面為指定滑移路徑下的計算結果。表5.3.1列舉了GA-Sarma演算法和Slide軟體中其他極限平衡法的穩定性系數值。
圖5.3.9 以PQ為基準線搜索計算結果
圖5.3.10 以GA-Sarma演算法的最優路徑為滑移面的計算結果
表5.3.1 算例穩定性系數不同方法的計算結果對照表
表5.3.1結果表明:GA-Sarma演算法基於折線形的滑裂面優化計算方法所得的滑移路徑更符合岩質邊坡的實際破壞失穩模式,穩定性系數小於其他計算方法的全局搜索方法;而相同滑移路徑下,GA-Sarma演算法由於考慮了層間力作用的平衡,安全系數略小於其他計算方法,但差值很小,則證明了GA-Sarma演算法數學模型的可靠性。
㈢ 邊界元法的應用
前言
數值計算方法及計算機模擬是解決現代工程技術問題的
一個重要手段,在航空、航天、化工、機械、冶金、電力、能源、安全、
儀器儀表、計量測試等各個領域都有著廣泛的應用。特別是近幾
年來計算機硬體和軟體技術的高速發展,為數值計算與模擬研究
開辟了廣闊的應用前景。
常見的數值計算的離散方法主要有有限差分法、有限元法和
邊界元法等。有限差分法是歷史上最早採用的數值方法,這種方
法是用網格線的交點為節點,在每個節點上控制方程中的微分用
差分代替,從而在每個節點形成一個代數方程,求解這些代數方程
就可以獲得所需的數值解。有限差分法的優點是最容易實施,缺
點是數值解穩定性難以保證,並且對復雜區域的適應性較差。有
限元法則是把區域劃分成一系列單元,在每個單元上取數個點作
為節點,然後通過對控制方程積分來獲得離散方程。有限元法的
優點是對不規則區域的適應性好,但計算量較大,需要劃分巨大數
量的單元。這兩種方法的共同缺點是存在解的不穩定性問題。有
限差分法和有限元法的研究和應用已經比較成熟,並且都已有了
商業化的通用軟體。邊界元法是應用格林公式選擇適當的權函數
把空間求解域上的偏微分方程轉換成為其邊界上的積分方程。邊
界元法的最大優點是使求解空間的維數降低了一階,從而大大減
少了計算時間和存儲容量。另外,由於邊界元法不需要對區域內
進行離散,因此溫度的測量點位置就可以任意選擇。更進一步的
是,不像其他數值方法,邊界元法可以直接給出未知表面的溫度和
熱流,而表面的熱流的精確測量要比溫度的測量困難得多。這些
優點極大地提高了邊界元法在實際工程中的應用。
由於邊界元法的研究相對較晚,在國際上還沒有很好的
通用軟體。在國內有關邊界元法解決實際工程問題的論文和論著
都比較少,特別是邊界元法數值計算的實用程序也難得一見。本
書是根據作者多年來在邊界元法和數值傳熱學研究的基礎上完成
的。在書中作者提供了許多邊界元法實際應用的c語言源程序,
包含了許多實用的編程技巧。這些程序都經過Vc++嚴格調試,
每個子程序都是獨立模塊,並且自成一個完整的體系,不需要任何
其他環境,可以獨立運行計算。希望能為使用邊界元法解決實際
工程問題的科技工作者提供有用的參考。
本書的第1章介紹了邊界元法的理論基礎,其中的公式都進
行了嚴格的推導。第2章介紹了邊界元法在穩態導熱問題中的應
用。第3章介紹了邊界元法在非穩態導熱問題中的應用。第4章
介紹了邊界元法在導熱反問題中的應用。第5章給出一些數值計
算中要用到的相關的數值計算方法。
作者十分感謝中國計量學院的崔志尚教授、李希靖教授、袁昌
明教授在科研和學術上的指導和幫助,感謝國防工業出版社江洪
湖編輯的大力支持。由於作者水平有限,書中難免有缺點和錯誤,
敬請讀者批評指正。
吳洪潭
於中國計量學院
目 錄
第l章邊界元法的理論基礎……………………………
1.1邊界元法概述……………………………………
1.2加權餘量法………………………………………
1.3 函數……………………………………………
1.4基本解…………………………………………·
1.5邊界積分方程…………………………………·
l_6格林公式………………………………………·
1.7常單元…………………………………………·
1.8線性單元………………………………………·
1.9 次單元………………………………………·
lI 10角點處理………………………………………·
參考文獻………………………………………………·
第2章邊界元法在穩態導熱問題中的應用…………·
2.1 --維平面穩態導熱問題的邊界元分析………-
2.1.1 混合邊界條件下的邊界積分方程…·
2.1.2混合邊界條件下的邊界離散方程…·
2.1.3 二維平面穩態導熱問題的通用邊界元
C程序…………………………………一
2.2軸對稱穩態導熱問題的邊界元分析…………·
2.2.1邊界積分方程………………………一
2.2.2基本解……………………··
2.2.3邊界元方程及單元插值…一
參考文獻……………………………………一
第3章邊界元法在非穩態導熱問題中的應用
3.1邊界積分方程………………………一
3.2邊界元方程…………………………一
3.3時間步長劃分………………………-.
3.4區域積分項…………………………一
3.5邊界單元的離散……………………··
3.5.1 非對角元素的計算………··
3.5.2 對角元素的計算…………··
3.6 非穩態導熱問題通用邊界元C程序··
3.6.1 域內劃分16個四邊形……··
3.6.2 域內劃分8個三角形……一
3.6.3 域內劃分160個三角形…··
參考文獻………………………………………一
第4章邊界元法在導熱反問題中的應用……
4.1 導熱反問題概述……………………一
4.2 邊界形狀導熱反問題………………
4.3共軛梯度法…………………………
4.4邊界元數值計算……………………
4.5 數值模擬實驗………………………
4.6 導熱反問題的邊界元C程序………
參考文獻………………………………………
第5章相關的數值方法………………………·
5.1 高斯求積公式………………………-
5.2 辛普生求積公式……·
5.3 線性方程組的數值解法
5.4 隨機數的產生………·
參考文獻………………………·
㈣ 各位好漢,誰有數值分析的電子版材料可以提供,在下感激不盡!
數值分析
數值分析是研究「連續數學」(區別於「離散數學」)問題的演算法的學科。這說明了它主要處理實數與復數的問題,求實數與復數的領域的數值線性代數,解微分方程,以及處理其他與物理學和工程學有關的問題。
簡要介紹
一些連續數學中的問題可以通過一種演算法而得到准確的結果。這些演算法稱為直接方法。比如解決線性方程系統的高斯消元法,和線性規劃中的單純形法。
盡管如此,並非所有的問題都存在直接方法。我們可能需要將連續問題轉換為一個離散的問題。這個過程叫做離散化。另一個可行的方法是使用迭代。這種方法來自於猜測和尋找一個接近於要求解的近似值的方法。即使當直接方法不存在時,迭代法也可能是更可取的方法,因為它效率高。
誤差的產生與傳播
由此得出結論,誤差的研究是構成數值分析的重要的組成部分。誤差產生於迭代方法,因為近似值不同於真實值。同樣由於離散問題的解不能等同於連續問題的解,離散方法也存在著離散誤差的問題。即使使用了直接方法,但由於使用了浮點數,誤差也是不可避免的。
當一個誤差產生時,它會通過計算過程傳播。這就產生了數值穩定性的概念:當產生的誤差,不會在計算過程中產生過大的增長,就稱這個演算法是數值穩定的。這種情況只有當問題具備很好的條件時才有可能。也就是說,當問題的已知條件改變微小的值,結果只產生微小的變化。的確,如果問題的條件不好,那麼所有的誤差都會劇烈增長。
應用
通常,數值分析的演算法應用於計算一些科學和工程設計問題。比如:橋梁和飛機的結構設計(可以參考計算物理學和計算流體動力學),天氣預報,氣候模擬,分子分析與設計(計算化學),尋找石油儲藏。事實上,所有的超級計算機都在連續不斷地運用著數值分析演算法。
總之,效率發揮著重要的作用,並且啟發式的方法比一個具有堅實理論基礎的方法更重要,因為它的更有效。一般來說,數值分析使用經驗的估計值去尋找新的方法和分析問題的目的,即使它也使用數學公理,定理和證明。
軟體
現在,所有的演算法都已經在計算機中實現,運行。Netlib知識庫中收藏著豐富的數值問題的程序,它們大多是用Fortran和C語言編寫的。(http://www.answers.com/main/ntquery?method=4&dsid=2222&dekey=Netlib&gwp=8&curtab=2222_1)商用的產品實現了很多不同的數值演算法包括IMSL和NAG方法庫;還有另一個免費的選擇是GNU的科學函數庫。另一種有特別吸引力的獲得途徑是Numerical Ricipes庫,它重點放在演算法的詳細的理解之上。
有許多執行了數值計算的計算機程序,它們有:
· MATLAB:(一種用於數學計算的程序,特別是線性代數的計算),它是一個被廣泛使用的執行數值計算的程序。它與它特有的程序語言同時產生,這種語言可用於實現數值計算。
· GUN Octave:它是一個免費的近似Matlab的程序。
· R編程語言:一個被廣泛使用的擅長於數據操作和統計的系統。有幾百個專用包可免費下載可到。
· Scilib。
· IDL 編程語言。
研究領域
根據解決的問題不同,數值分析領域可被分為不同的學科。
★函數的值
其中一個最簡單的問題是,給定一點的函數估計。但是,即使估計一個多項式也不是直接得到的:Homer計劃經常比明顯的方法更有效。一般而言,評估和控制浮點運算產生的舍入誤差是很重要的。
★內插,外插和回歸
內插方法可解決下列問題:為一些點給出未知的函數值,或在所給的點之間的其它點的函數值。一個非常簡單的方法是使用線性內插方法,它是假設未知函數在每兩個點之間都是線性的。這可以一般化為多項式內插法,這種方法有時更加精確但是會有龍格現象(Runge phenomenon)。其他的插值方法使用定位函數,如:樣條或微波。
除了我們先尋找已知點范圍之外的函數值外,外插法與內插法很相似。
回歸也很類似,但是它考慮到那些數據是不精確。我們想根據給出的一些點和這些點的一些函數值(有誤差),決定未知的函數。實現它最流行的方法是最小方差(least squares)。
★解方程組
另一個重要的問題是求給定方程組的解。有兩個情況是非常重要的,那就是方程是線性的還是非線性的。
在解線性方程組的方法的改進上,我們已經做了很多的努力。標準的方法有「高斯-約旦消元法」和「LU-分解法」。迭代法比如「共軛梯度法」通常比較適合於大型系統。
根查找演算法用於解決非線性方程組(如此命名的原因是有個函數的根是該函數為此輸出零的一個條件)。如果該函數是可微的並且導數是可知的,那麼牛頓(插值)法個合適的選擇。線性化是解非線性問題的另一種技術。
★最優化
主要文章:優選法(數學)
(http://www.answers.com/main/ntquery?method=4&dsid=2222&dekey=Optimization+%28mathematics%29&gwp=8&curtab=2222_1)
最優化問題需要尋找所給的函數的最大或最小值的點。經常,這個點必須滿足一些約束調條件。
根據目標函數和約束限制的形式,最優化領域可進一步分為幾個子域。舉個例子,線性規劃處理目標函數和約束條件都是線性的情況。在線性規劃中的一個著名的方法就是「單純形法」。
拉格朗日乘子可用於將約束的最優問題簡化為無約束的最優問題。
★積分評測
主要文章:數值積分
(http://www.answers.com/main/ntquery?method=4&dsid=2222&dekey=Numerical+integration&gwp=8&curtab=2222_)
數值積分,也叫數值積分法,用於求解定積分。流行的方法是使用「牛頓-科特」公式(比如中點法則或梯形法則),或者高斯求積法。盡管如此,當積分定義的維數很大時,這種方法會付出高昂的代價。在這種情況下,可能要使用「蒙特卡羅法」(統計試驗法),或者當定義域(維數)適當大時,使用稀疏柵格法。
★微分方程
主要文章:數值常微分方程組,數值偏微分方程組
不管是解常微分方程還是解偏微分方程,數值分析都同樣關心解計算的逼近方法。
偏微分方程是把問題離散化成有限維的子空間來求解。這種方法可以通過一個「有限元法」, 或者一個「有限差分法」,或者(特別是在工程技術中)一個「有限容積法」來完成。這些方法的理論依據經常牽涉到一些泛函分析的理論。這可把問題簡化為代數方程的求解。
歷史
數值分析領域的研究比現代計算機的發明早了許多世紀。事實上,過去的許多數學家就投入數值分析的研究當中,很明顯從現在的一些重要的演算法的名稱就可以看出,比如:「牛頓插值」,「拉格朗日插值多項式」,「高斯消元」,或著「歐拉方法」。
為了方便手算,出版了許多的書,書中包含有很多的公式和很多數據表如插值點和一些函數的系數。這些表格中的數據經常要保留16為小數,有些函數則計算出了更多位的小數。使用者可以利用這些表中的數據,代到給定的公式並非常好地完成許多函數的數值估計。為了規范該領域的工作, Abramovitz和Stegun編輯NIST出版物。這是一本1000多頁的書,書中包含了大量常用的公式和函數以及它們的許多點的值。當計算機可以用時,這些函數的值不再非常的重要。但是那些大量的公式的列表依然很方便。
機械計算器也是為手動計算而創造出的工具。在20世紀40年代時,這些計算器發展到了電子計算機。而且發現這些計算機對於管理目的也非常有用。但是,計算機的發明同樣影響了數值分析的領域,因為現在能夠實現更大更、復雜的計算器了。
㈤ 優化方法的章節目錄
緒論1
§1.1優化方法的研究進展2
§1.2優化問題實例3
§1.3主要內容與特色11 優化問題數學模型及幾何解釋14
§2.1優化問題的數學模型14
§2.1.1一般形式14
§2.1.2設計變數的選取原則14
§2.1.3優化問題的分類15
§2.2優化問題的幾何解釋16
§2.3優化問題的基本解法17
§2.4小結20 優化方法的數學基礎21
§3.1多元函數的方向導數和梯度21
§3.2函數的凸性條件、凸規劃、二次規劃等23
§3.2.1凸集24
§3.2.2凸函數25
§3.2.3函數的凸性條件25
§3.2.4凸規劃26
§3.2.5矩陣形式的二次函數26
§3.3多元函數的泰勒展開27
§3.4無約束優化問題的極值條件28
§3.5等式約束優化問題的求解方法29
§3.6一般約束優化問題的極值條件31
§3.6.1給定區間上一元函數的極值條件32
§3.6.2卡羅需庫恩塔克條件32
§3.6.3KKT條件的幾何意義33
§3.6.4KKT條件的應用方法35
§3.7小結39
第四章:一維優化方法40
§4.1確定極值點所在區間的進退法40
§4.2一維盲人探路優化方法42
§4.3區間消去類優化方法45
§4.3.1黃金分割法基本原理46
§4.3.2黃金分割法迭代過程和程序流程圖46
§4.3.3斐波納契數法48
§4.3.4平分法48
§4.4插值類優化方法49
§4.4.1一維牛頓法49
§4.4.2二次插值法51
§4.5C語言程序調試的要點55
§4.5.1Turbo C 2.0軟體的安裝與程序調試55
§4.5.2計算程序的設計步驟56
§4.5.3數據類型、運算符與表達式57
§4.5.4數據的輸入/輸出和文件操作59
§4.5.5C語言程序的基本結構61
§4.5.6本書編程任務及實例62
§4.6小結65
第五章:多維無約束優化方法66
§5.1最速下降法67
§5.2多維牛頓型方法70
§5.3共軛方向法75
§5.3.1共軛方向75
§5.3.2共軛方向的性質75
§5.3.3共軛方向法76
§5.4共軛梯度法77
§5.5變尺度法80
§5.5.1尺度矩陣的概念80
§5.5.2變尺度矩陣81
§5.5.3變尺度演算法82
§5.6坐標輪換法84
§5.7基本鮑威爾法86
§5.7.1共軛方向的構成86
§5.7.2基本演算法86
§5.8改進鮑威爾法88
§5.9單形替換法93
§5.10小結97
第六章:多維約束優化方法98
§6.1隨機方向法99
§6.2復合形法101
§6.3可行方向法107
§6.3.1可行方向的產生方法107
§6.3.2尋優策略109
§6.3.3演算法步驟110
§6.4懲罰函數法113
§6.4.1內點懲罰函數法114
§6.4.2外點懲罰函數法117
§6.4.3混合懲罰函數法119
§6.5網格法121
§6.6線性逼近法123
§6.7廣義簡約梯度法126
§6.7.1簡約梯度法126
§6.7.2廣義法126
§6.7.3不等式約束函數的處理及換基問題128
§6.8二次規劃法128
§6.9結構設計的優化准則法130
§6.10小結133
第七章:線性規劃及單純形法134
§7.1線性規劃問題134
§7.1.1線性規劃的標准形式134
§7.1.2線性規劃的幾何意義135
§7.1.3線性規劃的基本術語136
§7.1.4基本性質及基本運算137
§7.2單純形法141
§7.3演算法改進142
§7.4小結145
第八章:多目標及離散變數優化方法146
§8.1多目標優化問題146
§8.2多目標優化方法147
§8.2.1主要目標法148
§8.2.2線性加權組合法148
§8.2.3極大極小法149
§8.2.4理想點法與平方和加權法149
§8.2.5分目標乘除法150
§8.2.6功效系數法150
§8.2.7協調曲線法152
§8.2.8分層序列法153
§8.3離散變數優化方法153
§8.3.1整型化離散法154
§8.3.2交替查點法154
§8.3.3分支定界法155
§8.3.4其他離散優化方法157
第九章:現代優化方法簡介158
§9.1遺傳演算法158
§9.2蟻群演算法159
§9.3模擬退火演算法160
§9.4神經網路演算法161
§9.5專家系統演算法162
§9.6基於知識的廣義優化演算法163
附錄: 主要程序164
附錄Ⅰ確定極值點所在區間的進退法子程序164
附錄Ⅱ黃金分割法子程序165
附錄Ⅲ一維盲人探路優化方法子程序166
附錄Ⅳ二次插值法子程序167
附錄Ⅴ負梯度法子程序168
附錄Ⅵ改進的POWELL法子程序172
附錄Ⅶ隨機方向法子程序175
附錄Ⅷ復合形法子程序180
附錄Ⅸ外點懲罰函數法子程序183
附錄Ⅹ內點懲罰函數法子程序184
㈥ IT面試經驗:C/C++程序員需要掌握哪些知識
概括來說,開發中常用到的功能:串口通信、網口通信、資料庫訪問、數據加解密處理等等。這些方面的知識都要掌握的,細說的話主要有以下幾個方面:
一、語言相關
1、基礎(Basic)
(1)變數與基本類型:語言內置類型、常量、變數的初始化、變數的作用域、變數的 限定符、變數引用、枚舉; (2)typedef 和#define;
(3)數值與指針:數組定義與初始化、多維數值、指針操作;
(4)表達式:算術/邏輯計算、位運算、優先順序、類型轉換;
(5)語句:簡單語句、聲明/定義語句、復合語句、條件/循環控制語句、異常處理語 句;
(6)函數:函數聲明、參數傳遞、堆棧概念、函數重載;
(7)標准IO:條件狀態、緩沖區、文件流、字元流、本地化;
(8)類和數據抽象:類的定義與聲明、類的構造函數、靜態成員、拷貝構造函數、操 作符重載、類型轉換;
(9)面向對象編程:數據(封裝)抽象、繼承、多態(動態綁定);
2、進階(Advance)
(1)模板與泛型編程:模板定義、實例化、類模板成員、重載、特化; (2)智能指針:auto_ptr、shared_ptr、scoped_ptr;
(3)STL容器:順序容器(vector、list、deque、queue、priority_queue、string)和關 聯容器(map、set、multimap、multiset); (4)STL演算法:迭代器、演算法; (5)常用復雜數據結構:hash_map、boost.any、boost. array、boost. regex、boost. variant、 boost. multi_array、boost. pointer_container;
3、高級(Expert)
(1)高級泛型編程:表達式模板、模板元編程、Concept編程;
(2)程序架構,內存池,線程池;
(3)高級抽象:boost.mpl、boost.lambda、boost.fusion、boost.proto;
(4)範式應用:boost.spirit;
(5)應用程序庫:boost.asio 、boost.graph、blitz++、Loki、CGAL、uBLAS;
二、系統相關
1、基礎(Basic)
(1)Windows API之基礎服務:文件系統、注冊表、內存管理、DLL、多媒體;
(2)Windows API之內核對象:句柄、信號、線程、進程、互斥、事件、文件映射、 命名管道、郵槽、計時器、完成埠;
(3)Windows API之圖形設備介面:設備上下文、列印、字體、筆/刷、路徑、區域、 點陣圖;
(4)Windows API之圖形用戶界面:窗口、標題、菜單、狀態欄、消息、圖標、按鈕、 編輯框、組合框、列表框、滾動條、通用對話框;
(5)環境配置及Shell編程:環境變數、右鍵菜單、屬性、關聯; (6)Socket編程; (7)Web相關API; 2、進階(Advance)
(1)MFC/ATL:文檔視圖結構、對話框、通用控制項、OleDB、WinInet; (2)COM、自動化、ActiveX:Office開發、IE插件、VBA; (3)高級圖形系統:OpenGL、DirectX; (4)二次開發:ObjectArx;
三、計算相關
1、計算機圖形學
(1)向量:點積、叉積、求模、單位化、復合運算;(basic)
(2)矩陣:算術運算、平移/旋轉/縮放/錯切等變換、求逆、特徵值;(basic) (3)四元組合歐拉角:與其他表示轉換;(advance) (4)參數曲線/曲面:貝塞爾、(非)均勻有理樣條;(advance) (5)三維幾何體的構造與描述;(expert) 2、計算幾何
(1)幾何查找與判斷:點與線、線與線、點與多邊形;(basic) (2)多邊形:簡單多邊形、凸多邊形、多邊形三角剖分;(advance) (3)凸殼及其應用;(advance) (4)Voronoi圖/三角剖分及其應用;(advance) (5)多邊形的交與並;(expert) (6)平面圖;(expert) 3、數值計算
(1)數值計算的三大任務:求值、解方程(組)、函數逼近;(basic) (2)數值計算的誤差、適定性、穩定性;(basic)
(3)解線性方程組直接方法:Gauss消元法、三角分解法;(basic)
(4)解線性方程組一般迭代方法:基本迭代、Jacobi迭代、G-S迭代、SOR/SSOR迭代; (advance)
(5)解線性方程組的變分迭代法:共軛梯度、預處理共軛梯度法;(expert) (6)解非線性方程組迭代方法:Newton迭代法、Newton-Raphson迭代法、同倫演算法; (expert)
(7)求解矩陣特徵值:乘冪法與反乘冪法、Rayleigh商迭代法、QR法、Krylov子空間 法;(expert)
(8)插值:多項式插值、樣條插值;(advance) (9)數值積分:Simpson公式、Gauss積分;(basic) (10)解常微分方程:歐拉法、Runge-Kutta法;(advance) (11)解橢圓方程:有限單元法、有限差分法、邊界元法;(expert)
希望可以幫到您,謝謝!
㈦ 並行共軛梯度演算法實現C語言代碼---共享式(openMP)、GPU
你好,很高興為你解答。
參考如下:http://www.cnki.com.cn/Article/CJFD1998-NJHK805.007.htm
答題不易,相互理解,相互幫助
如有其他問題,可以繼續追問哦
㈧ 如何直觀地理解「共軛」這個概念
如下:
共軛在數學、物理、化學、地理等學科中都有出現。 本意:兩頭牛背上的架子稱為軛,軛使兩頭牛同步行走。共軛即為按一定的規律相配的一對。通俗點說就是孿生。在數學中有共軛復數、共軛根式、共軛雙曲線、共軛矩陣等。
共軛方向法:
以一組共軛方向作為搜索方向來求解無約束非線性規劃問題的一類下降演算法。是在研究尋求具有對稱正定矩陣Q的n元二次函數:
f(x)=1/2xQ x+bx+c。
最優解的基礎上提出的一類梯度型演算法,包含共軛梯度法和變尺度法。根據共軛方向的性質,依次沿著對Q共軛的一組方向作一維搜索,則可保證在至多n步內獲得二次函數的極小點。
共軛方向法在處理非二次目標函數時也相當有效,具有超線性的收斂速度,在一定程度上克服了最速下降法的鋸齒形現象,同時又避免了牛頓法所涉及的海色(Hesse) 矩陣的計算和求逆問題。
對於非二次函數,n步搜索並不能獲得極小點,需採用重開始策略,即在每進行n次一維搜索之後,若還未獲得極小點,則以負梯度方向作為初始方向重新構造共軛方向,繼續搜索。
㈨ 安徽省銅陵市有幾個縣
五大縣 八大州
㈩ C語言演算法速查手冊的目錄
第1章緒論1
1.1程序設計語言概述1
1.1.1機器語言1
1.1.2匯編語言2
1.1.3高級語言2
1.1.4C語言3
1.2C語言的優點和缺點4
1.2.1C語言的優點4
1.2.2C語言的缺點6
1.3演算法概述7
1.3.1演算法的基本特徵7
1.3.2演算法的復雜度8
1.3.3演算法的准確性10
1.3.4演算法的穩定性14
第2章復數運算18
2.1復數的四則運算18
2.1.1[演算法1]復數乘法18
2.1.2[演算法2]復數除法20
2.1.3【實例5】 復數的四則運算22
2.2復數的常用函數運算23
2.2.1[演算法3]復數的乘冪23
2.2.2[演算法4]復數的n次方根25
2.2.3[演算法5]復數指數27
2.2.4[演算法6]復數對數29
2.2.5[演算法7]復數正弦30
2.2.6[演算法8]復數餘弦32
2.2.7【實例6】 復數的函數運算34
第3章多項式計算37
3.1多項式的表示方法37
3.1.1系數表示法37
3.1.2點表示法38
3.1.3[演算法9]系數表示轉化為點表示38
3.1.4[演算法10]點表示轉化為系數表示42
3.1.5【實例7】系數表示法與點表示法的轉化46
3.2多項式運算47
3.2.1[演算法11]復系數多項式相乘47
3.2.2[演算法12]實系數多項式相乘50
3.2.3[演算法13]復系數多項式相除52
3.2.4[演算法14]實系數多項式相除54
3.2.5【實例8】復系數多項式的乘除法56
3.2.6【實例9】實系數多項式的乘除法57
3.3多項式的求值59
3.3.1[演算法15]一元多項式求值59
3.3.2[演算法16]一元多項式多組求值60
3.3.3[演算法17]二元多項式求值63
3.3.4【實例10】一元多項式求值65
3.3.5【實例11】二元多項式求值66
第4章矩陣計算68
4.1矩陣相乘68
4.1.1[演算法18]實矩陣相乘68
4.1.2[演算法19]復矩陣相乘70
4.1.3【實例12】 實矩陣與復矩陣的乘法72
4.2矩陣的秩與行列式值73
4.2.1[演算法20]求矩陣的秩73
4.2.2[演算法21]求一般矩陣的行列式值76
4.2.3[演算法22]求對稱正定矩陣的行列式值80
4.2.4【實例13】 求矩陣的秩和行列式值82
4.3矩陣求逆84
4.3.1[演算法23]求一般復矩陣的逆84
4.3.2[演算法24]求對稱正定矩陣的逆90
4.3.3[演算法25]求托貝里斯矩陣逆的Trench方法92
4.3.4【實例14】 驗證矩陣求逆演算法97
4.3.5【實例15】 驗證T矩陣求逆演算法99
4.4矩陣分解與相似變換102
4.4.1[演算法26]實對稱矩陣的LDL分解102
4.4.2[演算法27]對稱正定實矩陣的Cholesky分解104
4.4.3[演算法28]一般實矩陣的全選主元LU分解107
4.4.4[演算法29]一般實矩陣的QR分解112
4.4.5[演算法30]對稱實矩陣相似變換為對稱三對角陣116
4.4.6[演算法31]一般實矩陣相似變換為上Hessen-Burg矩陣121
4.4.7【實例16】 對一般實矩陣進行QR分解126
4.4.8【實例17】 對稱矩陣的相似變換127
4.4.9【實例18】 一般實矩陣相似變換129
4.5矩陣特徵值的計算130
4.5.1[演算法32]求上Hessen-Burg矩陣全部特徵值的QR方法130
4.5.2[演算法33]求對稱三對角陣的全部特徵值137
4.5.3[演算法34]求對稱矩陣特徵值的雅可比法143
4.5.4[演算法35]求對稱矩陣特徵值的雅可比過關法147
4.5.5【實例19】 求上Hessen-Burg矩陣特徵值151
4.5.6【實例20】 分別用兩種雅克比法求對稱矩陣特徵值152
第5章線性代數方程組的求解154
5.1高斯消去法154
5.1.1[演算法36]求解復系數方程組的全選主元高斯消去法155
5.1.2[演算法37]求解實系數方程組的全選主元高斯消去法160
5.1.3[演算法38]求解復系數方程組的全選主元高斯-約當消去法163
5.1.4[演算法39]求解實系數方程組的全選主元高斯-約當消去法168
5.1.5[演算法40]求解大型稀疏系數矩陣方程組的高斯-約當消去法171
5.1.6[演算法41]求解三對角線方程組的追趕法174
5.1.7[演算法42]求解帶型方程組的方法176
5.1.8【實例21】 解線性實系數方程組179
5.1.9【實例22】 解線性復系數方程組180
5.1.10【實例23】 解三對角線方程組182
5.2矩陣分解法184
5.2.1[演算法43]求解對稱方程組的LDL分解法184
5.2.2[演算法44]求解對稱正定方程組的Cholesky分解法186
5.2.3[演算法45]求解線性最小二乘問題的QR分解法188
5.2.4【實例24】 求解對稱正定方程組191
5.2.5【實例25】 求解線性最小二乘問題192
5.3迭代方法193
5.3.1[演算法46]病態方程組的求解193
5.3.2[演算法47]雅克比迭代法197
5.3.3[演算法48]高斯-塞德爾迭代法200
5.3.4[演算法49]超鬆弛方法203
5.3.5[演算法50]求解對稱正定方程組的共軛梯度方法205
5.3.6[演算法51]求解托貝里斯方程組的列文遜方法209
5.3.7【實例26】 解病態方程組214
5.3.8【實例27】 用迭代法解方程組215
5.3.9【實例28】 求解托貝里斯方程組217
第6章非線性方程與方程組的求解219
6.1非線性方程求根的基本過程219
6.1.1確定非線性方程實根的初始近似值或根的所在區間219
6.1.2求非線性方程根的精確解221
6.2求非線性方程一個實根的方法221
6.2.1[演算法52]對分法221
6.2.2[演算法53]牛頓法223
6.2.3[演算法54]插值法226
6.2.4[演算法55]埃特金迭代法229
6.2.5【實例29】 用對分法求非線性方程組的實根232
6.2.6【實例30】 用牛頓法求非線性方程組的實根233
6.2.7【實例31】 用插值法求非線性方程組的實根235
6.2.8【實例32】 用埃特金迭代法求非線性方程組的實根237
6.3求實系數多項式方程全部根的方法238
6.3.1[演算法56]QR方法238
6.3.2【實例33】用QR方法求解多項式的全部根240
6.4求非線性方程組一組實根的方法241
6.4.1[演算法57]梯度法241
6.4.2[演算法58]擬牛頓法244
6.4.3【實例34】 用梯度法計算非線性方程組的一組實根250
6.4.4【實例35】 用擬牛頓法計算非線性方程組的一組實根252
第7章代數插值法254
7.1拉格朗日插值法254
7.1.1[演算法59]線性插值255
7.1.2[演算法60]二次拋物線插值256
7.1.3[演算法61]全區間插值259
7.1.4【實例36】 拉格朗日插值262
7.2埃爾米特插值263
7.2.1[演算法62]埃爾米特不等距插值263
7.2.2[演算法63]埃爾米特等距插值267
7.2.3【實例37】 埃爾米特插值法270
7.3埃特金逐步插值271
7.3.1[演算法64]埃特金不等距插值272
7.3.2[演算法65]埃特金等距插值275
7.3.3【實例38】 埃特金插值278
7.4光滑插值279
7.4.1[演算法66]光滑不等距插值279
7.4.2[演算法67]光滑等距插值283
7.4.3【實例39】 光滑插值286
7.5三次樣條插值287
7.5.1[演算法68]第一類邊界條件的三次樣條函數插值287
7.5.2[演算法69]第二類邊界條件的三次樣條函數插值292
7.5.3[演算法70]第三類邊界條件的三次樣條函數插值296
7.5.4【實例40】 樣條插值法301
7.6連分式插值303
7.6.1[演算法71]連分式插值304
7.6.2【實例41】 驗證連分式插值的函數308
第8章數值積分法309
8.1變步長求積法310
8.1.1[演算法72]變步長梯形求積法310
8.1.2[演算法73]自適應梯形求積法313
8.1.3[演算法74]變步長辛卜生求積法316
8.1.4[演算法75]變步長辛卜生二重積分方法318
8.1.5[演算法76]龍貝格積分322
8.1.6【實例42】 變步長積分法進行一重積分325
8.1.7【實例43】 變步長辛卜生積分法進行二重積分326
8.2高斯求積法328
8.2.1[演算法77]勒讓德-高斯求積法328
8.2.2[演算法78]切比雪夫求積法331
8.2.3[演算法79]拉蓋爾-高斯求積法334
8.2.4[演算法80]埃爾米特-高斯求積法336
8.2.5[演算法81]自適應高斯求積方法337
8.2.6【實例44】 有限區間高斯求積法342
8.2.7【實例45】 半無限區間內高斯求積法343
8.2.8【實例46】 無限區間內高斯求積法345
8.3連分式法346
8.3.1[演算法82]計算一重積分的連分式方法346
8.3.2[演算法83]計算二重積分的連分式方法350
8.3.3【實例47】 連分式法進行一重積分354
8.3.4【實例48】 連分式法進行二重積分355
8.4蒙特卡洛法356
8.4.1[演算法84]蒙特卡洛法進行一重積分356
8.4.2[演算法85]蒙特卡洛法進行二重積分358
8.4.3【實例49】 一重積分的蒙特卡洛法360
8.4.4【實例50】 二重積分的蒙特卡洛法361
第9章常微分方程(組)初值問題的求解363
9.1歐拉方法364
9.1.1[演算法86]定步長歐拉方法364
9.1.2[演算法87]變步長歐拉方法366
9.1.3[演算法88]改進的歐拉方法370
9.1.4【實例51】 歐拉方法求常微分方程數值解372
9.2龍格-庫塔方法376
9.2.1[演算法89]定步長龍格-庫塔方法376
9.2.2[演算法90]變步長龍格-庫塔方法379
9.2.3[演算法91]變步長基爾方法383
9.2.4【實例52】 龍格-庫塔方法求常微分方程的初值問題386
9.3線性多步法390
9.3.1[演算法92]阿當姆斯預報校正法390
9.3.2[演算法93]哈明方法394
9.3.3[演算法94]全區間積分的雙邊法399
9.3.4【實例53】 線性多步法求常微分方程組初值問題401
第10章擬合與逼近405
10.1一元多項式擬合405
10.1.1[演算法95]最小二乘擬合405
10.1.2[演算法96]最佳一致逼近的里米茲方法412
10.1.3【實例54】 一元多項式擬合417
10.2矩形區域曲面擬合419
10.2.1[演算法97]矩形區域最小二乘曲面擬合419
10.2.2【實例55】 二元多項式擬合428
第11章特殊函數430
11.1連分式級數和指數積分430
11.1.1[演算法98]連分式級數求值430
11.1.2[演算法99]指數積分433
11.1.3【實例56】 連分式級數求值436
11.1.4【實例57】 指數積分求值438
11.2伽馬函數439
11.2.1[演算法100]伽馬函數439
11.2.2[演算法101]貝塔函數441
11.2.3[演算法102]階乘442
11.2.4【實例58】伽馬函數和貝塔函數求值443
11.2.5【實例59】階乘求值444
11.3不完全伽馬函數445
11.3.1[演算法103]不完全伽馬函數445
11.3.2[演算法104]誤差函數448
11.3.3[演算法105]卡方分布函數450
11.3.4【實例60】不完全伽馬函數求值451
11.3.5【實例61】誤差函數求值452
11.3.6【實例62】卡方分布函數求值453
11.4不完全貝塔函數454
11.4.1[演算法106]不完全貝塔函數454
11.4.2[演算法107]學生分布函數457
11.4.3[演算法108]累積二項式分布函數458
11.4.4【實例63】不完全貝塔函數求值459
11.5貝塞爾函數461
11.5.1[演算法109]第一類整數階貝塞爾函數461
11.5.2[演算法110]第二類整數階貝塞爾函數466
11.5.3[演算法111]變型第一類整數階貝塞爾函數469
11.5.4[演算法112]變型第二類整數階貝塞爾函數473
11.5.5【實例64】貝塞爾函數求值476
11.5.6【實例65】變型貝塞爾函數求值477
11.6Carlson橢圓積分479
11.6.1[演算法113]第一類橢圓積分479
11.6.2[演算法114]第一類橢圓積分的退化形式481
11.6.3[演算法115]第二類橢圓積分483
11.6.4[演算法116]第三類橢圓積分486
11.6.5【實例66】第一類勒讓德橢圓函數積分求值490
11.6.6【實例67】第二類勒讓德橢圓函數積分求值492
第12章極值問題494
12.1一維極值求解方法494
12.1.1[演算法117]確定極小值點所在的區間494
12.1.2[演算法118]一維黃金分割搜索499
12.1.3[演算法119]一維Brent方法502
12.1.4[演算法120]使用一階導數的Brent方法506
12.1.5【實例68】使用黃金分割搜索法求極值511
12.1.6【實例69】使用Brent法求極值513
12.1.7【實例70】使用帶導數的Brent法求極值515
12.2多元函數求極值517
12.2.1[演算法121]不需要導數的一維搜索517
12.2.2[演算法122]需要導數的一維搜索519
12.2.3[演算法123]Powell方法522
12.2.4[演算法124]共軛梯度法525
12.2.5[演算法125]准牛頓法531
12.2.6【實例71】驗證不使用導數的一維搜索536
12.2.7【實例72】用Powell演算法求極值537
12.2.8【實例73】用共軛梯度法求極值539
12.2.9【實例74】用准牛頓法求極值540
12.3單純形法542
12.3.1[演算法126]求無約束條件下n維極值的單純形法542
12.3.2[演算法127]求有約束條件下n維極值的單純形法548
12.3.3[演算法128]解線性規劃問題的單純形法556
12.3.4【實例75】用單純形法求無約束條件下N維的極值568
12.3.5【實例76】用單純形法求有約束條件下N維的極值569
12.3.6【實例77】求解線性規劃問題571
第13章隨機數產生與統計描述574
13.1均勻分布隨機序列574
13.1.1[演算法129]產生0到1之間均勻分布的一個隨機數574
13.1.2[演算法130]產生0到1之間均勻分布的隨機數序列576
13.1.3[演算法131]產生任意區間內均勻分布的一個隨機整數577
13.1.4[演算法132]產生任意區間內均勻分布的隨機整數序列578
13.1.5【實例78】產生0到1之間均勻分布的隨機數序列580
13.1.6【實例79】產生任意區間內均勻分布的隨機整數序列581
13.2正態分布隨機序列582
13.2.1[演算法133]產生任意均值與方差的正態分布的一個隨機數582
13.2.2[演算法134]產生任意均值與方差的正態分布的隨機數序列585
13.2.3【實例80】產生任意均值與方差的正態分布的一個隨機數587
13.2.4【實例81】產生任意均值與方差的正態分布的隨機數序列588
13.3統計描述589
13.3.1[演算法135]分布的矩589
13.3.2[演算法136]方差相同時的t分布檢驗591
13.3.3[演算法137]方差不同時的t分布檢驗594
13.3.4[演算法138]方差的F檢驗596
13.3.5[演算法139]卡方檢驗599
13.3.6【實例82】計算隨機樣本的矩601
13.3.7【實例83】t分布檢驗602
13.3.8【實例84】F分布檢驗605
13.3.9【實例85】檢驗卡方檢驗的演算法607
第14章查找609
14.1基本查找609
14.1.1[演算法140]有序數組的二分查找609
14.1.2[演算法141]無序數組同時查找最大和最小的元素611
14.1.3[演算法142]無序數組查找第M小的元素613
14.1.4【實例86】基本查找615
14.2結構體和磁碟文件的查找617
14.2.1[演算法143]無序結構體數組的順序查找617
14.2.2[演算法144]磁碟文件中記錄的順序查找618
14.2.3【實例87】結構體數組和文件中的查找619
14.3哈希查找622
14.3.1[演算法145]字元串哈希函數622
14.3.2[演算法146]哈希函數626
14.3.3[演算法147]向哈希表中插入元素628
14.3.4[演算法148]在哈希表中查找元素629
14.3.5[演算法149]在哈希表中刪除元素631
14.3.6【實例88】構造哈希表並進行查找632
第15章排序636
15.1插入排序636
15.1.1[演算法150]直接插入排序636
15.1.2[演算法151]希爾排序637
15.1.3【實例89】插入排序639
15.2交換排序641
15.2.1[演算法152]氣泡排序641
15.2.2[演算法153]快速排序642
15.2.3【實例90】交換排序644
15.3選擇排序646
15.3.1[演算法154]直接選擇排序646
15.3.2[演算法155]堆排序647
15.3.3【實例91】選擇排序650
15.4線性時間排序651
15.4.1[演算法156]計數排序651
15.4.2[演算法157]基數排序653
15.4.3【實例92】線性時間排序656
15.5歸並排序657
15.5.1[演算法158]二路歸並排序658
15.5.2【實例93】二路歸並排序660
第16章數學變換與濾波662
16.1快速傅里葉變換662
16.1.1[演算法159]復數據快速傅里葉變換662
16.1.2[演算法160]復數據快速傅里葉逆變換666
16.1.3[演算法161]實數據快速傅里葉變換669
16.1.4【實例94】驗證傅里葉變換的函數671
16.2其他常用變換674
16.2.1[演算法162]快速沃爾什變換674
16.2.2[演算法163]快速哈達瑪變換678
16.2.3[演算法164]快速餘弦變換682
16.2.4【實例95】驗證沃爾什變換和哈達瑪的函數684
16.2.5【實例96】驗證離散餘弦變換的函數687
16.3平滑和濾波688
16.3.1[演算法165]五點三次平滑689
16.3.2[演算法166]α-β-γ濾波690
16.3.3【實例97】驗證五點三次平滑692
16.3.4【實例98】驗證α-β-γ濾波演算法693