| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1957 人关注过本帖
标题:判断一元多项式函数的编程问题
只看楼主 加入收藏
剑八
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-11-9
结帖率:100%
收藏
 问题点数:0 回复次数:4 
判断一元多项式函数的编程问题
function y=douxiangshi(f)
f=inline(f);  %定义函数
% 先定义一个函数 对函数求导 求出稳定点和极值点拐点  先判断最左边的增减凹凸性 在判断中间的
    % 增减凹凸性 最后判断最右边的凹凸性 然后画图
syms x
z=diff(sym(f),x); %求导
dian=solve(z);%求稳定点
  %有几个极值点
erdao=diff(sym(z),x);  %求二阶导
dain=sort(dian);
len=length(size(dian)); %有几个极值点
% 显示几个极值点
disp('稳定点:');
for j=1:len
   fprintf('%4s   ',char(dian(j)));
end
for k=1:len   % 求极值点及拐点
  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
      fprintf('\n (%s,%s)  为拐点\n',char(dian(k)),f(dian(k)));
  end
end
% len=len-1; %中间区间数
% if len>1
  %判断最左区间的增减性及凹凸性
   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
在命令窗口输入douxiangshi('x^3+6*x^2-15*x-20')
  得到的答案
  稳定点:
   1     -5   
函数在  1  处取得极大值

函数在  -5  处取得极小值
(-∞,1)为减区间 此区间为凸
(1,-5)为减区间 此区间为凹
(-5,+∞)为减区间 此区间为凹
  怎么得不到全部的稳定点  拐点也没得出来 还有怎么会是
(1,-5)为减区间 此区间为凹
(-5,+∞)为减区间 此区间为凹
        区间都倒了
  得到的稳定点已经排序了的啊   会是1  -5
搜索更多相关主题的帖子: 多项式 函数 判断 
2008-12-10 19:49
meteora1106
Rank: 2
等 级:新手上路
威 望:5
帖 子:126
专家分:0
注 册:2008-9-15
收藏
得分:0 
你贴这么多代码没几个人会帮你看的,你能把你的问题简化一下吗?
2008-12-10 23:59
meteora1106
Rank: 2
等 级:新手上路
威 望:5
帖 子:126
专家分:0
注 册:2008-9-15
收藏
得分:0 
你贴这么多代码没几个人会帮你看的,你能把你的问题简化一下吗?
2008-12-11 00:00
剑八
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2008-11-9
收藏
得分:0 
谢谢  问题已经解决了
2008-12-13 12:56
快速回复:判断一元多项式函数的编程问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016949 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved