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