作业帮 > 数学 > 作业

怎样用matlab求一元线性函数极值

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/04/27 04:36:34
怎样用matlab求一元线性函数极值
f=sqrt(5^2+(8-x)^2)*28.8+sqrt(15^2+(5+x)^2)*7.2
clear; %%%%% 清变量
clc; %%%%% 清屏幕
syms x; %%%% 定变量
f = sqrt(5^2+(8-x)^2)*28.8+sqrt(15^2+(5+x)^2)*7.2; %%%% 变量表达式
y = @(x) sqrt(5^2+(8-x)^2)*28.8+sqrt(15^2+(5+x)^2)*7.2; %%%% 句柄函数
df = diff(f); %%%% 求微分
xz = solve(df); %%%% 求极值点
[m,n] = size(xz); %%%% 求极值点个数
d2f = diff(f,2); %%%% 求二阶微分,以判断极大极小
for ii = 1:n %%%% 对每个极值点进行判断
z(ii) = limit(d2f,x,xz(ii)); %%%%% 求二阶微分在极值点的极限
%temp = vpa(z(ii));
temp = double(z(ii)); %%%%% 转成数值判断
if temp>0 %%%%% 二阶微分大于零,是极小值点
fprintf('find a minimum point x = %f,and the minimum value is f(%f) = %f\n',temp,temp,y(temp));
elseif temp0 %%%%% 二阶微分大于零,是极小值点
fmin = double(limit(f,x,xz));
fprintf('find a minimum point x = %f,and the minimum value is f(%f) = %f\n',temp,temp,fmin);
elseif temp> syms x;
>> f = sqrt(5^2+(8-x)^2)*28.8+sqrt(15^2+(5+x)^2)*7.2;
>> ezplot(f,[-10,10])