{"id":1274,"date":"2016-08-26T16:40:50","date_gmt":"2016-08-26T13:40:50","guid":{"rendered":"http:\/\/java.mazurok.com\/?p=1274"},"modified":"2016-09-20T21:36:03","modified_gmt":"2016-09-20T18:36:03","slug":"complex-numbers","status":"publish","type":"post","link":"https:\/\/java.mazurok.com\/?p=1274","title":{"rendered":"\u041a\u043b\u0430\u0441\u0441 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b"},"content":{"rendered":"<p><strong>\u0417\u0430\u0434\u0430\u0447\u0430.<\/strong><\/p>\n<p>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0439\u0442\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438.<\/p>\n<p><strong>\u0422\u0435\u0441\u0442\u044b.<\/strong><\/p>\n<table style=\"height: 323px;width: 361px\">\n<tbody>\n<tr>\n<td style=\"width: 120px\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430<\/td>\n<td style=\"width: 76px\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f<\/td>\n<td style=\"width: 145px\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 120px\" rowspan=\"4\">z1 = 2 + 3i<\/p>\n<p>z2 = -1 + 2i<\/td>\n<td style=\"width: 76px\">+<\/td>\n<td style=\"width: 145px\">1.0 + 5.0i<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 76px\">&#8212;<\/td>\n<td style=\"width: 145px\">3.0 + i<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 76px\">*<\/td>\n<td style=\"width: 145px\">-8.0 + i<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 76px\">\/<\/td>\n<td style=\"width: 145px\">0.8 &#8212; 1.4i<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 120px\">3 + 4i<\/td>\n<td style=\"width: 76px\">\u221a<\/td>\n<td style=\"width: 145px\">\u00a02.0 + i,<\/p>\n<p>-2.0 -i<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 120px\">-1 + 2i<\/td>\n<td style=\"width: 76px\">pow<\/td>\n<td style=\"width: 145px\">-3.0 &#8212; 4.0i<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u041a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/strong><\/p>\n<pre class=\"lang:java decode:true \">\/**\r\n * &lt;h1&gt;Complex Numbers&lt;\/h1&gt;\r\n * The ComplexNumber program implements an application that\r\n * allows to calculate complex numbers\r\n **\/\r\n\r\npublic class ComplexNumber {\r\n\r\n    \/**\r\n     * Represents the real part of a complex number\r\n     *\/\r\n    private double re;\r\n\r\n    \/**\r\n     * Represents imaginary part of a complex number\r\n     *\/\r\n    private double im;\r\n\r\n    public ComplexNumber(double re, double im) {\r\n        this.re = re;\r\n        this.im = im;\r\n    }\r\n\r\n    public double getRe() {\r\n        return re;\r\n    }\r\n\r\n    public double getIm() {\r\n        return im;\r\n    }\r\n\r\n    \/**\r\n     * @return modulus (or absolute value) of the number\r\n     *\/\r\n    private double getModule() {\r\n        return Math.sqrt(this.re * this.re + this.im * this.im);\r\n    }\r\n\r\n    \/**\r\n     * Allows to get the sum of two complex numbers given in the parameters.\r\n     *\r\n     * @return the new complex number\r\n     *\/\r\n    public static ComplexNumber sum(ComplexNumber cn1, ComplexNumber cn2) {\r\n        return new ComplexNumber(cn1.getRe() + cn2.getRe(), cn1.getIm() + cn2.getIm());\r\n    }\r\n\r\n    \/**\r\n     * Allows to get the product of two complex numbers given in the parameters.\r\n     *\r\n     * @return the new complex number\r\n     *\/\r\n    public static ComplexNumber multiply(ComplexNumber cn1, ComplexNumber cn2) {\r\n        return new ComplexNumber(cn1.getRe() * cn2.getRe() - cn1.getIm() * cn2.getIm(), cn1.getRe() * cn2.getIm() + cn1.getIm() * cn2.getRe());\r\n    }\r\n\r\n    \/**\r\n     * Allows to get the difference of two complex numbers given in the parameters.\r\n     *\r\n     * @return the new complex number\r\n     *\/\r\n    public static ComplexNumber subtract(ComplexNumber cn1, ComplexNumber cn2) {\r\n        return new ComplexNumber(cn1.getRe() - cn2.getRe(), cn1.getIm() - cn2.getIm());\r\n    }\r\n\r\n    \/**\r\n     * Allows to get the product of two complex numbers given in the parameters.\r\n     *\r\n     * @return the new complex number\r\n     *\/\r\n    public static ComplexNumber divide(ComplexNumber cn1, ComplexNumber cn2) {\r\n        ComplexNumber temp = new ComplexNumber(cn2.getRe(), (-1) * cn2.getIm());\r\n        temp = ComplexNumber.multiply(cn1, temp);\r\n        double denominator = cn2.getRe() * cn2.getRe() + cn2.getIm() * cn2.getIm();\r\n        return new ComplexNumber(temp.getRe() \/ denominator, temp.getIm() \/ denominator);\r\n    }\r\n\r\n    \/**\r\n     * This function allows to get the argument of complex number to represent it in trigonometric form\r\n     *\r\n     * @return argument of complex number\r\n     *\/\r\n    private double GetArg() {\r\n        if (this.re &gt; 0) {\r\n            return Math.atan(im \/ re);\r\n        } else {\r\n            if (re &lt; 0 &amp;&amp; im &gt; 0) {\r\n                return Math.PI + Math.atan(im \/ re);\r\n            } else {\r\n                return -Math.PI + Math.atan(im \/ re);\r\n            }\r\n        }\r\n    }\r\n\r\n    \/**\r\n     * Allows to raise complex number to specified power with the help of de Moivre's formula.\r\n     *\r\n     * @param cn    needed complex number (the base)\r\n     * @param power the exponent\r\n     * @return the new complex number\r\n     *\/\r\n    public static ComplexNumber pow(ComplexNumber cn, int power) {\r\n        double factor = Math.pow(cn.getModule(), power);\r\n        return new ComplexNumber(factor * Math.cos(power * cn.GetArg()), factor * Math.sin(power * cn.GetArg()));\r\n    }\r\n\r\n    \/**\r\n     * The function of getting square roots of complex number cn\r\n     *\r\n     * @return an array of pair of square roots\r\n     *\/\r\n    public static ComplexNumber[] sqrt(ComplexNumber cn) {\r\n        double a = cn.getModule() \/ 2;\r\n        ComplexNumber pos = new ComplexNumber(Math.sqrt(a + cn.getRe() \/ 2), Math.signum(cn.getIm()) * Math.sqrt(a - cn.getRe() \/ 2));\r\n        ComplexNumber neg = new ComplexNumber((-1) * pos.getRe(), (-1) * pos.getIm());\r\n        ComplexNumber[] answer = {pos, neg};\r\n        return answer;\r\n    }\r\n\r\n    \/**\r\n     * Defines and returns the sign required for correct record of a number\r\n     *\r\n     * @return string with appropriate sign\r\n     *\/\r\n    private String sign() {\r\n        if (im &gt; 0) return \" + \";\r\n        else return \" - \";\r\n    }\r\n\r\n    @Override\r\n    public String toString() {\r\n        String string;\r\n        if (im == 1 || im == -1) {\r\n            if (re == 0) {\r\n                string = sign() + \"i\";\r\n            } else {\r\n                string = Double.toString(re) + sign() + \"i\";\r\n            }\r\n        } else {\r\n            string = Double.toString(re) + sign() + Double.toString(Math.abs(im)) + \"i\";\r\n        }\r\n        return string;\r\n    }\r\n\r\n    @Override\r\n    public boolean equals(Object obj) {\r\n        if (this.getClass() != obj.getClass() || obj == null)\r\n            return false;\r\n        return true;\r\n    }\r\n\r\n    \/**\r\n     * In this function main test on the correctness of this program are done.\r\n     * All operations on complex numbers are shown.\r\n     *\/\r\n    public static void main(String[] args) {\r\n        ComplexNumber x = new ComplexNumber(2, 3);\r\n        ComplexNumber y = new ComplexNumber(-1, 2);\r\n        System.out.println(\"z1 = \" + x + \",     z2 = \" + y);\r\n\r\n        ComplexNumber z;\r\n        z = ComplexNumber.sum(x, y);\r\n        System.out.println(\"+ : \" + z);\r\n\r\n        z = ComplexNumber.subtract(x, y);\r\n        System.out.println(\"- : \" + z);\r\n\r\n        z = ComplexNumber.divide(x, y);\r\n        System.out.println(\"\/ : \" + z);\r\n\r\n        z = ComplexNumber.multiply(x, y);\r\n        System.out.println(\" * :\" + z);\r\n\r\n        z = ComplexNumber.pow(y, 2);\r\n        System.out.println(\"Pow 2 of z2 : \" + z);\r\n\r\n        ComplexNumber b = new ComplexNumber(3, 4);\r\n        ComplexNumber[] ans = ComplexNumber.sqrt(b);\r\n        System.out.println(\"Sqrt of \" + b + \" = \" + ans[0] + \",  \" + ans[1]);\r\n\r\n    }\r\n}\r\n<\/pre>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 <a href=\"http:\/\/ideone.com\/oErQlP\"> Ideone<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430\u0434\u0430\u0447\u0430. \u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0439\u0442\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438. \u0422\u0435\u0441\u0442\u044b. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 z1 = 2 + 3i z2 = -1 + 2i + 1.0 + 5.0i &#8212; 3.0 + i * -8.0 + i \/ 0.8 &#8212; 1.4i 3 + 4i \u221a \u00a02.0 + i, -2.0 -i -1 &hellip; <a href=\"https:\/\/java.mazurok.com\/?p=1274\" class=\"more-link\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":84,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[181,163],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts\/1274"}],"collection":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/users\/84"}],"replies":[{"embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1274"}],"version-history":[{"count":3,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts\/1274\/revisions"}],"predecessor-version":[{"id":1421,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=\/wp\/v2\/posts\/1274\/revisions\/1421"}],"wp:attachment":[{"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1274"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1274"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/java.mazurok.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}