public void Sum() { Complex actual = number1.Sum(number2); Complex expected = new Complex(number1.re + number2.re, number1.im + number2.im); Assert.True(actual.Equals(expected)); }
public void TestMethod1() //тестирование класса Complex { Complex c1 = Complex.Create(4.5, -5.6); Assert.AreEqual(c1.r, 4.5); Assert.AreEqual(c1.i, -5.6); Complex c2 = Complex.Create(5.5, 6.6); Complex sum = Complex.Sum(c1, c2); Assert.AreEqual(sum.r, 10); Assert.AreEqual(sum.i, 1); Complex c3 = Complex.Create(2, 3); Complex c4 = Complex.Create(-1, 4); Complex mult = Complex.Multiplication(c3, c4); Assert.AreEqual(mult.r, -14); Assert.AreEqual(mult.i, 5); Complex c5 = Complex.Create(1, 2); Complex pow = Complex.Pow(c5, 3); Assert.AreEqual(pow.r, -11); Assert.AreEqual(pow.i, -2); Complex.Print(pow); Complex.Print(c3); Complex.PrintLine(pow); Complex.PrintLine(c3); }
public static void ExportMemoryUsage(string resultPath, Mpi mpi, INativeMemoryProvider memoryProvider, double frequency) { Complex localNativeMemory = (memoryProvider as MemoryProvider)?.GetAllocatedMemorySizeInBytes() / (1024 * 1024.0) ?? 0; var nativeMemory = new Complex[mpi?.Size ?? 1]; Complex localManagedMemory = GC.GetTotalMemory(false) / (1024 * 1024.0); var managedMemory = new Complex[mpi?.Size ?? 1]; Complex localLinuxMemory = (double)LinuxMemoryFileReader.GetTotalMemoryInMiB(); var linuxMemory = new Complex[mpi?.Size ?? 1]; mpi?.Gather(nativeMemory, localNativeMemory); mpi?.Gather(managedMemory, localManagedMemory); mpi?.Gather(linuxMemory, localLinuxMemory); if (mpi?.IsMaster ?? true) { string path = Path.Combine(resultPath, $"mem_info_mpi{mpi?.Size:0000}_freq{frequency}.dat"); Func <Complex, string> pr = v => $"{v.Real / 1024:######0.0000} GiB".PadLeft(16); using (var sw = new StreamWriter(path)) { sw.WriteLine($"MPI_proc\t\tNATIVE\t\tMANAGED\t\tSUMM\t\tLINUX"); sw.Write($"Total".PadRight(16)); sw.Write(pr(nativeMemory.Sum(c => c.Real))); sw.Write(pr(managedMemory.Sum(c => c.Real))); sw.Write(pr(nativeMemory.Sum(c => c.Real) + managedMemory.Sum(c => c.Real))); sw.Write(pr(linuxMemory.Sum(c => c.Real))); sw.WriteLine(); for (int i = 0; i < nativeMemory.Length; i++) { sw.Write($"{i}".PadRight(16)); sw.Write(pr(nativeMemory[i])); sw.Write(pr(managedMemory[i])); sw.Write(pr(nativeMemory[i] + managedMemory[i])); sw.Write(pr(linuxMemory[i])); sw.WriteLine(); } } } }
/// <summary> /// Сумма частичного ряда /// </summary> /// <param name="n0">Начальный номер члена ряда</param> /// <param name="nmax">Конечный номер члена ряда</param> /// <param name="f">Функция, сопоставляющая член ряда по номеру</param> /// <returns></returns> public static Complex Sum(int n0, int nmax, Func <int, Complex> f) { int tmp = nmax - n0 + 1; Complex[] mas = new Complex[tmp]; for (int i = 0; i < tmp; i++) { mas[i] = f(n0 + i); } Array.Sort(mas); return(mas.Sum()); }
private void button1_Click(object sender, EventArgs e) { Complex comp = new Complex(); _rp1 = comp.GetRealPart(realTB1.Text); _rp2 = comp.GetRealPart(realTB2.Text); _ip1 = comp.GetImaginaryPart(imagTB1.Text); _ip2 = comp.GetImaginaryPart(imagTB2.Text); if (comboBox1.SelectedIndex == 0) { _resofreal = comp.Sum(_rp1, _rp2); _resofimag = comp.Sum(_ip1, _ip2); _result = "а="+_resofreal+"+"+_resofimag+"i"; } else if (comboBox1.SelectedIndex == 1) { _resofreal = comp.Raznost(_rp1, _rp2); _resofimag = comp.Raznost(_ip1, _ip2); _result = "а=" + _resofreal + "+" + _resofimag + "i"; } else if (comboBox1.SelectedIndex == 2) { _result = comp.umnozhenie(_rp1, _rp2, _ip1, _ip2); } else if (comboBox1.SelectedIndex == 3) { _result = comp.delenie(_rp1, _rp2, _ip1, _ip2); } else if (comboBox1.SelectedIndex == 4) { _result = comp.sravnenie(_rp1, _rp2, _ip1, _ip2); } MessageBox.Show("1е комплексное число: а="+realTB1.Text+"+"+imagTB1.Text+"i\n2е комплексное число: а=" +realTB2.Text+"+"+imagTB2.Text+"i\nРезультат операции: "+ _result); }
public void WriteResults() { string m1 = string.Empty; string m2 = string.Empty; foreach (Element el in circuit.elements) { m1 += el.number; } circuit.elements.Sort(delegate(Element el1, Element el2) { return(el1.number.CompareTo(el2.number)); }); foreach (Element el in circuit.elements) { m2 += el.number; el.setResistance(w, el.type); } // MessageBox.Show(m1 + " \n" + m2); circuit.Resistance1 = ((Complex.Sum(circuit.elements[0].Resistance, circuit.elements[1].Resistance)) * circuit.elements[2].Resistance) / (Complex.Sum(circuit.elements[0].Resistance, circuit.elements[1].Resistance, circuit.elements[2].Resistance)); Resistanse_1.Text += circuit.Resistance1.ToString(); circuit.Resistance2 = ((circuit.elements[3].Resistance * circuit.elements[4].Resistance) / (Complex.Sum(circuit.elements[3].Resistance, circuit.elements[4].Resistance))); Resistanse_2.Text += circuit.Resistance2.ToString(); circuit.Resistance3 = ((Complex.Sum(circuit.elements[5].Resistance, circuit.elements[6].Resistance)) * circuit.elements[7].Resistance) / (Complex.Sum(circuit.elements[5].Resistance, circuit.elements[6].Resistance, circuit.elements[7].Resistance)); Resistanse_3.Text += circuit.Resistance3.ToString(); //Расчёт амплитуды контурных токов //I(I)max = E / Zэкв Zэкв - tempResistance1 //I(II)max = E / Zдел Zдел - tempResistance2 Complex tempResistance1 = new Complex(); tempResistance1 = circuit.Resistance3 + circuit.Resistance1 + ((circuit.Resistance1 * circuit.Resistance3) / circuit.Resistance2); Complex tempResistance2 = new Complex(); Complex Constant1 = new Complex(1, 0); // 1 в виде комплексного числа (1+0i) tempResistance2 = (circuit.Resistance1 + circuit.Resistance2) / (Constant1 + (circuit.Resistance2 / tempResistance1)); double Emax = circuit.power.Amplitude; //Ток вo 2 контуре circuit.I3 = new PowerSupply(Emax / Complex.Abs(tempResistance1), circuit.power.w / (2 * System.Math.PI), circuit.power.Phase + System.Math.Atan2(tempResistance1.Imaginary(), tempResistance1.Real())); Amperage_3.Text += circuit.I3.getValue(); //Ток в первом контуре circuit.I1 = new PowerSupply(Emax / Complex.Abs(tempResistance2), circuit.power.w / (2 * System.Math.PI), circuit.power.Phase + System.Math.Atan2(tempResistance2.Imaginary(), tempResistance2.Real())); Amperage_1.Text += circuit.I1.getValue(); //Ток во второой ветви I2=I1-I3; double a1, b1, a2, b2, a3, b3, Imax2, phase2; a1 = System.Math.Sqrt((circuit.I1.Amplitude * circuit.I1.Amplitude) / (1 + System.Math.Tan((circuit.I1.Phase * System.Math.PI) / 180) * System.Math.Tan((circuit.I1.Phase * System.Math.PI) / 180))); b1 = a1 * System.Math.Tan((circuit.I1.Phase * System.Math.PI) / 180); a3 = System.Math.Sqrt((circuit.I3.Amplitude * circuit.I3.Amplitude) / (1 + System.Math.Tan((circuit.I3.Phase * System.Math.PI) / 180) * System.Math.Tan((circuit.I3.Phase * System.Math.PI) / 180))); b3 = a3 * System.Math.Tan((circuit.I3.Phase * System.Math.PI) / 180); a2 = a1 - a3; b2 = b1 - b3; Complex temp = new Complex(a2, b2); Imax2 = Complex.Abs(temp); phase2 = System.Math.Atan2(b2, a2); circuit.I2 = new PowerSupply(Imax2, circuit.power.w / (2 * System.Math.PI), phase2); Amperage_2.Text += circuit.I2.getValue(); }