es
v1 = {7, 8, 9};
FindRoot[-Log2[10^-3]/1000==#*Log2[#/q]+(1-#)*Log2[(1-#)/(1-q)],{q,5}]&/@v1
Es beschwert sich in der Lage tun über die Genauigkeit zu bekommen, dass sie will, wird dies aber Sie können das ignorieren können. Wenn Sie eine WorkingPrecision- oder AccuracyGoal-Option verwenden, können Sie das vielleicht überwinden. Ich habe die Werte von 0,001 bis 10^-3 geändert, da dies die einzige Zahl in Ihrem Post war, die einen Dezimalpunkt hatte, und ich hoffte, durch diesen exakten Bruch die Warnungen vor Genauigkeit loszuwerden, aber das war nicht genug.
Das macht den gesamten FindRoot zu einer Funktion, die # mit & als Variable verwendet, und verwendet dann Map (die eine Kurzbezeichnung von/@ hat), um diese Funktion für jedes Element in Ihrer v1-Liste zu verwenden Sie die Liste der Ergebnisse. Sie könnten genau das gleiche mit
schreiben, wenn das für Sie verständlicher ist.