MoM(五)解矩阵方程
生活随笔
收集整理的這篇文章主要介紹了
MoM(五)解矩阵方程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在阻抗矩陣填充之后,接下來就是解矩陣方程了。后期在補上公式,先上代碼。
注意:方程求得解是??函數的系數。
#pragma once #include<iostream> #include<stdio.h> #include<armadillo> #include<math.h> #include<complex> #include<time.h> #include<cmath> #include"FillZmat.h"using namespace arma; using namespace std;extern double k; extern mat basis_list; extern cube element_list; extern int elem_num; extern int rwg_num; extern mat Center; extern vec Area;extern mat CommonEdgeP; extern mat CommonEdgeN; extern vec EdgeLength; //公共邊長度 extern vec Vertex_pos; // 正三角形的 非公共邊點 編號 extern vec Vertex_naga;extern cube Center_; //九點積分劃分后的小三角形重心extern mat Pho_Pos; //對于正element三角形 非公共邊點到重心的向量坐標 extern mat Pho_Naga; //對于負element三角形 非公共邊點到重心的向量坐標 extern cube Pho_Pos_; //對于正element三角形 九點劃分后 非公共邊點到 小三角形重心的向量坐標 extern cube Pho_Naga_; //對于負element三角形 九點劃分后 非公共邊點到 小三角形重心的向量坐標extern cx_mat Z; extern rowvec Pol, dz; //定義入射波的極化方向和入射方向(only for r_s = 1) extern double FeedVoltage; //定義饋電電壓 extern rowvec FeedEdge; //定義饋電邊的EdgeElement編號rowvec kv(1, 3); cx_colvec I, V; double P_rad = 0;void SolveMat() {kv = k * dz;FillmatZ();double ScalarTemp = 0.0;cx_rowvec Einc_Pos(1, 3), Einc_Nega(1, 3); cx_colvec Vv(rwg_num, 1), Ii(rwg_num, 1);complex<double>EPho_Pos(0, 0), EPho_Nega(0, 0);for (int i = 0; i < rwg_num; i++) {ScalarTemp = as_scalar(kv * strans(Center.row(basis_list(i, 0))));Einc_Pos = Pol * exp(complex<double>(0, -ScalarTemp));ScalarTemp = as_scalar(kv * strans(Center.row(basis_list(i, 1))));Einc_Nega = Pol * exp(complex<double>(0, -ScalarTemp));EPho_Pos = as_scalar(Einc_Pos * strans(Pho_Pos.row(i)));EPho_Nega = as_scalar(Einc_Nega * strans(Pho_Naga.row(i)));Vv = EdgeLength(i) * (EPho_Pos / 2.0 + EPho_Nega / 2.0);}printf("\n 正在求解矩陣方程 ... \n");clock_t start = clock();Ii = solve(Z, Vv); //注意球的的解是 RWG函數 的系數clock_t end = clock();cout << endl << "解方程的時間為:" << (end - start) << "ms" << endl;V = Vv;I = Ii; }?
總結
以上是生活随笔為你收集整理的MoM(五)解矩阵方程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驾考记录之科目三(2021-06-16)
- 下一篇: OpenLayers教程十一:多源数据加