„Komplex számok a programozásban” változatai közötti eltérés

Innen: HamWiki
Ugrás a navigációhoz Ugrás a kereséshez
(Complex néhány programnyelvben)
 
(+javascript)
42. sor: 42. sor:
  
 
== Javascript ==
 
== Javascript ==
 +
 +
Nyelvi elemként nem támogatja, azonban a komplex számokat kezelő függvénygyűjtemény itt található rá: http://mathjs.org/
 +
 +
Példa: http://mathjs.org/examples/complex_numbers.js.html
  
 
== Octave ==
 
== Octave ==
144. sor: 148. sor:
 
== Ruby ==
 
== Ruby ==
  
[[Kategória: Műszaki alapismeretek]]
+
[[Kategória: Konstruktőri ismeretek]]

A lap 2014. november 30., 09:35-kori változata

Láttuk, hogy a komplex számok RLC körök váltakozóáramú viselkedésének leírásánál fontos szerephez jutnak. Jelen szócikk azt vizsgálja, mely programnyelveken hogyan lehet komplex számokkal számításokat csinálni.

C

Nyelvi szinten támogatva van.

#include <stdio.h>
#include <complex.h>

void kiir(const char *s, float complex a) {
    printf("%s: %f + %fj\n", s, creal(a), cimag(a) );
}

int main() {
    float complex a, b;

    a = 5 + 3i; // de akár 5 + 3j vagy 5 + 3*I alakban is megadható.
    b = 3 + 2i;

    // creal(a), cimag(a) - lásd kiír függvényben.

    kiir("a: ", a);
    kiir("b: ", b);

    // vektorhossz; cabs: double, cabsf: float, cabsl: long double
    printf("cabs(a): %f\n", cabs(a) );
    // fázis; carg: double, cargf: float, cargl: long double
    printf("carg(a): %f\n", carg(a) ); // radiánban

    kiir("a+b: ", a + b);
    kiir("a*b: ", a * b);
    kiir("a/b: ", a / b);

    return 0;
}

C#

Java

Javascript

Nyelvi elemként nem támogatja, azonban a komplex számokat kezelő függvénygyűjtemény itt található rá: http://mathjs.org/

Példa: http://mathjs.org/examples/complex_numbers.js.html

Octave

Az Octave egy matematikai program, jól szkriptelhető, egyszerű a nyelvezete. Műszaki számításokra kifejezetten alkalmas. Amennyiben ;-vel zárjuk a sort, akkor annak a sornak az eredménye nem kerül ki a képernyőre.

A komplex számok nyelvi szinten vannak támogatva.


#!/usr/bin/octave

a = 5 + 3i
b = 3 + 2i

disp "a: Real, imag:"
re = real(a)
im = imag(a)

disp "a: magnit, phase:"
magnit = abs(a)
phase = arg(a)

disp "a+b, a*b, a/b:"
plusz = a+b
szor = a*b
per = a/b

PHP

Alapból nincs támogatva, azonban a feltelepíthető a Complex csomag (jelenleg béta). Sajnos ezzel sem olyan kényelmes a komplex számokkal való számolás. Szerencsés lenne itt is nyelvi elemként beintegrálni.

pear install Math_Complex
# illetve ha nem települ fel, akkor:
pear install Math_Complex channel://pear.php.net/Math_Complex-0.8.6

Példa: https://github.com/pear/Math_Complex/blob/master/docs/examples/using_complexop.php

Próbáim során a ComplexOp problémás volt, így a Complex lett csak behívva, amiben még nincs összeadás, szorzás, osztás.

<?php
require_once 'Math/Complex.php';

$a = new Math_Complex(5, 3); // a = 5 + 3j
$b = new Math_Complex(3, 2); // b = 3 + 2j

echo "a: ", $a->toString(), "\n";
echo "b: ", $b->toString(), "\n";

echo "real(a): ", $a->getReal(), "\n";
echo "imag(a): ", $a->getIm(), "\n";

echo "magnit: ", $a->abs(), "\n";
echo "phase: ", $a->angle(), "\n";


// alábbi nekem a ComplexOp modul hibájával elszállt
require_once 'Math/ComplexOp.php';

$r = Math_ComplexOp::add($a. $b);
echo "a+b: ", $r->toString(), "\n";

$r = Math_ComplexOp::mult($a. $b);
echo "a*b: ", $r->toString(), "\n";

$r = Math_ComplexOp::div($a. $b);
echo "a/b: ", $r->toString(), "\n";
?>


Python

A komplex számok nyelvi szinten támogatva vannak.

#!/usr/bin/python

import cmath

a = 5 + 3j
b = 3 + 2j

print "real(a): ", a.real
print "imag(a): ", a.imag

print "a:", a
print "b:", b

print "abs:", abs(a)
print "phase:", cmath.phase(a)
print "polar:", cmath.polar(a)

print "a+b:", a+b
print "a*b:", a*b
print "a/b:", a/b

Ruby