最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

投入产出问题(矩阵求差、矩阵与数乘)

来源:动视网 责编:小OO 时间:2025-09-25 16:17:45
文档

投入产出问题(矩阵求差、矩阵与数乘)

一、题目:投入产出问题(矩阵求差、矩阵与数乘)二、设计思路⒈总体设计1)程序的功能:利用数组操作,根据总投入=总产出的原则计算投入产出问题。2)系统总体结构:建立一个工作空间bai.dsw,设计了十个.cpp文件:如orgna.cpp:算各部门中间产品矩阵a;orgn.cpp:计算总投入与固定资产折旧的差;orgnz.cpp:计算各部门新创造价值;orgny.cpp:计算各部门最终产品;orgny2.cpp:计算各部门最终产品y的转置矩阵;sum1.cpp:计算a矩阵各列和;sum2.cpp:
推荐度:
导读一、题目:投入产出问题(矩阵求差、矩阵与数乘)二、设计思路⒈总体设计1)程序的功能:利用数组操作,根据总投入=总产出的原则计算投入产出问题。2)系统总体结构:建立一个工作空间bai.dsw,设计了十个.cpp文件:如orgna.cpp:算各部门中间产品矩阵a;orgn.cpp:计算总投入与固定资产折旧的差;orgnz.cpp:计算各部门新创造价值;orgny.cpp:计算各部门最终产品;orgny2.cpp:计算各部门最终产品y的转置矩阵;sum1.cpp:计算a矩阵各列和;sum2.cpp:
一、题目:

投入产出问题(矩阵求差、矩阵与数乘)

二、设计思路

⒈ 总体设计

1)程序的功能:利用数组操作,根据总投入=总产出的原则计算投入产出问题。

2)系统总体结构:建立一个工作空间bai.dsw,设计了十个.cpp文件:如orgna.cpp:

算各部门中间产品矩阵a;orgn.cpp:计算总投入与固定资产折旧的差;orgnz.cpp:计算各部门新创造价值;orgny.cpp:计算各部门最终产品;orgny2.cpp:计算各部门最终产品y的转置矩阵 ;sum1.cpp:计算a矩阵各列和 ;sum2.cpp:对a转置矩阵各列求和 ;cin.cpp:输入; cout.cpp输出;main.cpp主函数和一个头文件 leader.h:进行函数原型声明。

⒉ 各功能模块的设计:

orgna.cpp利用矩阵数乘实现;orgn.cpp和orgnz.cpp利用矩阵求差实现;sum1.cpp对矩阵各列求和;sum2.cpp对矩阵先进行转置再对各列求和;input.cpp直接输入数据;out.cpp通过函数进行输出;

⒊ 设计中的主要困难及解决方案

在这部分论述设计中遇到的主要困难及解决方案:

困难:建立各个不同的源程序文件和头文件以及对其进行连接运行;

解决方案:先建立一个工作空间,再在这个空间中建立各个源程序文件即.cpp和一个头文件.h,将各个函数分成不同的模块分别加到不同的.cpp中,将函数声明加到头文件中,以便使其能运行连接。

⒋ 设计的程序最终完成的功能

1)编制的程序能完成的功能:通过输入的数据可以计算并输出各部门中间产品矩阵及其转置矩阵,各部门新创造价值,和各部门最终产品及其矩阵的转置矩阵,从而可以观察总投入和总产出是否平衡,解决投入产出问题。

2)准备的测试数据及运行结果:

任务中提供数据运行结果:

请输入直接消耗系数矩阵b0 0.15 0.55 0 0.25 0.05 0.1 0.25 0.15 0 0.05 0.35 0.1 0.1

5 0.15 0.1

请输入总投入矩阵x360 240 180 300

请输入固定资产折旧d5 15 10 20

225 45 12 171 ----y的转置矩阵---

---各部门最终产品y---

225

45

12

171

-----各部门中间产品(aij)---

0 36 99 0

90 12 18 75

54 0 9 105

36 36 27 30

----各部门新创造价值z---

175 141 17 70

----a的转置矩阵---

0       36      99      0

90      12      18      75

54      0       9       105

36      36      27      30

Press any key to continue

三、程序清单

