-
-
Notifications
You must be signed in to change notification settings - Fork 557
Update the description for the complex-numbers exercise #2496
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
ErikSchierboom
merged 18 commits into
exercism:main
from
jagdish-15:chnage-description-complex
Nov 20, 2024
Merged
Changes from 13 commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
6eb9269
Updating description.md
jagdish-15 f0e6fbd
Updating description.md
jagdish-15 1d6473b
Updating description.md
jagdish-15 d8a0cda
Updating description.md
jagdish-15 7ba41f3
Updating description.md
jagdish-15 7d46dcc
Updating description.md
jagdish-15 14e079d
Update exercises/complex-numbers/description.md
jagdish-15 738a0a1
Update exercises/complex-numbers/description.md
jagdish-15 ffb6d04
Update exercises/complex-numbers/description.md
jagdish-15 5d6fc06
Update exercises/complex-numbers/description.md
jagdish-15 80a5fad
Chnaging description of Complex-Number after suggestions
jagdish-15 f0da718
Chnaging description of Complex-Number after suggestions
jagdish-15 32d3e3d
Fixing consistancy issues
jagdish-15 e1e9bff
Changing description for complex-numbers
jagdish-15 d0ca860
Updating sescription of complex-numbers exercise for consistancy
jagdish-15 2c9e279
Updating description of complex-numbers
jagdish-15 ddf83b9
Updating description complex-numbers
jagdish-15 06a7242
Updating description for complex-number to fix formatting errors
jagdish-15 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,29 +1,97 @@ | ||
| # Description | ||
|
|
||
| A complex number is a number in the form `a + b * i` where `a` and `b` are real and `i` satisfies `i^2 = -1`. | ||
| A **complex number** is expressed in the form `z = a + b * i`, where: | ||
|
|
||
| `a` is called the real part and `b` is called the imaginary part of `z`. | ||
| The conjugate of the number `a + b * i` is the number `a - b * i`. | ||
| The absolute value of a complex number `z = a + b * i` is a real number `|z| = sqrt(a^2 + b^2)`. The square of the absolute value `|z|^2` is the result of multiplication of `z` by its complex conjugate. | ||
| - `a` is the **real part** (a real number), | ||
|
|
||
| The sum/difference of two complex numbers involves adding/subtracting their real and imaginary parts separately: | ||
| `(a + i * b) + (c + i * d) = (a + c) + (b + d) * i`, | ||
| `(a + i * b) - (c + i * d) = (a - c) + (b - d) * i`. | ||
| - `b` is the **imaginary part** (also a real number), and | ||
|
|
||
| Multiplication result is by definition | ||
| `(a + i * b) * (c + i * d) = (a * c - b * d) + (b * c + a * d) * i`. | ||
| - `i` is the **imaginary unit** satisfying `i^2 = -1`. | ||
|
|
||
| The reciprocal of a non-zero complex number is | ||
| `1 / (a + i * b) = a/(a^2 + b^2) - b/(a^2 + b^2) * i`. | ||
| ## Key Properties | ||
|
|
||
| Dividing a complex number `a + i * b` by another `c + i * d` gives: | ||
| `(a + i * b) / (c + i * d) = (a * c + b * d)/(c^2 + d^2) + (b * c - a * d)/(c^2 + d^2) * i`. | ||
| ### Conjugate | ||
|
|
||
| Raising e to a complex exponent can be expressed as `e^(a + i * b) = e^a * e^(i * b)`, the last term of which is given by Euler's formula `e^(i * b) = cos(b) + i * sin(b)`. | ||
| The conjugate of the complex number `z = a + b * i` is given by: | ||
|
|
||
| Implement the following operations: | ||
| ```plaintext | ||
Cool-Katt marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| z̅ = a - b * i | ||
| ``` | ||
|
|
||
| - addition, subtraction, multiplication and division of two complex numbers, | ||
| - conjugate, absolute value, exponent of a given complex number. | ||
| ### Absolute Value | ||
|
|
||
| Assume the programming language you are using does not have an implementation of complex numbers. | ||
| The absolute value (or modulus) of `z` is defined as: | ||
|
|
||
| ```plaintext | ||
| |z| = sqrt(a^2 + b^2) | ||
jagdish-15 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ``` | ||
|
|
||
| ### Sqaure | ||
|
|
||
| The square of the absolute value, `|z|²`, can be computed as the product of `z` and its conjugate: | ||
jagdish-15 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ```plaintext | ||
| |z|² = z * z̅ = a² + b² | ||
| ``` | ||
|
|
||
| ## Operations on Complex Numbers | ||
|
|
||
| ### Addition | ||
|
|
||
| The sum of two complex numbers `z₁ = a + b * i` and `z₂ = c + d * i` is computed by adding their real and imaginary parts separately: | ||
|
|
||
| ```plaintext | ||
| z₁ + z₂ = (a + c) + (b + d) * i | ||
| ``` | ||
|
|
||
| ### Subtraction | ||
|
|
||
| The difference of two complex numbers is obtained by subtracting their respective parts: | ||
|
|
||
| ```plaintext | ||
| z₁ - z₂ = (a - c) + (b - d) * i | ||
| ``` | ||
|
|
||
| ### Multiplication | ||
|
|
||
| The product of two complex numbers is defined as: | ||
|
|
||
| ```plaintext | ||
| z₁ * z₂ = (a + b * i) * (c + d * i) = (a * c - b * d) + (b * c + a * d) * i | ||
| ``` | ||
|
|
||
| ### Reciprocal | ||
|
|
||
| The reciprocal of a non-zero complex number is given by: | ||
|
|
||
| ```plaintext | ||
| 1 / z = 1 / (a + b * i) = a / (a² + b²) - b / (a² + b²) * i | ||
| ``` | ||
|
|
||
| ### Division | ||
|
|
||
| The division of one complex number by another is given by: | ||
|
|
||
| ```plaintext | ||
| z₁ / z₂ = z₁ * (1 / z₂) = (a + b * i) / (c + d * i) = (a * c + b * d) / (c² + d²) + (b * c - a * d) / (c² + d²) * i | ||
| ``` | ||
|
|
||
| ### Exponentiation | ||
|
|
||
| Raising _e_ (the base of the natural logarithm) to a complex exponent can be expressed using Euler's formula: | ||
|
|
||
| ```plaintext | ||
| e^(a + b * i) = e^a * e^(b * i) = e^a * (cos(b) + i * sin(b)) | ||
| ``` | ||
|
|
||
| ## Implementation Requirements | ||
|
|
||
| Given that you should not use built-in support for complex numbers, implement the following operations: | ||
|
|
||
| - **addition** of two complex numbers | ||
| - **subtraction** of two complex numbers | ||
| - **multiplication** of two complex numbers | ||
| - **division** of two complex numbers | ||
| - **conjugate** of a complex number | ||
| - **absolute value** of a complex number | ||
| - **exponentiation** of _e_ (the base of the natural logarithm) to a complex number | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.