Matlab 函数最大值点变量值确定方法

本文介绍如何在Matlab中绘制三维函数图像,并通过编程方式找到该函数的最大值及其对应的变量值。示例代码展示了如何创建二维数组表示三元函数,使用surf函数进行三维图像绘制,同时利用max和find函数确定最大值的位置。

先明确Matlab里的函数绘图也是由点连成,所以这里的函数其实可以看做数组来处理。

以三元函数(对应二维数组)为例:

clc;
f=13000:100:19000;
k=0:0.01:1;
[f,k]=meshgrid(f,k);
Us=10;
Rs=0.1;
Ls=10^(-4);
Cs=10^(-6);
Rd=0.1;
Ld=10^(-4);
Cd=10^(-6);
Rw=10;
M=sqrt(Ls.*Ld).*k;
w=2.*pi.*f;
I1=Us./(Rs+w.*Ls.*j+1./(w.*Cs.*j)+(w.*w.*M.*M)./(Rd+Rw+w.*Ld.*j+1./(w.*Cd.*j)));
I2=j.*w.*M.*Us./(Rs+j.*w.*Ls+1./(j.*w.*Cs))./(Rd+Rw+j.*w.*Ls+w.*w.*M.*M./(Rd+Rw+j.*w.*Ls));
I1real=real(I1);
I2real=real(I2);
P=I1real.*Us;
Pw=I2real.*I2real.*Rw;
%surf(f,k,I1),hold on
%surf(f,k,I2real);
I2abs=abs(I2);
I2absmax=max(I2abs);
I2max=max(I2absmax);
[kn,fn]=find(I2abs==I2max);
disp(I2max);
disp(fn);
disp(13000+(fn-1).*100);
disp(kn);
disp(0+(kn-1).*0.01);
disp(I2abs)

  使用max()函数找出最大值,再用find()函数查找与最大值对应的元素的行列坐标。

  find()函数使用说明如下:

  [kn,fn]=find(I2abs==I2max)

kn,fn为当I2abs=I2max时对应的元素行列坐标。

再根据得到的行列坐标倒推两个自变量的值:

f=13000+(fn-1).*100

k=0+(kn-1).*0.01
//由变量起始值和间隔值倒推

在上例中,I2abs最大值为61.6064,对应的行列坐标为101和30,两变量的间隔值分别为100和0.01,倒推得函数最大值时量变量值为f=15900,k=1。

转载于:https://www.cnblogs.com/freevolunteer/p/6802493.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值