该程序包含orgna.cpp,orgn.cpp,orgnz.cpp,orgny.cpp,orgny2.cpp,sum1.cpp,sum2.cpp,cin.cpp,cout.cpp,main.cpp 和leader.h十一个文件。

⒈ main.cpp文件清单

#include

#include "leader.h"

void main()

{

    const int N=4;

    double a[N][N],b[N][N],x[N],d[N],A1[N],a3[N],a2[N][N],A2[N],y[N],z[N];

     input(b,x,d);          //各部门新创造价值 z[N] ;各部门中间产品 a [N][N] 

    orgna(a,b,x);           // 固定资产折旧d[N]; 直接消耗系数矩阵b[N][N];         sum1(a,A1);             //总投入矩阵x[N];各部门最终产品y[N];

orgn(a3,x,d);         //总投入与固定资产折旧的差 a3[N];

        orgnz(A1,a3,z);     //各部门中间产品 a [N][N]的转置矩阵 a2[N][N];

        sum2(a2,a,A2);      //各部门中间产品 a [N][N]各列和 A1[N];

        orgny(y,x,A2);   //各部门中间产品 a[N][N]的转置矩阵 a2[N][N]的各列和A2[N];        orgny2(y);

        cout(a,z,y);

        

}

⒉ orgn.cpp文件清单

const int N=4;

void orgn(double a3[N],double x[N],double d[N])

