题目:利用矩阵操作,计算投入产出问题(一) 跪求
发布网友
发布时间:2022-04-26 20:22
我来回答
共3个回答
热心网友
时间:2023-10-28 23:03
1
#include<iostream.h>
#include"all.h"
void main()
{
double A[4][4],ASUM[4],A1SUM[4],B[4][4],D[4],X[4],Z[4],Y1[4],Y[4][1];
cout<<"请输入生产消耗关系矩阵A:"<<endl;
enter1(A,4);
cout<<"请输入固定资产折旧向量D:"<<endl;
enter2(D,4);
cout<<"新创造价值向量Z:"<<endl;
enter2(Z,4);
sum1(A,ASUM,4);//计算sum(A),并存入数组ASUM中
sub1(X,ASUM,D,Z,4);//计算X=ASUM+D+Z
sum2(A,A1SUM,4);//计算A1SUM=sum(A')
sub2(X,A1SUM,Y1,4);
mul(B,A,X,4);//计算直接消耗系数矩阵B
tra(Y,Y1);
cout<<"总投入向量X:"<<endl;
output2(X,4);
cout<<"最终产出向量Y:"<<endl;
output3(Y);
cout<<"直接消耗系数矩阵B:"<<endl;
output1(B,4);
}
2
#include<iostream.h>
void enter1(double a[][4],int n)//输入函数1,功能是请输入生产消耗关系矩阵A
{
for(int i=0;i<n;i++)
{
for(int j=0;j<4;j++)
cin>>a[i][j];
cout<<endl;
}
}
void enter2(double a[],int n)//输入函数2,功能是输入新创造价值向量Z或固定资产折旧矩阵D
{
for(int i=0;i<n;i++)
cin>>a[i];
}
3
#include<iostream.h>
void sum1(double a[][4],double b[],int n)//用于求A1=sum(A), 即A 矩阵各列的和
{
for(int i=0;i<4;i++)
{
b[i]=0;
for(int j=0;j<n;j++)
b[i]+=a[j][i];
}
}
void sum2(double a[][4],double b[],int n)//用于求A2=sum(A')
{
for(int i=0;i<n;i++)
{
b[i]=0;
for(int j=0;j<4;j++)
b[i]+=a[i][j];
}
}
4
#include<iostream.h>
void sub1(double a[],double b[],double c[],double d[],int n)//用于求X=Z+ASUM+D
{
for(int i=0;i<n;i++)
a[i]=b[i]+c[i]+d[i];
}
void sub2(double a[],double b[],double c[],int n)//用于计算Y1=X-A2
{
for(int i=0;i<n;i++)
c[i]=a[i]-b[i];
}
5
#include<iostream.h>
void tra(double a[4][1],double b[4])//用于求Y=Y1'
{
for(int i=0;i<4;i++)
a[i][0]=b[i];
}
6
#include<iostream.h>
void mul(double a[][4],double b[][4],double c[4],int n)//用于求直接消耗系数矩阵B(i,j)=A(i,j)/X(j)
{
for(int i=0;i<n;i++)
for(int j=0;j<4;j++)
a[i][j]=b[i][j]/c[j];
}
7
#include<iostream.h>
void output1(double a[][4],int n)//输出函数一,
{
for(int i=0;i<n;i++)
{
for(int j=0;j<4;j++)
cout<<a[i][j]<<"\t";
cout<<endl;
}
}
void output2(double a[],int n)
{
for(int i=0;i<4;i++)
cout<<a[i]<<"\t";
cout<<endl;
}
void output3(double a[4][1])//输出函数二,
{
for(int i=0;i<4;i++)
cout<<a[i][0]<<endl;
}
8
void enter1(double a[][4],int n);
void enter2(double a[],int n);
void sum1(double a[][4],double b[],int n);
void sub1(double a[],double b[],double c[],double d[],int n);
void sum2(double a[][4],double b[],int n);
void sub2(double a[],double b[],double c[],int n);
void mul(double a[][4],double b[][4],double c[],int n);
void tra(double a[4][1],double b[4]);
void output1(double a[][4],int n);
void output2(double a[],int n);
void output3(double a[4][1]);
热心网友
时间:2023-10-28 23:04
这个可以做,但是需要时间的!麻烦的的很!
热心网友
时间:2023-10-28 23:04
及追问请帮帮忙吧 您就拉兄弟一把吧 希望各位高手尽可能写详细点,不胜感激