数学建模实录(3)

简介: 1。函数名:CrtPower(a) 作用:计算矩阵中的向量权 优点:直接由原始数据可以换算出矩阵中的向量权 源代码: function rstPower=CrtPower(a)%**************************************...

1。函数名:CrtPower(a)

作用:计算矩阵中的向量权

优点:直接由原始数据可以换算出矩阵中的向量权

源代码:

function rstPower=CrtPower(a)
%**********************************************************
%  This is Help Information About Power() Function.
%           Find the min number in the matrix.
%         Verison:1.2.0  Finish Date:30/08/2004
%   Usage:
%       Power(a)      %a is matrix .
%       return a rstPower.
%***********************************************************

if nargout>1
    error('Too many output arguments!');
else
 if (nargin<1 | nargin>=2)
        error('Too many input arguments!');
    else
        SumCols=length(a(1,:));%Get the Cols of the matrix.
  if SumCols>=3
            SumRows=length(a(:,1));%Get the Rows of the matrix.
   rstPower=zeros(SumRows);
      for Col=2:SumCols-1
                ParCol=a(:,Col);
                BefCol=a(:,Col-1);
                AftCol=a(:,Col+1);
    for RowCount=1:SumRows;
                    for tmpRow=1:SumRows;
                        if RowCount==tmpRow
                            rstPower(RowCount,tmpRow)=0;
                        else
                            if ParCol(RowCount)-BefCol(tmpRow)>=0
                                tmpM=ParCol(RowCount)-BefCol(tmpRow);
                                if AftCol(RowCount)-ParCol(tmpRow)>=0;
                                    tmpN=AftCol(RowCount)-ParCol(tmpRow);
                                else
                                    tmpN=AftCol(RowCount)-ParCol(tmpRow);
                                end;
                                rstPower(RowCount,tmpRow)=rstPower(RowCount,tmpRow)+abs(tmpM)+abs(tmpN)-(Col-2)*abs(tmpM);
                            else
                                tmpM=(SumCols-Col+1)*(ParCol(RowCount)-BefCol(tmpRow));
                                if AftCol(RowCount)-ParCol(tmpRow)>=0;
                                    tmpN=AftCol(RowCount)-ParCol(tmpRow);
                                    rstPower(RowCount,tmpRow)=rstPower(RowCount,tmpRow)+abs(tmpM+tmpN)-(Col-2)*abs(tmpM);
                                else
                                    tmpN=AftCol(RowCount)-ParCol(tmpRow);
                                    rstPower(RowCount,tmpRow)=rstPower(RowCount,tmpRow)+abs(tmpM)+abs(tmpN)-(Col-2)*abs(tmpM);
                                end;
                            end;
                        end;%End if
                     end;%End tmpRow for
                end;%End RowCount for
   end;%End Col For
        else
            error('Length of the martrix is too short!The minium number is 3!');
        end; %End if SumCols>=3
    end;%End If (nargin<1 | nargin>=2)
end;

2。函数名:FindMinParam(a,iCount,Diff)

作用:查找矩阵中指定的iCount个最小数。查找同行中(Diff=0,默认值)、不同行(Diff=1)中最小值

优点:直接给出数据就可以查找出矩阵中较小元素所在的行和列

源代码:

function rst=FindMinParam(a,iCount,Diff)
%**********************************************************
%  This is Help Information About FindMinParam() Function.
%  Find the min number in defferent Rows and Cols the matrix.
%           Verison:1.1.2  Finish Date:28/08/2004    
%   Usage:
%       FindMinParam(a,iCount,Diff)
%   a is matrix .
%   iCount is Counter.
%   Diff is the parame to Find the mininum in Different Row.       
%***********************************************************

if nargout>1
    error('Too many output arguments!');
else
 if (nargin==0 | nargin>3)
        error('Too many input arguments!');
 else
        Cols=length(a(1,:));
  Rows=length(a(:,1));
        if nargin==1
            iCount=Rows * Cols;
            Diff=0;
        end;
        if nargin==2 | nargin==3
            if iCount>Rows * Cols
                error('The search number is too big!');
                iCount=Rows * Cols;
            elseif iCount<1
                error('The mininum is 1');
                iCount=1;
            else
                iCount=iCount;
            end;
            if nargin==3
                if Diff==1
                    Diff=1;
                else
                    Diff=0;
                end;
            else
                Diff=0;
            end;
        end;
       
        rst=zeros(iCount,3);
  for Count=1:iCount
            Succ=0;
            for RowCount=1:Rows;
                for ColCount=1:Cols;
           if (min(min(a))==a(RowCount,ColCount));   
                        tmpMin=min(min(a));                    
            tmpRow=RowCount;                       
            tmpCol=ColCount;
                        if Diff==1
                            a(RowCount,:)=inf;                    
                a(:,ColCount)=inf;
                        else
                            a(RowCount,ColCount)=inf;
                        end;
                        Succ=1;                                
                        break;                                 
                    end;
                end     %End For
                if Succ==1                                     
                    break;
                end;
            end;
            if Succ==1                                         
                rst(Count,1)=tmpMin;
                rst(Count,2)=tmpRow;
                rst(Count,3)=tmpCol;
            end;
  end;
  disp(rst);
 end;
end;

面对问题:

1.CrtPower函数还需要继续改进,测试其是否能推广到更多的问题;
2.能否将FindMinParam程序添加功能,使用户指定所要查找的数据。
3.能否将最终的结果用直观图表示出来?
 
总结:
        本次模型在推广方面有了改进,大家也是尽心去将本次实验作的更好,值得以后发扬。程序方面也有了一定的提高。
 
目录
相关文章
|
5月前
|
机器学习/深度学习 算法
数学建模如何创新
【7月更文挑战第18天】
53 5
|
7月前
|
存储 算法 数据可视化
数学建模2023-A太阳镜厂代码认识
数学建模2023-A太阳镜厂代码认识
|
7月前
|
Python
第一次数学建模赛后总结
第一次数学建模赛后总结
|
7月前
|
机器学习/深度学习 数据采集 数据处理
2023年华为杯数学建模E题——代码复盘(第一问)
2023年华为杯数学建模E题——代码复盘(第一问)
217 1
|
定位技术
数学建模概论
数学建模概论
|
数据采集 机器学习/深度学习 算法
数学建模:赛前准备
数学建模:赛前准备
68 0
数学建模比赛
数学建模比赛
77 0
数学建模比赛
|
机器学习/深度学习 算法 数据可视化
数学建模资料整理
数学建模中有三类团队: 第一类:拿到题目,讨论,然后建模手开始建模,编程手开始处理数据,写作手开始写作。 第二类:拿到题目,团内大佬,开始建模,然后编程,然后写作。剩下两人负责探听别队的消息和带饭。 第三类:拿到题目,三个人一脸懵逼,不求同年同月同日生,但求同年同月同日死数学建模又称语文建模
447 0
|
运维 Cloud Native 知识图谱
2022藏经阁年度电子书榜单出炉!技术干货实战精华一手掌握!
阿里云开发者社区藏经阁,汇聚阿里工程师精华实战,累计上线400余本电子书,近8000份技术资料。上架至今,已有近200万次下载,1000万次阅读,20万人评论。点击直达https://developer.aliyun.com/ebook/
3533 3
2022藏经阁年度电子书榜单出炉!技术干货实战精华一手掌握!
数学建模养成篇2:数学建模的创新思维
建模的过程往往是一个循环往复的过程。更加需要的是我们的耐心和细心。
93 0
数学建模养成篇2:数学建模的创新思维