阻抗是一個復數 Z,定義為 Z = R Xi,其中 R 是有功電阻,X 是無功電阻,也可以是負數。如果我們有 n 個元素的并聯連接,其阻抗為 Z1、Z2、...、Zn ,則并聯連接 Z 的總阻抗計算為 Z = 1 / (1 / Z1 1 / Z2 ... 1 / Zn) . 換句話說,情況類似于電阻并聯,除了這里我們使用復阻抗。程式需要通過視在電阻Zk和相移來設定所有阻抗Zk而不是通過有源電阻和無功電阻來設定fik,其中 Zk = Zk * e ^ (ifik)。公式 程式最終應該顯示整個并聯連接的表觀電阻和相移。
輸出:
輸入元素數量:2
Z1 = 10.5
fi1 = 30
Z2 = 2.8
fi2 = -47.6
并聯的 Z = 2.57147 和 fi = -33.7613。
- 注意:您將需要 polar()、abs() 和 arg() 函式
代碼:
#include <iostream>
#include <complex>
int main()
{
int n,i=0;
double z,fi;
std::complex<double>a;
std::complex<double>sum=std::complex<double>(0,0);
std::complex<double>one=std::complex<double>(1,1);
std::cout << "Enter number of elements: ";
std::cin >> n;
for(;;)
{
i ;
std::cout<<"Z"<<i<<" = ";
std::cin>>z;
std::cout<<"fi"<<i<<" = ";
std::cin>>fi;
a=std::polar(z,fi);
a=one/a;
sum =a;
if(i==n)break;
}
sum=one/sum;
std::cout<<"Parallel connection has R = "<<std::abs(sum)<<" and X = "<<std::arg(sum)<<".";
return 0;
}
這是我的輸出:
輸入元素數量:2
Z1 = 10.5
fi1 = 30
Z2 = 2.8
fi2 = -47.6
并聯有 R = 3.21929 和 X = 2.91565。
我的公式不正確。你能幫我解決這個問題嗎?我不知道如何將公式轉換為代碼。
uj5u.com熱心網友回復:
簡單的解決方案:
#include <iostream>
#include <complex>
int main()
{
int n,i=0;
double z,zz,fi;
const double PI=4*atan(1);
std::complex<double>Z,sum;
std::cout << "Enter number of elements: ";
std::cin >> n;
std::cout<<std::endl;
for(;;)
{
i ;
std::cout<<"Z"<<i<<" = ";
std::cin>>z;
std::cout<<"fi"<<i<<" = ";
std::cin>>fi;
fi=fi*PI/180;
Z=std::polar(z,fi);
sum=sum (1./Z);
if(i==n)break;
}
Z=1./sum;
std::cout<<"Parallel connection has R = "<<std::abs(Z)<<" and X = "<<std::arg(Z)*180/PI<<".";
return 0;
}
輸出:
Enter number of elements: 2
Z1 = 10.5
fi1 = 30
Z2 = 2.8
fi2 = -47.6
Parallel connection has R = 2.57147 and X = -33.7613.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/441734.html
