iNCubO Δημοσ. 23 Μαΐου 2008 Δημοσ. 23 Μαΐου 2008 Πως μπορώ να υπολογίσω με το matlab, τον μικρότερο ακέραιο x, έτσι ώστε να ισχύει (1/2)^x=0 ?
Dr.Fuzzy Δημοσ. 23 Μαΐου 2008 Δημοσ. 23 Μαΐου 2008 Πως μπορώ να υπολογίσω με το matlab, τον μικρότερο ακέραιο x, έτσι ώστε να ισχύει (1/2)^x=0 ? Προφανως για να ισχυει το παραπανω θα πρεπει το x να ειναι ισο με (απειρο). (1/2)^x=0 <=> x=log_1/2 (0) <=> x= log_10 (0) /log_10 (1/2) που κανει απειρο ή αλλιως ειναι ενα οριο lim_(x->+oo) (1/2)^x = 0 Αν θες να το υπολογισεις στο Matlab: x=log10(0)/log10(1/2) ή αντιστοιχα με ορια, syms x a f=1/2^x limit(f,x,+inf) ΥΓ εκτος και αν εννοεις ενα πολυ πολυ μικρο x ετσι ωστε το αποτελεσμα να ειναι πολυ κοντα στο μηδεν, δηλαδη κατα προσεγγιση μηδεν
iNCubO Δημοσ. 23 Μαΐου 2008 Μέλος Δημοσ. 23 Μαΐου 2008 Αν χρησιμοποιήσουμε βρόχο while όσο ισχύει x>0?
Dr.Fuzzy Δημοσ. 23 Μαΐου 2008 Δημοσ. 23 Μαΐου 2008 Αν χρησιμοποιήσουμε βρόχο while όσο ισχύει x>0? Πως δηλαδη; Για δωσε μου ενα παραδειγμα.
narbi Δημοσ. 23 Μαΐου 2008 Δημοσ. 23 Μαΐου 2008 Αν κάνει : while x>0 x=log10(0)/log10(1/2) end στην ουσία θα μπει σε ένα ατέρμονο loop έτσι δεν είναι? Αφού τo χ ποτέ δε θα γίνει ίσο με το 0...
Dr.Fuzzy Δημοσ. 23 Μαΐου 2008 Δημοσ. 23 Μαΐου 2008 Το παραπανω προφανως ειναι ενα ατερμονο loop, ετσι και αλλιως, αφου εσωτερικα του loop τιποτα δεν μεταβαλει την κατασταση της εξισωσης. Το παρακατω script σε Matlab: y=1; x=1; while y>0 x = x + 100; y=(1/2)^x; end θα τελειωσει δινοντας y=0 για x=1101, το οποιο προφανως συμβαινει διοτι οι μεταβλητες που χρησιμοποιουνται εχουν πεπερασμενη ακριβεια. Αρα λοιπον κατα προσεγγιση μπορουμε (παντα με βαση την ακριβεια που εξαρτατε απο τον τυπο των μεταβλητων) να θεωρησουμε στην εδω περιπτωση, οτι το y<< ή y~0 για x>> ή x>=1101 Γενικα λοιπον, αν χρησιμοποιησεις τυπο μεταβλητης που το μεγεθος της ειναι 32-bit, τοτε το x=32, αν ειναι 16-bit, τοτε το x=16, κοκ.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.