Προς το περιεχόμενο

C και μιγαδικοί αριθμοί


antonis_wrx

Προτεινόμενες αναρτήσεις

Δημοσ.

Υποστηρίζει η C από μόνη της μιγαδικούς αριθμούς και πράξεις με μιγαδικούς ή πρέπει να τους ορίσω μόνος μου σαν τύπο (προφανώς struct) και μετά να κάνω συναρτήσεις (που δεν νομίζω να τα καταφέρνω) με τις βασικές πράξεις... (ενδιαφέρομαι για τον υπολογισμό της τιμής ενός πολυωνύμου P(z) 4ου βαθμού, όπου z μιγαδικός...

Δημοσ.

Η standard C δεν υποστηρίζει μιγαδικούς αριθμούς.......

Υπάρχουν αρκετές βιβλιοθήκες που κάνουν αυτό που λές.... (είχα βρεί αρκετές πριν πολύ-πολύ καιρό....)

Δημοσ.

(μετα απο μια μικρή αναζήτηση...)

ο gcc υποστηρίζει complex αριθμούς στην C library, οπότε η windows version του θα το κάνει και αυτή.

 

ΥΓ: Για ολοκληρωμένο συστημα αναπτυξης C σε windows ή linux δοκιμάστε το σετ:

Windows: mingw+codeblocks

Linux: gcc+codeblocks

 

http://www.codeblocks.org

Δημοσ.
http://www.gnu.org/software/libc/manual/html_node/Complex-Numbers.html

 

δηλαδή με gcc και linux είμαι κομπλέ?

 

Εξαρτάται τι λειτουργικό χρησιμοποιείς....

Αν δουλεύεις windows κατεβασε τo Code::Blocks IDE' date=' with MINGW compiler[/b'] από την σελίδα : http://www.codeblocks.org/downloads.shtml

Θα έχεις και compiler και IDE να στρωθείς κατ'ευθείαν στη δουλεια.

Αν δουλεύεις linux τοτε κατα πάσα πιθανότητα το συστημα σου θα έχει ήδη εγκατεστημένο τον gcc

Δημοσ.

#include <stdio.h>

#include <complex.h>

 

int main ()

{

complex a=5+2i;

complex b=4+9i;

complex c=a+b;

printf("ok!\n");

return 0;

}

 

Τρέχω linux mandriva 2005. Το παραπάνω πρόγραμμα μου το έκανε compile και το έτρεξε κανονικά. Το μόνο πρόβλημα είναι ότι δεν ξέρω τι όρισμα θέλουν οι printf, scanf για την εμφάνιση/διάβασμα μιγαδικού αριθμού... (όπως για int είναι %d, double %lf κλπ...)

Για fortran το γνωρίζω ότι υποστηρίζει αλλά δεν ξέρω δυστυχώς καθόλου. Πιέζει ο χρόνος για την παράδοση της εργασίας, πλησιάζει η εξεταστική σιγα σιγα οπότε δεν το κόβω να προλαβαίνω να μαθαίνω fortran και προτίμησα c όπου γνωρίζω κάποια πραγματάκια...

Δημοσ.

Δεν υποστηρίζει η C από τη φύση της μιγαδικούς, παρά μόνο η Fortran όπως ειπώθηκε ήδη παραπάνω.

Μόνο με κάνα library θα κάνεις χρήση μιγαδικών, ή (αν είσαι σε C++) με κάνα class μιγαδικών που θα μπορούσες ενδεχομένως να φτιάξεις κι από μόνος σου.

 

Όρισμα της printf για μιγαδικούς δεν υπάρχει. Θα πρέπει να τους ορίζεις ώς stings στην εκτύπωση, και να τους περνάς ίσως με τη χρήση κάποιας υπορουτίνας που θα επιστρέφει το string που θα πρέπει να εκτυπώνεται για κάποιον μιγαδικό (που θα φυλάσεται σε κάποιο structure ή class)...

Δημοσ.

O gcc compiler με τη glibc που βρίσκεται σε όλες τις διανομές linux, ΥΠΟΣΤΗΡΙΖΕΙ μιγαδικούς αριθμούς, ενγεννώς. Να και ενα παραδειγμα χρήσης και εκτύπωσης τους (με χρήση των creal() cimag() ):

 

>/* check that exp(i*pi) == -1 */
#include <math.h>       /* for atan */
#include <complex.h>
main() {
       double pi = 4*atan(1);
       complex z = cexp(I*pi);
       printf("%f+%f*i\n", creal(z), cimag(z));
}

 

Για περισσότερα "man complex"

Για windows users, υπάρχει η λύση που εδωσα παραπάνω με mingw

Δημοσ.

και αν θέλουμε να εκχωρήσουμε πχ την τιμή της μεταβλητής a σαν πραγματικό και της b σαν φαντασικό μέρος της z πως το κάνουμε;

 

[antonis@localhost analush]$ man complex

No manual entry for complex

Δημοσ.
O gcc compiler με τη glibc που βρίσκεται σε όλες τις διανομές linux, ΥΠΟΣΤΗΡΙΖΕΙ μιγαδικούς αριθμούς, ενγεννώς.

Να η λύση λοιπόν!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...