Генерация последовательности чисел
31.08.2020
Здравствуйте! НЕ могу решить простенькую, но очень важную для меня задачу) Может быть кто-нибудь поможет. Условия: дано известное среднее значение (из пяти членов) велечины Sср. Небходимо найти эти членов (S1, S2, S3, S4, S5), таким образом чтобы их отклонение от средней величины не выходило за пределы +/- 1%.
Хотя бы натолкни те на направление))
Спасибо!
Ответы
Поскольку нет требований к тому чтобы числа были разные можно сделать и так:
hex bin может быть не прав. По всей видимости, ожидается что-то вроде следующего:
Scp = 7; Dmx = 0.01; N = 5; % инициализируем данные задачи
x = randn(1,N); % инициализируем вектор - можно задать любой
x = x * Dmx/std(x); x = x - mean(x)+Scp; % приводим к решению
disp([mean(x) std(x)]); % проверяем результат
Удачи на сдаче
Задача упрощается, если фразу «отклонение от средней не выходило за пределы...» понимать как
max(abs(mean(x)-x)) <= Dmx;
Тогда предпоследнюю строку надо заменить на:
x = Scp + (x-mean(x))*Dmx/(max(abs(x-mean(x)));
и не забудьте поставить проверку для очень строгого преподавателя
if std(x) == 0 % все компоненты вектора одинаковы
if Dmx ~= 0 % а не хотелось бы
error('Увы, с этим вектором ничего не получится');
else
disp(x); % а впрочем, сойдет и так
return % и не будем делить на 0
end
end
Может и так, даром предвидения я не обладаю. Вопрос был предельно прост дано число, требуется 5 чисел с отклонением от него меньше процента. Т.е. если среднее равно 5, то и 5 5 5 5 5 будет верным ответом.
Наверно можно еще через вот так попробовать.
можно попробовать, если есть лицензия на CS Tbx, и такой генератор; но задачу это не решит, так как, по всей видимости, приводить к нужному виду придется заданный преподавателем вектор
в принципенаверно согласен