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

Matlab


iNCubO

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

Δημοσ.
Πως μπορώ να υπολογίσω με το 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 ετσι ωστε το αποτελεσμα να ειναι πολυ κοντα στο μηδεν, δηλαδη κατα προσεγγιση μηδεν

Δημοσ.

Αν κάνει :

while x>0

x=log10(0)/log10(1/2)

end

στην ουσία θα μπει σε ένα ατέρμονο loop έτσι δεν είναι? Αφού τo χ ποτέ δε θα γίνει ίσο με το 0...

Δημοσ.

Το παραπανω προφανως ειναι ενα ατερμονο 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, κοκ.

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

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

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