{

    for(int i=0;i        a3[i]=x[i]-d[i];      //总投入矩阵x[N]与 固定资产折旧d[N]的差

}

⒊ orgnz.cpp文件清单

const int N=4;

void orgnz(double A1[N],double a3[N],double z[N])

{

    for(int i=0;i        z[i]=a3[i]-A1[i];

}

⒋ orgny.cpp文件清单

const int N=4;

void orgny(double y[N],double x[N],double A2[N])

{

    for(int i=0;i        y[i]=x[i]-A2[i];       //各部门最终产品y[N]

}

⒌ orgny2.cpp文件清单

#include

const int N=4;

void orgny2(double y[N])

{

    for(int i=0;i        cout<}

⒍ sum1.cpp文件清单

const int N=4;

void sum1(double a[N][N],double A1[N])

{

    for(int i=0;i    {

        A1[i]=0;

        for(int j=0;j             A1[i]+=a[j][i];        //对矩阵a[N][N]各列求和

    }

}

⒎ sum2.cpp文件清单

const int N=4;

void sum2(double a2[N][N],double a[N][N],double A2[N])

{

    for(int i=0;i    {

        A2[i]=0;

        for(int j=0;j        {

            a2[j][i]=a[i][j];          //对矩阵a[N][N]进行转置

            A2[i]+=a2[j][i];          //对转置矩阵a2[N][N]各列求和

        }

    }

}

 ⒏ input.cpp文件清单

#include

const int N=4;

void input(double b[N][N],double x[N],double d[N])

{

    cout<<"请输入直接消耗系数矩阵b";

    for(int i=0;i        for(int j=0;j            cin>>b[i][j]; //输入直接消耗系数矩阵b[N][N]

    cout<<"请输入总投入矩阵x";

        for(i=0;i            cin>>x[i]; // 输入总投入矩阵x[N]

    cout<<"请输入固定资产折旧d";

        for(i=0;i            cin>>d[i]; //输入固定资产折旧d[N]

}

 ⒐ out.cpp文件清单

#include

const int N=4;

void out(double a[N][N],double z[N],double y[N])

{

    cout<<"----y的转置矩阵---"<cout<<"----a的转置矩阵---"<        for(i=0;i        {

            for(int j=0;j                cout<                cout<     cout<<"---各部门最终产品y---"<        for(int i=0;i            cout<     cout<<"-----各部门中间产品(aij)---"<        for(i=0;i        {

            for(int j=0;j                cout<                cout<        }

     cout<<"----各部门新创造价值z---"<        for(i=0;i            cout<        cout<      

        }

      

}

⒑ orgna.cpp文件清单

const int N=4;

void orgna(double a[N][N],double b[N][N],double x[N])

{

    for(int i=0;i        for(int j=0;j            a[i][j]=b[i][j]*x[j];

}

⒒ leader.h文件清单

const int N=4;

void input(double b[N][N],double x[N],double d[N]);

void sum2(double a2[N][N],double a[N][N],double A2[N]);

void sum1(double a[N][N],double A1[N]);

void orgnz(double A1[N],double a3[N],double z[N]);

void orgny2(double y[N]);

void orgny(double y[N],double x[N],double A2[N]);

void orgna(double a[N][N],double b[N][N],double x[N]);

void orgn(double a3[N],double x[N],double d[N]);

void out(double a[N][N],double z[N],double y[N]);

四、对该设计题目提出的方案

1、对自己完成程序进行自我评价:

基本实现使用模块化设计和C++的思想来完成程序设计,并且通过矩阵求和、转置和求列和的操作解决了投入产出的实际问题.进行设计时总是有操作错误,运行不出正确的结果,导致效率很低,编写的程序不是很完美,但还是坚持下去了。经过一周的努力,不仅将基本要求完成,也基本完成了创新要求,顺利完成任务,使我增加了对C++的信心,有了更大的提高。 

2、对课题提出更完善的方案

应设法实现同种函数多次调用。对所有调用函数分别建立不同的.cpp文件,对主函数和头文件(即.h文件)分别建立不同的文件,以便使程序简洁明了,我们更好理解程序的过程。

五、收获及心得体会

1、在本次课程设计中,我通过对课本的学习、上网查资料、问同学等多种途径,解决了这次的问题,顺利完成了任务,提高了自学能力,增加了我对C++的兴趣,对我以后的学习有很大的帮助。

2、 收获和心得体会 

通过本次课程设计,我学会了如何建立不同的.cpp文件和头文件,并且还学会如何把它们连接运行,达到自己的输出要求,对定义数组和调用函数的知识更了解,清楚和明白,编程过程中也锻炼了自己的耐心和增强了做事的信心,使我懂得了做事情要有耐心,虽然进行了很长时间,但我感觉受益匪浅。本次计算机软件课程设计使我更加系统地理解和掌握了C++语言的函数间参数传递方法、数组等的运用,学会了函数的调用、运行,一、二维数组的操作,提升了我归纳、总结、创新等能力。

日期: 2010年 6 月  28日

 

未进行创新的基本程序

#include

const int N=4;

void orgna(double a[N][N],double b[N][N],double x[N]);

void sum1(double a[N][N],double A1[N]);

void orgn(double a3[N],double x[N],double d[N]);

void orgnz(double A1[N],double x[N],double d[N]);

void sum2(double a2[N][N],double a[N][N],double A2[N]);

void orgny(double y[N],double x[N],double A2[N]);

void orgny2(double y[N]);

void main()

{

 请输入直接消耗系数矩阵b";

 

  

 请输入总投入矩阵x";

 

  

 请输入固定资产折旧d";

 

  

 

 各部门中间产品(aij)---"< 

 

  

   

   

 

 

 

 

 各部门新创造价值z---"< 

  

 

 

cout<<"----a的转置矩阵---"< 

 

  

   

   

 

 

cout<<"---各部门最终产品y---"< 

  

 的转置矩阵---"< 

}

void orgna(double a[N][N],double b[N][N],double x[N])//用于求中间产品矩阵a[i,j]=b[i,j]*x[j]

{

 

  

}

void sum1(double a[N][N],double A1[N])//用于求A1=sum(A), 即A 矩阵各列的和

{

 

 

 

}

void orgn(double a3[N],double x[N],double d[N])

{

 

}

void orgnz(double A1[N],double a3[N],double z[N])

{

 

}

void sum2(double a2[N][N],double a[N][N],double A2[N])//用于求A2=sum(A')

{

{

 

 

 

   

  

 

}

void orgny(double y[N],double x[N],double A2[N])//用于计算Y1=X-A2

{

 

}

void orgny2(double y[N])

{

 

}

 

进行创新后的程序中各个文件总括:

#include

#include "leader.h"

void main()

{

    const int N=4;

    double a[N][N],b[N][N],x[N],d[N],A1[N],a3[N],a2[N][N],A2[N],y[N],z[N];

     input(b,x,d);             //各部门新创造价值 z[N] ;各部门中间产品 a [N][N] 

        orgna(a,b,x);            // 固定资产折旧d[N]; 直接消耗系数矩阵b[N][N];

    sum1(a,A1);            //总投入矩阵x[N];各部门最终产品y[N];

orgn(a3,x,d);         //总投入与固定资产折旧的差 a3[N];

        orgnz(A1,a3,z);         //各部门中间产品 a [N][N]的转置矩阵 a2[N][N];

    sum2(a2,a,A2);         //各部门中间产品 a [N][N]各列和 A1[N];

        orgny(y,x,A2);       //各部门中间产品 a[N][N]的转置矩阵 a2[N][N]的各列和A2[N];

        orgny2(y);

        out(a,z,y);

        

}

const int N=4;

void input(double b[N][N],double x[N],double d[N]);

void sum2(double a2[N][N],double a[N][N],double A2[N]);

void sum1(double a[N][N],double A1[N]);

void orgnz(double A1[N],double a3[N],double z[N]);

void orgny2(double y[N]);

void orgny(double y[N],double x[N],double A2[N]);

void orgna(double a[N][N],double b[N][N],double x[N]);

void orgn(double a3[N],double x[N],double d[N]);

void out(double a[N][N],double z[N],double y[N]);

#include

const int N=4;

void input(double b[N][N],double x[N],double d[N])

{

    cout<<"请输入直接消耗系数矩阵b";

    for(int i=0;i        for(int j=0;j            cin>>b[i][j]; //输入直接消耗系数矩阵b[N][N]

    cout<<"请输入总投入矩阵x";

        for(i=0;i            cin>>x[i]; // 输入总投入矩阵x[N]

    cout<<"请输入固定资产折旧d";

        for(i=0;i            cin>>d[i]; //输入固定资产折旧d[N]

}

const int N=4;

void orgn(double a3[N],double x[N],double d[N])//用于计算Y1=X-A2

{

    for(int i=0;i        a3[i]=x[i]-d[i];

}

const int N=4;

void orgna(double a[N][N],double b[N][N],double x[N])

{

    for(int i=0;i        for(int j=0;j            a[i][j]=b[i][j]*x[j];

}

const int N=4;

void orgny(double y[N],double x[N],double A2[N])

{

    for(int i=0;i        y[i]=x[i]-A2[i];

}

#include

const int N=4;

void orgny2(double y[N])

{

    for(int i=0;i        cout<}

const int N=4;

void orgnz(double A1[N],double a3[N],double z[N])

{

    for(int i=0;i        z[i]=a3[i]-A1[i];

}

const int N=4;

void sum1(double a[N][N],double A1[N])//用于求A1=sum(A), 即A 矩阵各列的和

{

    for(int i=0;i    {

        A1[i]=0;

        for(int j=0;j             A1[i]+=a[j][i];

    }

}

const int N=4;

void sum2(double a2[N][N],double a[N][N],double A2[N])//用于求A2=sum(A')

{

    for(int i=0;i    {

        A2[i]=0;

        for(int j=0;j        {

            a2[j][i]=a[i][j];    

            A2[i]+=a2[j][i];

        }

    }

}

#include

const int N=4;

void out(double a[N][N],double z[N],double y[N])

{

    cout<<"----y的转置矩阵---"<    

cout<<"---各部门最终产品y---"<        for(int i=0;i            cout<     cout<<"-----各部门中间产品(aij)---"<        for(i=0;i        {

            for(int j=0;j                cout<                cout<        }

    

cout<<"----各部门新创造价值z---"<        for(i=0;i            cout<        cout< cout<<"----a的转置矩阵---"<        for(i=0;i        {

            for(int j=0;j                cout<                cout<        }

      }

文档

投入产出问题(矩阵求差、矩阵与数乘)

一、题目:投入产出问题(矩阵求差、矩阵与数乘)二、设计思路⒈总体设计1)程序的功能:利用数组操作,根据总投入=总产出的原则计算投入产出问题。2)系统总体结构:建立一个工作空间bai.dsw,设计了十个.cpp文件:如orgna.cpp:算各部门中间产品矩阵a;orgn.cpp:计算总投入与固定资产折旧的差;orgnz.cpp:计算各部门新创造价值;orgny.cpp:计算各部门最终产品;orgny2.cpp:计算各部门最终产品y的转置矩阵;sum1.cpp:计算a矩阵各列和;sum2.cpp:
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top