clc,clear
a = 0;
b = 6;
tol = 0001;
[x,a,b] = gold_mean(a,b,tol)
y=myfun(x)
x =
49985
a =
49968
b =
50012
y =
110000
=============
% 0618
function [x,a,b] = gold_mean(a0,b0,tol)
n = floor(log(tol) / log(0618)) + 1;
k = 1;
t2 = a0 + 0618 (b0 - a0);
t1 = a0 + 0382 (b0 - a0);
while k < n + 1
f1 =my fun(t1);
f2 =my fun(t2);
if f1 < f2
b0 = t2;
t2 = t1;
t1 = b0 + 0618 (a0 - b0);
else
a0 = t1;
t1 = t2;
t2 = a0 + 0618 (b0 - a0);
end
k = k + 1;
end
a = a0;
b = b0;
x = t1;
=========
function y =my fun(x)
y=x^2-10x+36;
黄金分割法适用于[a,b]区间上的任何单谷函数求极小值问题,对函数除要求“单谷”外不做其他要求,甚至可以不连续。因此,这种方法的适应面非常广。黄金分割法也是建立在区间消去法原理基础上的试探方法,即在搜索区间[a,b]内适当插入两点a1,a2,并计算其函数值。a1,a2将区间分成三段,应用函数的单谷性质,通过函数值大小的比较,删去其中一段,是搜索区间得以缩小。然后再在保留下来的区间上作同样的处理,如此迭代下去,是搜索区间无限缩小,得到极小点的数值近似解。
以下是函数输入输出参数表:
function xmin = goldSearch(fun,a,b,eps)
% ---input
% fun 所求的目标函数
% a 区间的下界
% b 区间的上界
%eps 区间的最小阀值长度
% ---output
% xmin 函数取极小值时自变量的值
详细参考>
摘 要:简要分析了雷电的产生机理和雷电的危害,比较选择出双指数函数、Heidler函数和脉冲函数三种能较好模拟雷电流变化的数学模型,并对其数学推导及计算过程进行了详细分析。在对数学模型详细的理论分析的基础上,结合实际中雷电的幅值,频率等参考值,对这三种雷电流数学模型进行了合理的参数选择。在MATLAB中分别建立了双指数函数、Heidler函数和脉冲函数三种雷电流模型,详细分析了三种模型产生雷电波形的波形变化趋势。
关键词:双指数函数;Heidler函数;雷电流
1引言
自古以来,雷电就是一种令人生畏的自然现象。人们从很早就致力于对它的研究,但是目前,国内外关于雷电理论研究及计算方法尚欠完善,所以研究雷电的产生机理和对雷电的仿真分析已经成为对雷电研究的重点。为了更方便的对雷电进行仿真分析,用数学模型对其进行模拟已经得到了广泛的应用,但是人们对雷电流数学模型缺乏整体性的认识,在现有研究成果的基础上,对雷电流数学模型进行系统的比较研究,并对雷击输电线路产生的影响进行了分析。
2雷电电流的数学模型
21 双指数函数
1941年,Bruce和Golde提出了双指数函数的数学表达式:
■ (1)
式中α是决定电流衰减的时间常数;β是决定电流上升的时间常数;α、β的大小可按照当时已知的知识,由闪电的三个特性推得。这三个特性就是:沿先导通道的电荷密度,回击速度,以及回击过程中先导电荷的复合率。
■,为峰值电流的修正因子;
tp=■,为峰值时间(通过求解■=0,可以得到tp值)。
把tp带入(4-1)式中可求得峰值电流为:
■(2)
假设半峰值时间为■,则有:
■(3)
从(1)、(2)和(3)式子中可以看出■不仅与■有关,而且与α、β有关。tp和■与α、β也有着复杂的数学关系(将(2)式带入式(3)中可求得■的数学表达式)。
22 霍德勒函数
Heidler提出了一种较新的雷电电流的数学模型:
■(4)
■(5)
其中■,■是决定电流上升(波头)的时间常数,n是电流陡度因子。
■(6)
其中■是决定电流下降(波尾)的时间常数。
这个数学模型是由两个函数组成的,x(t)是电流上升时间函数,y(t)是电流下降时间函数,■是电流峰值。
假设 : 在电流下降时间内,x(t)≈1;
在电流上升时间内,y(t)≈1。
由式(5)可知当t >0时,x(t)<1,则电流的最大值小于■,因此,需要一个电流最大值的修正系数η。
国际电工委员会(IEC)在其1995年的文件IEC1312-1中,规定了供分析用的雷电流解析表达式(n=10时):
■(7)
式(7)是基于Heilder模型和传输线模型提出的,适用于首次雷击和后续雷击。
23 脉冲函数
雷电的放电回击过程可以由简单的天线模型来模拟,由这个模型得到关于雷电的电磁场表达式中的静电场项与回击电流的时间积分有关。因此,在进行雷电电磁场的计算中,都涉及到复杂的重积分运算,工作量巨大。双指数函数在t=0时有连续的一阶导数,而Heidler函数又没有明显的积分式。为了克服这种困难,有人提出了用式(8)形式的脉冲函数模型[2]来表示雷电电流
■(8)
其中峰值修正因子■,■。
修正因子η与Heidler函数电流模型的修正因子η的求解方法相同,即由■以及■联立求得。
将式(8)中的■展开,可以得到[2]:
■(9)
有关文献认为:脉冲函数展开式(9)中的第一项(k=0时)是决定脉冲函数衰减的主要项。
3三种雷电流数学模型仿真的对比分析
31函数的一阶可导性
为了方便对比分析,这里我们利用Matlab函数仿真功能,将三幅图仿真于同一坐标系里,分别给出了这三种雷电电流数学模型在t=0时,函数的一阶导数仿真波形。如图所示:
从图中可以看出这三条曲线中,只有双指数函数的一阶导数曲线在t=0时,di/dt达到最大值,而Heidler函数和脉冲函数在t=0时,di/dt都为0。因此,只有只有双指数函数在t=0时,没有连续的一阶导数
32三种函数仿真波形的特点
为了方便对函数波形对比分析,我们将利用Matlab仿真软件把用PSCAD/EMTDC的仿真出的三种函数仿真波形的全波、波头和半峰值仿真图放在同一个坐标系里,如图所示:
图2中的各函数其实是这样得到的:由于它们的衰减项主要决定于参数■,而脉冲函数和Heidler函数对应衰减项相同,对双指数函数令■,■。我们就可以看出它们的波形是比较接近的。特别是双指数函数和脉冲函数,在n值不大的情况下是非常接近的(图2(a)中可以得以体现)。实际上,在n=1的情况下脉冲函数就是双指数函数,一般情况下,脉冲函数就可以看成是对双指数函数的修正。
从图2(b)和(c)中我们可以看出,对于雷电流波形的上升沿,Heidler函数和脉冲函数相对与双指数函数有明显的改善。双指数函数和脉冲函数雷电流上升速度快,很快就达到雷电流的最大值;而Heidler函数相对与其他两个函数,雷电电流波形上升的上升前沿比较陡,到达最大值后,经过较长的一段时间才降到最小值,这种情况与Gerger等人的实际测量的结果是一致的。因此,选用Heidler函数式(9)作为雷电流随时间变化关系比选用其他的更符合雷电电流的实际规律。
4结论
双指数函数是现有文献中用的最多的一种模型,但它有两个明显的不足之处:其一,就是表达式中的参数■、α、β的物理意义不明确,而且在t=0时,没有连续可导的一阶导数。但是由于双指数函数能够直接、简单的进行积分和微分,而且它基本上能够反映出雷电流的主要参数,所以双指数函数应用最为广泛;其二是正如Dennis和Pierce 所指出的,原假设任何时刻沿回击通道的电流幅值相同是不正确的,至少在回击顶端正在向上发展时是如此。事实上,沿整个闪电通道路径上的电流不可能瞬时均匀,否则,电荷就应从通道底部直接跃到顶部,这在物理上是无法实现的,故其只能应用于不要求很精确的雷电流仿真计算中等的研究。
Heidler函数是IEC的推荐标准,其仿真波形特征和实际测量波形相近,能很好的反映雷电流的特征值,但是它和双指数函数一样,在t=0时,没有连续可导的一阶导数。
但是在雷电流电磁场的计算中,涉及到雷电流的时间积分。考虑到双指数函数在t=0时,没有连续可导的一阶导数,而且Heidler函数没有明显的时间积分式子,因此,在作雷电电磁场的计算中,脉冲函数作为雷电电流解析表达式是比较理想的。
参考文献
[1] 国际电工委员会,防雷的国际标准[S],北京:气象出版社,1996:10-14
[2] 韩祯祥,吴国炎,电力系统分析[M],第七版,浙江:浙江大学出版社,2005:55-56
[3] 赵智大,高电压技术[M],北京:中国电力出版社,1999
[4] 张小青,建筑防雷与接地技术[M],北京:中国电力出版社,2003
[5] 潘忠林,现代防雷技术[M],成都:电子科技大学出版社,2003
%0618法步骤
syms t;
f(t)=t^3-2t+1;
% 第1步、确定单谷区间[a,b],给定最后区间精度e>0
a=0;b=3;
e=05;
A=[];%先定义一个空矩阵
j=1;%矩阵的列
% 第2步、计算最初两个搜索点
% t1=a+0382(b-a)=b-0618(b-a)
% t2=a+0618(b-a)
t1=b-0618(b-a);
t2=a+0618(b-a);
% 并计算f1=f(t1),f2=f(t2)
f1=f(t1);
f2=f(t2);
% 第3步、若f1<f2,转第4步,否则转第5步
while(1)
A(1:7,j)=[j-1,a,b,t1,t2,f1,f2]';%将矩阵按列填充
if f1<f2
A(8:9,j)=[0,1]';%若是换b,记录为1
% 第4步、若t2-a<e,停止迭代,输出t1否则令b=t2,t2=t1,t1=b-0618(b-a),f2=f1,计算f1=f(t1),转第3步
if (t2-a)<e
b=t2;
t=t1
break;
else
b=t2;
t2=t1;
t1=b-0618(b-a);
f2=f1;
f1=f(t1);
end
else
A(8:9,j)=[1,0]';%若是换a,记录为1
% 第5步、若b-t1<e,停止迭代,输出t2否则令a=t1,t1=t2,t2=a+0618(b-a),f1=f2,计算f2=f(t2),转第3步
if (b-t1)<e
a=t1;
t=t2
break
else
a=t1;
t1=t2;
t2=a+0618(b-a);
f1=f2;
f2=f(t2);
end
end
j=j+1;
end
A(1:3,j+1)=[j,a,b]';
file_name='C:\Users\acer\Desktop\goldxls';
xlswrite(file_name,A,'sheet1','B1');
以上就是关于求matlab 黄金分割法 min f(t)=t^2-10t+36 最优解是 t*=5.0 f(t*)=11.0全部的内容,包括:求matlab 黄金分割法 min f(t)=t^2-10t+36 最优解是 t*=5.0 f(t*)=11.0、我是Matlab新手,请问matlab一维搜索中的黄金分割法如何确定目标函数、【雷电流的数学模型仿真分析】 matlab数学模型仿真系统图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)