Форум программистов, компьютерный форум, киберфорум
Математические программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
58 / 2 / 0
Регистрация: 24.03.2022
Сообщений: 104

Нарисовать график gnuplot

09.07.2023, 15:28. Показов 1047. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день! Необходимо нарисовать график экспериментальной зависимости, график линии регрессии и график подобранной функциональной зависимости. В коде уверен только в правильности вычисления линейной регрессии и коэффициента корреляции. Линия регрессии: R = 16.5898 * h^2 + -4.40561. Коэффициент корреляции: 0.950385. Функциональная зависимость: R = 72.7423 * h^2 + -75.1578(не уверен). Помогите построить график в Gnuplot по этому коду, пожалуйста!
Вот сам код на C++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include <cmath>
#include <windows.h>
 
// Количество точек данных
const int numDataPoints = 8;
 
// Функция для вычисления линии регрессии
void calculateRegressionLine(double h[], double R[], double& Ch, double& k) {
    double h_mean = 0.0;
    double R_mean = 0.0;
    double h_R_deviation_sum = 0.0;
    double h_deviation_squared_sum = 0.0;
 
    // Вычисление средних значений
    for (int i = 0; i < numDataPoints; i++) {
        h_mean += h[i];
        R_mean += R[i];
    }
    h_mean /= numDataPoints;
    R_mean /= numDataPoints;
 
    // Вычисление отклонений и их сумм
    for (int i = 0; i < numDataPoints; i++) {
        double h_deviation = h[i] - h_mean;
        double R_deviation = R[i] - R_mean;
        h_R_deviation_sum += h_deviation * R_deviation;
        h_deviation_squared_sum += h_deviation * h_deviation;
    }
 
    // Вычисление коэффициента наклона (Ch) и свободного члена (k)
    Ch = h_R_deviation_sum / h_deviation_squared_sum;
    k = R_mean - Ch * h_mean;
}
 
// Функция для вычисления функциональной зависимости
void calculateFunctionalDependency(double h[], double R[], double& C, double& k) {
    double h_squared_sum = 0.0;
    double h_R_sum = 0.0;
    double R_sum = 0.0;
    double h_sum = 0.0;
 
    for (int i = 0; i < numDataPoints; i++) {
        double h_squared = h[i] * h[i];
        h_squared_sum += h_squared;
        h_R_sum += h_squared * R[i];
        R_sum += R[i];
        h_sum += h[i];
    }
 
    C = (numDataPoints * h_R_sum - h_sum * R_sum) / (numDataPoints * h_squared_sum - h_sum * h_sum);
    k = (R_sum - C * h_sum) / numDataPoints;
}
 
 
 
// Функция для вычисления коэффициента корреляции
double calculateCorrelationCoefficient(double h[], double R[], double Ch, double k) {
    double h_mean = 0.0;
    double R_mean = 0.0;
    double h_deviation_sum = 0.0;
    double R_deviation_sum = 0.0;
    double h_R_deviation_sum = 0.0;
    double h_deviation_squared_sum = 0.0;
    double R_deviation_squared_sum = 0.0;
 
    // Вычисление средних значений
    for (int i = 0; i < numDataPoints; i++) {
        h_mean += h[i];
        R_mean += R[i];
    }
    h_mean /= numDataPoints;
    R_mean /= numDataPoints;
 
    // Вычисление отклонений и их сумм
    for (int i = 0; i < numDataPoints; i++) {
        double h_deviation = h[i] - h_mean;
        double R_deviation = R[i] - R_mean;
        h_deviation_sum += h_deviation;
        R_deviation_sum += R_deviation;
        h_R_deviation_sum += h_deviation * R_deviation;
        h_deviation_squared_sum += h_deviation * h_deviation;
        R_deviation_squared_sum += R_deviation * R_deviation;
    }
 
    // Вычисление коэффициента корреляции
    double correlationCoefficient = h_R_deviation_sum / (sqrt(h_deviation_squared_sum) * sqrt(R_deviation_squared_sum));
    return correlationCoefficient;
}
 
