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

조회 수: 22 (최근 30일)
ryjmpens
ryjmpens 2023년 5월 19일
답변: peqxycu 2023년 5월 19일
有一些离散的点,通过拟合后得到了函数曲线,并且计算了该曲线的曲率方程,问怎么使用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);总是出错,不知道问题在哪里。
求大佬指点一下。

채택된 답변

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Thermal Analysis에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!