Мне нужно построить график функции распределения. Для этого я решил использовать GnuPlot.
В Excel пробовал, хорошо, но ступеньки плохо выраженные из-за малого количества значений.
Делаю по видео, и при записи в *.dat файл записывает только первую строку, а не все значения.
Как исправить?
Вектор arrсодержит концы интервалов, HLP вычисленные вероятности.
Делаю данное из-за малого количества точек для построения.
cout << "____________________________" << endl;
float x = float(arr[0]);
for (int i = 1; i<arr.size(); i++)
{
if ((arr[i]>x) && (x >= arr[i - 1]))
{
ofstream outval;
outval.open("tst.dat", ios::app);
outval << x << " " << HLP[i-1] << endl;
cout << "---------------------------" << endl;
cout << x <<" "<< HLP[i - 1] << endl;
}
x += 0.1;
}
Ой. Смотрите, вы прошлись по циклу, нашли, где находится x, в каком интервале, и идете себе дальше, увеличив x на 0.1. Вы уверены, что он при этом попадет в один из следующих интервалов?
Вам нужно цикл по x, и для каждого значения x искать интервал, куда он попадает.
Собственно спасибо Harry
1) необходимо было вынести открытие файла за цикл, так как файл перезаписывался.
Короче сделал так:
cout << "____________________________" << endl;
float x = float(arr[0]);
ofstream outval;
outval.open("tst.dat", ios::app);
while (x != arr[arr.size() - 1])
{
for (int i = 1; i < arr.size(); i++)
{
if ((arr[i] > x) && (x >= arr[i - 1]))
{
outval << x << " " << HLP[i - 1] << endl;
cout << "---------------------------" << endl;
cout << x << " " << HLP[i - 1] << endl;
}
}
x += 0.1;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости