#ifndef MUTUAL_INDUCTANCE_H_INCLUDED #define MUTUAL_INDUCTANCE_H_INCLUDED void Mutual_inductance(double freq,double R1,double R2,double R3,double L1,double L2,double L3,double Le1,double Le2,double Le3); #endif // MUTUAL_INDUCTANCE_H_INCLUDED
#include "Mutual_inductance.h" #include <math.h> #include <complex> void Mutual_inductance(double freq, double R1,double R2,double R3,double L1,double L2,double L3,double Le1,double Le2,double Le3) { const double pi =3.141592653589793238463; double w = 2*pi*freq; std::complex M12= sqrt(-Le1*(R2^2)/(L2*(w^2)) - Le1*L2 + L1*(R2^2)/(L2*(w^2)) + L1*L2); std::complex M13 = sqrt(-Le2*R3^2)/(L3*(w^2)) - Le2*L3 + L1*(R3^2)/(L3*(w^2)) + L1*L3); std::complex M23 = sqrt(-Le3*(R3^2)/(L3*(w^2)) - Le3*L3 + L2*(R3^2)/(L3*(w^2)) + L2*L3); }
#include <complex> #include <cmath> // never math.h void mutualInductance(double freq, double r1, double r2, double r3, double l1, double l2, double l3, double le1, double le2, double le3) { const double w = 2 * M_PI * freq; // I would put something like: const double w2 = w*w, to avoid recomputing w*w 6 times... std::complex<double> m12 = sqrt(-le1*(r2*r2)/(l2*(w*w)) - le1*l2 + l1*(r2*r2)/(l2*(w*w)) + l1*l2); std::complex<double> m13 = sqrt(-le2*(r3*r3)/(l3*(w*w)) - le2*l3 + l1*(r3*r3)/(l3*(w*w)) + l1*l3); std::complex<double> m23 = sqrt(-le3*(r3*r3)/(l3*(w*w)) - le3*l3 + l2*(r3*r3)/(l3*(w*w)) + l2*l3); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionun chemin d'accès dynamique à mon fichier
#include <string> #include <sstream> #include <iostream> #include <vector> #include <fstream> #include <clocale> #include <cmath> #include "EigenResources\Eigenvalues" using namespace Eigen; template <class charT, charT sep> class punct_facet: public std::numpunct<charT> { protected: charT do_decimal_point() const { return sep; } }; double comaStod(std::string const& s) { std::istringstream iss(s); iss.imbue(std::locale(std::cout.getloc(), new punct_facet<char, ','>)); double d; if (!(iss >> d)) throw std::invalid_argument("invalid double"); return d; } int main() { MatrixXd ma_matrice; const std::string filename = "Measurements.csv"; std::ifstream file(filename); // on ouvre en lecture if (!file) { std::cerr << "Can't open file " << filename << std::endl; return 1; } std::string line; // déclaration d'une chaîne qui contiendra la ligne lue std::vector<std::vector<double>> array; while (std::getline(file, line)) // on met dans "line" la ligne { std::vector<double> v; std::string field; std::stringstream ss(line); while (std::getline(ss, field, ';')) { try { v.push_back(comaStod(field)); } catch (std::invalid_argument& e) { std::cerr << "Can't convert " << field << " to double (" << e.what() << ")" << std::endl; //•cerr est la sortie standard des erreurs continue; } } if (!v.empty()) array.push_back(v); } //affichage (deux boucles for) std::cout << "Vec:\n"; for (size_t i=0; i<array.size(); ++i) { for (size_t j=0; j<array[i].size(); ++j) { // std::cout << array[i][j] << " "; ma_matrice = array [i][1]; //affectation } std::cout << "\n"; } return 0; }