// Функция для вычисления суммарной квадратичной ошибки
double calculateSumSquaredError(double h[], double R[], double Ch, double k) {
    double sumSquaredError = 0.0;
 
    for (int i = 0; i < numDataPoints; i++) {
        double predictedR = Ch * h[i] * h[i] + k;
        double error = R[i] - predictedR;
        sumSquaredError += error * error;
    }
 
    return sumSquaredError/100;
}
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    double h[] = {0.29, 0.57, 0.86, 1.4, 1.43, 1.71, 1.82, 2};
    double R[] = {3.33, 6.67, 7.5, 13.33, 16.67, 23.33, 27.8, 33.35};
 
    double Ch, k;
    calculateRegressionLine(h, R, Ch, k);
 
    std::cout << "Линия регрессии: R = " << Ch << " * h^2 + " << k << std::endl;
 
    double correlationCoefficient = calculateCorrelationCoefficient(h, R, Ch, k);
    std::cout << "Коэффициент корреляции: " << correlationCoefficient << std::endl;
 
    double sumSquaredError = calculateSumSquaredError(h, R, Ch, k);
    std::cout << "Суммарная квадратичная ошибка линии регрессии: " << sumSquaredError << std::endl;
 
    std::cout << "Средняя квадратичная ошибка линии регрессии: " << sumSquaredError / numDataPoints << std::endl;
 
    double C_func, k_func;
    calculateFunctionalDependency(h, R, C_func, k_func);
    std::cout << "Функциональная зависимость: R = " << C_func << " * h^2 + " << k_func << std::endl;
 
    double sumSquaredError_func = calculateSumSquaredError(h, R, C_func, k_func);
    std::cout << "Суммарная квадратичная ошибка функциональной зависимости: " << sumSquaredError_func << std::endl;
 
    std::cout << "Средняя квадратичная ошибка функциональной зависимости: " << sumSquaredError_func / numDataPoints << std::endl;
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2023, 15:28
Ответы с готовыми решениями:

Построить график из С++ в GNUPLOT
Хочу чтобы Программа построила график по уравнению в GNUPLOT и вывела его на экран, или просто сохранила куда нибудь. Незнаю как...

Gnuplot график с разрывом
Добрый вечер! Помогите пожалуйста разобраться. Необходимо построить графики с разрывами, данные беру из файла. В интернете мало что нашла...

Как сделать, чтобы график в gnuplot рисовался по мере добавления значений в файл?
Доброго времени суток! Есть такой код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cmath&gt; #include &lt;unistd.h&gt; ...

4
 Аватар для Pphantom
2243 / 1503 / 690
Регистрация: 17.03.2022
Сообщений: 4,788
09.07.2023, 16:00
А тут в чем проблема? Собственно функция рисуется командой
Code
1
plot 16.5898*x**2-4.40561
или аналогичной.
1
58 / 2 / 0
Регистрация: 24.03.2022
Сообщений: 104
09.07.2023, 16:07  [ТС]
Цитата Сообщение от Pphantom Посмотреть сообщение
А тут в чем проблема? Собственно функция рисуется командой
Спасибо за помощь! А можно ли нарисовать больше одной функции сразу?
0
 Аватар для Pphantom
2243 / 1503 / 690
Регистрация: 17.03.2022
Сообщений: 4,788
09.07.2023, 16:09
Лучший ответ Сообщение было отмечено Zoow как решение

Решение

Цитата Сообщение от Zoow Посмотреть сообщение
Спасибо за помощь! А можно ли нарисовать больше одной функции сразу?
Да, просто через запятую, как-то так
Code
1
plot x**2+3, 5*x+16
1
58 / 2 / 0
Регистрация: 24.03.2022
Сообщений: 104
09.07.2023, 16:14  [ТС]
Цитата Сообщение от Pphantom Посмотреть сообщение
Да, просто через запятую, как-то так
Спасибо большое, очень помогли)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.07.2023, 16:14
Помогаю со студенческими работами здесь

Нарисовать флаг, нарисовать график y=ctg x Нарисовать анимацию
Дело таково у меня сейчас практика, где я очень не успиваю сделать все свои задания... Большая просьба кто готов помочь, пишите а кто...

Нарисовать график
Для заданного дифференциального уравнения ввида y'=F(x,y) и начального условия y(0)=y(нулевое) построить кусочно-линейный график решения...

Нарисовать график
Программа. Напечатать в точках 1,2..., k, где k - заданное целое число от 2 до 70, график функции Эйлера φ(n), вычисляющей количество...

Нарисовать график
Есть код, для того что бы нарисовать график: import numpy as np import pandas as pd import matplotlib.pyplot as plt df =...

Нарисовать график
Есть код простой прямой - нужно составить такое условие, чтобы получился график пораболы в положительной и отрицательной стороне, а так же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru