Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Θα ελαχιστοποιήσω την συνάρτηση απολύτου της f
- % Ως γνωστόν, η min τιμή της εντοπίζεται στο 0, οπότε αν εφαρμο΄σω κάποιον
- % αλγόριθμο τοπικής βελτιστοποίησης, θα βρω σε ποιο σημείο γίνεται 0
- % Αν δεν γίνει ποτέ 0, τότε η συνάρτηση μας δεν έχει ρίζα, άρα η εξίσωση,
- % στην οποία αντιστοιχεί δεν έχει λύση. Επιλέγω να εφαρμόσω τον αλγόριθμο
- % τοπ.βελτ. στην απόλυτη τιμή, γιατί αν τον εφήρμοζα στην κανονική-αυθεντική
- % συνάρτηση f, θα μου έδινε το σημείο που ελαχιστοποείται, όχι εκεί που
- % είναι 0, γιατί πολύ απλά το min value μπορεί να είναι το -5 π.χ.
- clc
- clear all
- syms x
- % display('**************************************************');
- % display('**************************************************');
- f = x - sin(x) + exp(2*x)
- F = matlabFunction(f);
- absF = abs(f);
- dAbsF = diff(absF, 'x');
- DF = matlabFunction(dAbsF);
- % Αρχική υπόθεση ότι η ύση ανήκει εντός του -100 ως 100 π.χ.
- % Ακρίβεια έστω 0.01
- akro1 = -110; akro2 = 100; l = 0.0001;
- counter = 0;
- xmin = -1000;
- while akro2 - akro1 > l
- counter = counter + 1;
- kentro = (akro1 + akro2) / 2;
- paragwgos = DF(kentro);
- if paragwgos > 0
- akro2 = kentro;
- elseif paragwgos < 0
- akro1 = kentro;
- else
- solution = kentro;
- % break
- end
- if akro2 - akro1 < l
- % Αυτό σημαίνει ότι έχουμε λύση μέσα σε αυτό το range
- xmin = (akro1 + akro2) / 2;
- else
- % Σε αυτό το case μπαίνουμε, μόνο αν ο αλγόριθμος τερματίσει
- % πρόωρα και έχουμε βγει από το while, μέσω της brea ή με άλλα
- % λόγια όταν έχουμε πετύχει στην μεταβλητή "kentro" την ακριβή λύση
- end
- end
- display('**************************************************');
- display('*************** My algorithm found ***************')
- xmin
- f_xmin = F(xmin)
- display('**************************************************');
- display('************* fsolve function found **************')
- eqn = f == 0;
- xmin2 = solve(eqn, x)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement