PDA

查看完整版本 : [MATLAB混合编程] 求助:请问如何求这个函数极大值和极小值?


matlabnewbie
2010-02-11, 02:34
clear;
clc;

for k=1:501
for j=1:30
x(k,j) = 2.1e6+(k-1)*200;
Cs(k,j) = 1e-13*10^(j/5);

Cm=1.1e-9;
C1=10^-9;
Rl=2;
Rm=0.2;
Rp=0.3;
Ll=1*10^(-6);
Lm=4.9*10^(-6);
Lp=1*10^(-7);

w(k,j)=2*pi*x(k,j);
Zl(k,j)=Rl+i*w(k,j).*Ll;
Zp(k,j)=Rp+i*w(k,j).*Lp;
Zm(k,j)=Rm+i*w(k,j).*Lm+1./(i*w(k,j).*Cm);
Zs(k,j)=1/(i*w(k,j).*Cs(k,j));
Z(k,j)=1/(1/(Zl(k,j)+ Zp(k,j).*Zm(k,j)./(Zp(k,j)+Zm(k,j)))+1/(Zs(k,j)));
y(k,j)=sqrt(imag(Z(k,j)).^2+real(Z(k,j)).^2);

end
end

plot(x,y)

请问如何求这个程序里函数 y 的极大值和极小值以及相应的 x 的值?
函数 y 的自变量是k, j 还是其他?

非常感谢!

laohuiosa
2010-02-11, 21:06
[a,b]=max(y);
[c,d]=min(y);
[a1,b1]=max[a];//a1返回最大值,b1返回最大值的列号
b2=b(b1);//b2返回最大值的行号
[c1,d1]=min(c);c1返回最小值,d1返回最小值的列号
d2=d(d1);//d2返回最小值的行号
y是坐标(k,j)的函数。

matlabnewbie
2010-02-13, 05:50
感谢!
但是我想要求的是极值而不是最值。

laohuiosa
2010-02-14, 16:06
极值应该还要一些条件吧,应该有局部的范围吧

matlabnewbie
2010-02-15, 23:12
有范围。范围就是x(k,j) = 2.1e6+(k-1)*200; k=1:501.也就是x=从2.1e6到2.2e6。