PDA

查看完整版本 : 一元多项式的性态


华英雄
2009-12-23, 22:19
function y=douxiangshi(f)
f=inline(f); %定义函数
% 先定义一个函数 对函数求导 ,极值点拐点 先判断最左边的增减凹凸性 在判断中间的
% 增减凹凸性 最后判断最右边的凹凸性 然后画图
n=length(p)-1;
a=n:-1:0;
syms x;
xx=(x.^a)*p';
r=roots(p);
real(r);%求零解
syms x
z=diff(sym(f),x); %求导
erdao=diff(sym(z),x); %求二阶导

% 求极值点及拐点
i=subs(erdao,'x',dian(k));
if double(i)>0
fprintf('\n函数在 %s 处取得极大值\n',char(dian(k)));
elseif double(i)<0
fprintf('\n函数在 %s 处取得极小值\n',char(dian(k)));
else
end
fprintf('\n (%s,%s) 为拐点\n',char(dian(k)),f(dian(k)));
end

zuo=double(dian(1))-1; %取点
%判断最左区间的增减性及凹凸性
if subs(z,'x',zuo)>0; %判断增
if subs(erdao,'x',zuo)>0; % 判断凸
fprintf('(-∞,%s)为增区间 此区间为凸\n',char(dian(1)));
else subs(erdao,'x',zuo)<0; % 判断凹
fprintf('(-∞,%s)为增区间 此区间为凹\n',char(dian(1)));
end
else subs(z,'x',zuo)>0; % 判断减
if subs(erdao,'x',zuo)>0; % 判断凸
fprintf('(-∞,%s)为减区间 此区间为凸\n',char(dian(1)));
else subs(erdao,'x',zuo)<0; % 判断凹
fprintf('(-∞,%s)为减区间 此区间为凹\n',char(dian(1)));
end
end
%判断中间的区间的增减性及凹凸性
for m=1:len-1
n=double((dian(m)+dian(m+1))/2); %取点
if subs(z,'x',n)>0 % 判断增
if subs(erdao,'x',n)>0; % 判断凸
fprintf('(%s,%s)为增区间 此区间为凸\n',char(dian(m)),char(dian(m+1)));
else subs(erdao,'x',n)<0; % 判断凹
fprintf('(%s,%s)为增区间 此区间为凹\n',char(dian(m)),char(dian(m+1)));
end
else subs(z,'x',n)<0; % 判断减
if subs(erdao,'x',n)>0; % 判断凸
fprintf('(%s,%s)为减区间 此区间为凸\n',char(dian(m)),char(dian(m+1)));
else subs(erdao,'x',n)<0; % 判断凹
fprintf('(%s,%s)为减区间 此区间为凹\n',char(dian(m)),char(dian(m+1)));
end
end
end
% 判断最右区间的增减性及凹凸性
you=double(dian(len))+1;%取点
if subs(z,'x',you)>0 %判断增
if subs(erdao,'x',you)>0; %判断凸
fprintf('(%s,+∞)为增区间 此区间为凸\n',char(dian(len)));
else subs(erdao,'x',you)<0; %判断凹
fprintf('(%s,+∞)为增区间 此区间为凹\n',char(dian(len)));
end
else subs(z,'x',you)>0; %判断减
if subs(erdao,'x',you)>0; %判断凸
fprintf('(%s,+∞)为减区间 此区间为凸\n',char(dian(len)));
else subs(erdao,'x',you)<0; %判断凹
fprintf('(%s,+∞)为减区间 此区间为凹\n',char(dian(len)));
end
end
% end
ezplot(f);
grid

急求,麻烦有能力的大虾帮我修正一下。要求的是:单调区间.零点.极值.凹凸区间.最值.拐点坐标