⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yn.cpp

📁 电路节点导纳矩阵的计算机生成法源程序。可计算少于20个节点的电路方程。
💻 CPP
字号:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define X 50
static int n,b,c,ty[X],br[X],f[X],t[X];
float va1[X],va2[X];
float vay[X],vai[X];
float ynr[X][X],jnr[X];

void input()
{
	 int k;
	 char filename[10];
	 FILE *fp;
	 cout<<"\nplease intput data file name\n";
	 cin>>filename;
	 if((fp=fopen(filename,"r+"))==NULL)
	 {
		 cout<<"cannot open file\n";
		 exit(0);
	 }
	 fscanf(fp,"%d%d%d",&n,&b,&c);
	 for(k=1;k<=c;k++)
	     fscanf(fp,"%d%d%f%f",&ty[k],&br[k],&va1[k],&va2[k]);
	 
	 for(k=1;k<=b;k++)
	     fscanf(fp,"%d%d",&f[k],&t[k]);
   	 fclose(fp);
}

void makeyj()
{
	 int i,j;
	 for(i=1;i<=c;i++)
	 {
		 if(ty[i]==0)
		 {
			 vay[i]=1/va1[i];
		 }
		 else if(ty[i]==1)
		 {
			 vay[i]=va1[i];
			 

		 }
		 else if(ty[i]==2)
		 {
          vai[i]=va1[i];
         }
		 else if(ty[i]==3)
		 {
          vai[i]=va1[i];
         }
		 
	 }
	 
	 for(i=1;i<=c;i++)
	 {
		 if(ty[i]==0||ty[i]==1)
		 {
			 ynr[f[br[i]]][f[br[i]]]+=vay[i];
             ynr[t[br[i]]][t[br[i]]]+=vay[i];
			 ynr[f[br[i]]][t[br[i]]]-=vay[i];
			 ynr[t[br[i]]][f[br[i]]]-=vay[i];

		 }
		 else if(ty[i]==2)
		  
			 for(j=1;j<=c;j++)
			 {
			 
				 if((br[j]==br[i])&&(ty[j]==0||ty[j]==1))
				 
				 {   
					 
					 jnr[f[br[i]]]-=vai[i]*vay[j];
					 jnr[t[br[i]]]+=vai[i]*vay[j];
					 
				 }
			 }

		else if(ty[i]==3)
		{
			jnr[f[br[i]]]+=vai[i];
			jnr[t[br[i]]]-=vai[i];

		}
		
	 }
}
void outputyn()
{
	int i,k;
	printf("array Yn is:\n");
    for(i=1;i<n;i++)
	{
		for(k=1;k<n;k++)
		{ 
			printf("%10f",ynr[i][k]);

		}
		printf("\n");
	}
}
void outputjn()
{
	int i;
	printf("array Jn is:\n");
    for(i=1;i<n;i++)
	{
		printf("%10f",jnr[i]);
        printf("\n");
	}
}

void main()
{
	
	input();
	makeyj();
	outputyn();
	outputjn();
	  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -