MariaAmaliaM58 Δημοσ. 9 Ιανουαρίου 2021 Δημοσ. 9 Ιανουαρίου 2021 (επεξεργασμένο) Έχω γράψει τον ακόλουθο κώδικα για τη βελτιστοποίηση ενός ενισχυτή 5 σταδίων, χρησιμοποιώντας το fmincon solver, το οποίο περιέχεται στο εργαλείο βελτιστοποίησης MATLAB, δοκιμάζω επίσης τους διάφορους αλγορίθμους λύσεων που προσφέρονται (Εσωτερικό σημείο, SQP, Active set, Trust region reflective ) Υπάρχει πρόβλημα με τον κώδικά μου, υποθέτω ότι είναι στο δεύτερο μέρος. Εάν κάποιος έχει κάποια ιδέα θα ήμουν ευγνώμων. %myfun.m function D = myfun(A) %First Part N0 = 0; N1 = A(1)*sqrt(N0^2 + 10^-10); N2 = A(2)*sqrt(N1^2 + 10^-6); N3 = A(3)*sqrt(N2^2 + 10^-4); N4 = A(4)*sqrt(N3^2 + 10^-4); N5 = A(5)*sqrt(N4^2 + 10^-2); N5 = Nout; %Second Part Sin1 = 0.1/A(1); Sin2 = 3/A(1)*A(2); Sin3 = 5/A(1)*A(2)*A(3); Sin4 = 8/A(1)*A(2)*A(3)*A(4)); Sin5 = 12/A(1)*A(2)*A(3)*A(4)*A(5); smin = min(Sin1,Sin2,Sin3,Sin4,Sin5); smin = Smax; D = Smax/Nout; %mycon.m function [c,ceq] = mycon(A) c = []; ceq (1) = A(1)*A(2)*A(3)*A(4)*A(5) = 10000; Επεξ/σία 9 Ιανουαρίου 2021 από MariaAmaliaM58
Maniolas Δημοσ. 9 Ιανουαρίου 2021 Δημοσ. 9 Ιανουαρίου 2021 Μηπως να τα εκανες με πινακες αντι να τα περνάς ενα-ενα στοιχειο, αυτο απλα για να γινει "καλυτερος" ο κωδικας; Επίσης το "Nout" δεν το εχεις ορισει κατι και αφου γραφεις "Ν5=Νout" δεν έχει νοημα η ανάθεση. Ομοία το έχεις κάνει και για το "smin" αυτο το λαθος. Φτιάξε αυτά και ξανά δοκίμασε, επίπλεον αν μας έδινες κάποιο input/output, πιθανόν να μπορούσαμε να βοηθήσουμε κι άλλο. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα