建立目标函数的关键是,使用for循环语句求解G(i)=Σcos(x+i*b),然后用var函数求出G(i)的方差
第二步:根据G≤1.5条件,建立约束函数。建立约束函数的关键是,使用for循环语句求解G(i)=Σcos(x+i*b),使得ΣG(i)≤1.5
第三步:根据 -π/2≤x ≤ π/2 和 n>1,确定x、n的上限和下限值。即VLB=[1,-pi/2],VUB=[100,pi/2]
第四步:使用fmincon函数求出k值(x、n的值)。即[k,fval,exitflag]=fmincon(@(k)myfun(k),x0,[],[],[],[],VLB,VUB,@(k)mycon(k))
第五步:也就是最关键的一步。验证,求出的x、n值,是否满足G≤1.5
按照上述步骤要求,进行编程后运行可得如下结果。
n=3,b=1.6667,G=0.12908
对于函数Sa(t)=sin(x)/x,其中x∈[-10π,10π],matlab中可以这样表示:x=-10*pi:10*piS=sin(x)补充问题回答:x=-2*pi:pi/10:2*pi表示x∈[-2π,2π];t=0:pi/50:4*pi表示t∈[0,4π];这是由于在matlab中,如果想表示一个范围,比如说x∈[a,b],可以这样表示,x=a:dx:b,代表x从a取到b,每隔dx取一个点。
所以这里的x=-2*pi:pi/10:2*pi,就代表x从-2π取到2π,每隔π/10取一个点。这里pi/10,pi/50就是取的每两个相邻点的间隔。
matlab中八种整数类型的取值范围:
1、int8()取值范围:-128~127。
2、int16()取值范围:-32768~32767。
3、int32()取值范围:-2147483648~2147483647。
4、int64()取值范围:-9223372036854775808~-9223372036854775807。
5、uint8()取值范围:0~255。
6、uint16()取值范围:0~65535。
7、uint32()取值范围:0~4294967295。
8、uint64()取值范围:0~9223372036854775807。
可以用x=linspace(0,90)表示开区间;程序如下:clear,clc
linspace(-1,1)
y=1./(1-x)./(1+x)
plot(x,y)
再举一个例子:用MATLAB画函数y=1/(1-x)/(1+x)代码如下
clear,clc
x=linspace(-1,1)
y=1./(1-x)./(1+x)
plot(x,y)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)