如何使用fminbnd计算最大值?。

22 visualizzazioni (ultimi 30 giorni)
ryjmpens
ryjmpens il 19 Mag 2023
Risposto: peqxycu il 19 Mag 2023
有一些离散的点,通过拟合后得到了函数曲线,并且计算了该曲线的曲率方程,问怎么使用fminbnd找到曲率的最大值。程序只写出了一部分。如下:
p1 = polyfit(x1,y1,6); %拟合的系数
f1 = poly2sym(p1); %拟合的函数
xt = linspace(min(x1), max(x1));
yt1 = polyval(p1, xt);
plot(xt, yt1, 'r-', 'LineWidth', 1);
%曲率计算
yapp1 = diff(f1);
yapp2 = diff(f1,2);
cur1 = abs(yapp2) ./ (1+yapp1.^2).^(3/2);
然后使用fminbnd计算曲率cur1在【1,101】区间的最大值,我用的[xmin, fval]= fminbnd(cur1,1,101);总是出错,不知道问题在哪里。
求大佬指点一下。

Risposta accettata

peqxycu
peqxycu il 19 Mag 2023
你这曲率计算出来的是个符号表达式,需要先用 matlabFunction函数(超链接,自己点进去看) 转化成函数句柄,才能被 fminbnd函数(超链接,自己点进去看) 正确调用
Curl = matlabFunction( cur1 );
[ xmin, fval ] = fminbnd( Curl, 1, 101 )
xmin = 72.5035065055403
fval = 8.03520341250956e-09

Più risposte (0)

Categorie

Scopri di più su Thermal Analysis in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!