数学建模实录(3)

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.能否将最终的结果用直观图表示出来?

 

总结:

       本次模型在推广方面有了改进,大家也是尽心去将本次实验作的更好,值得以后发扬。程序方面也有了一定的提高。

 

时间: 2024-11-13 06:37:54

数学建模实录(3)的相关文章

数学建模实录(1)

作者:孤剑 孤剑<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 嘿嘿!本来打算不用去了,但是在几天的训练中,发现现在这个组每个成员也还不错.所以,又出动了. Let's begin to study mathematical modeling and mathematical experiments,begin to learn matlab software. 本来,

数学建模实录(4)

作者:孤剑     这几天一直担心数学建模的问题,虽然自己过生日的时候,我认为的几个朋友没有打电话给我,很伤心,但是生活不容许你有太多的伤心,还是得学习.     眼看马上就要到了数学建模考试的时间了,自己还有很多的东西需要学习,今天看了看微分方程的求解,不时很明白. [t,x]=solver('function',ts,x0,options) 说明: 1.t为由solver返回的函数的自变量: 2.x为由solver返回的函数值: 3.solver为微分方程的解决函数,ode23,ode45,

ASP在数学建模中的基础应用

    曾编了一个程序,应用于数学建模的数据提取阶段.现归纳如下,思路写得比较详细,看起来像教程-_-. 目的是做一个BBS的流量统计,需要分析的数据是每一分钟之内,有哪些ID在线,这些ID的IP是多少,并且要求ID与IP一一对应,不能有重复ID和重复IP,并要求每一分钟生成一个矩阵,分别是ID IPA段 IPB段 IPC段 IPD段, 并存成文本文件, 文件名为hh:mm格式. 然后把这些文本文件导入MatLab进行分析处理,现讨论前面的数据获得阶段的实现方法. 数据源从http://bbs.

matlab做数学建模,有这么段代码,这有错么?

问题描述 matlab做数学建模,有这么段代码,这有错么? 结果实在是跑不对selftimeform = [14.7:0.05:15.7];x=[1.036500000000001.069900000000001.103800000000001.138300000000001.173200000000001.208700000000001.244800000000001.281500000000001.318900000000001.356800000000001.395500000000001

数学建模十大算法

作者:July  二零一一年一月二十九日   一.蒙特卡罗算法1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis 共同发明了,蒙特卡罗方法. 此算法被评为20世纪最伟大的十大算法之一,详情,请参见我的博文:http://blog.csdn.net/v_JULY_v/archive/2011/01/10/6127953.aspx   蒙特卡罗方法(Monte Carlo method),又称随机抽样或统计模拟方法

《数学建模:基于R》——导读

前 言 R是一款免费软件,主要用于统计分析.绘图和数据挖掘等.但随着R的广泛使用,R软件的求解能力已不仅仅局限于统计计算的内容,特别是R扩展程序包的下载和安装,大大地增强了R软件的计算与求解能力,例如,能够完成优化.图论与网络.数值分析等方面的计算. 本书之所以命名为<数学建模:基于R>,是因为除介绍数学建模常用的统计方法外,还着重介绍了如何从CRAN(Comprehensive R Archive Network)社区下载相关的扩展程序包,如何使用这些程序包中的函数求解线性规划.最优化.图论

《数学建模:基于R》一一1.7 数学建模案例分析——食品质量安全抽检数据分析

1.7 数学建模案例分析--食品质量安全抽检数据分析 1.7.1 问题的提出 该题选自2013年"深圳杯"数学建模夏令营A题. "民以食为天",食品安全关系到千家万户的生活与健康.随着人们对生活质量的追求和安全意识的提高,食品安全已成为社会关注的热点,也是政府民生工程的一个主题.城市食品的来源越来越广泛,人们消费加工好的食品的比例也越来越高,因此除食材的生产收获外,食品的运输.加工.包装.贮存.销售以及餐饮等每一个环节皆可能影响食品的质量与安全.另一方面,食品质

信道估计-有一个数学建模问题用Matlab绘图后不是期望的图,是我选择的点数太多还是……

问题描述 有一个数学建模问题用Matlab绘图后不是期望的图,是我选择的点数太多还是-- n=82*2201; a=zeros(1,n); x=[real.txt]; X=x(1:2200:end); a(1:2201:n)=X; l=length(a);1*180482 x=x(:);9*2000->1*180000 x=x'; x=[x,zeros(1,482)];1*180482 x=x-a; x(x==0)=[];1*179999 x=x';179999*1 xk-用excel抽样的 Y

《数学建模:基于R》——2.4 数学建模案例分析——气象观察站的优化

2.4 数学建模案例分析--气象观察站的优化 2.4.1 问题的提出 某地区内有12个气象观测站,为了节省开支,计划减少气象观测站的数目.已知该地区12个气象观测站的位置,以及10年来各站测得的年降水量(见表2.14,为便于计算,将表中的数据保存在文本文件rainfall.data中).减少哪些观测站可以使所得到的降水量的信息足够大?观察站分布如图2.7所示. 2.4.2 假设 2.4.3 分析 题目要求减少一些观测站,但获得的降水量的信息足够大,如何做到这一点呢?首先要考虑降水量的信息问题.对