资源描述
Matlab实践
1、 二次插值法无约束最优化
算法说明:在包含f(x)极小值x0的区间【a b】,给定三点x1、x2、x3,其对应的函数值分别为f1、f2、f3,且满足x1<x2<x3。可以构造二次函数q(x),使其在三点处的函数值等于f(x)对应的函数值。可以根据q’(x)=0,求得该二项式取最小值时的点x0,如下所示:
根据求出x0的大小情况确定取代三点中的某一点,直到|x3-x1|<ε1,|f3-f1|<ε2时停止迭代,并令x0为对应最小值的点。
算法步骤:
步骤一:比较x0和x2的大小,如果x0>x2,转步骤二;否则转步骤三;
步骤二:如果f0<f2,则令x1<=x2,x2<=x0,转步骤四;否则令x3<=x0,转步骤四;
步骤三:如果f0<f2,则令x2<=x0,x3<=x2,转步骤四;否则令x1<=x0,转步骤四;
步骤四:区间收缩完毕,在新的[x1,x2]内计算x0。
流程图:
|x00(1)-x00(3)|<xw或者|f00(1)-f00(3)|<fw?
开始
|x00(1)-x00(3)|<xw或者|f0-f00(2)|<fw?
输入原函数f,搜索区间x,允许误差xw,fw。
x0>x00(2)?
f0<f00(2)?
f0<f00(2)?
结束
输出x0,f0
在x内确定初始的三个值x00,f00=f(x00)
计算x0,f0
x00(1)=x00(2)
x00(2)=x0
x00(3)=x0
f00=f(x00),计算x0,f0
x00(1)=x0
x00(3)=x00(2)
x00(2)=x0
是
否
是
是
是
否
否
否
输出“搜索区间太小”
是
算法举例:
f(x)=(x2-2)2/2-1,x∈[0,5]
2、拉压杆系的静不定问题。求各杆的轴力Ni及节点C的位移,已知桁架结构如图所示,各杆横截面积分别为Ai,材料的弹性模量为E。
算法说明:假设各杆均受拉力,C点因各杆变形而引起的x方向位移△x,y方向位移△y,由几何关系,的变形方程:
i=1,……,n
令Ki=,
故,
再加上平面共点力系的两个平衡方程
共有n+2个方程,其中包括n个轴力和两个待求位移△x,△y,方程组可解。
线性方程组,可用矩阵除法直接解出。
流程图:
开始
输入外力P,外力方向角a,各杆杨氏模量E,杆1的初始长度l1
输入各杆的方向角ai和横截面积si
计算各杆原长度li=l1*cos(ai(1))./cos(ai),
计算各杆的刚度的倒数ki=li./E./si
构建部分矩阵系数m=[cos(ai);sin(ai)]
构建矩阵系数n=[m,zeros(2);diag(ki),-1*m'],
k=length(ai),构建结果向量t=[p*cos(a),p*sin(a),zeros(1,k)]
输出包含未知轴力Ni和节点C位移△x、△y的X
结束
计算未知数
X=n\t'
算法举例:
P=1000,a=pi/2,l1=0.5,a1=pi/4,a2=pi/2,a3=3pi/4,s1=s2=s3=1e-3,E=100e9,
求Ni,△x,△y。
容易算出
2.92893218813452e002
5.85786437626905 e002
dx =0
dy== 2.071067811865475e-006
展开阅读全文