Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 28.11.2016
Сообщений: 85
1

График функции с использованием WinApi

23.09.2018, 21:09. Показов 1247. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте, вот задача:
дана функция на промежутке а в, нужно создать 2 массива ( 1й с n узлами интерполяции, 2й со значениями функции в этих узлах) и посчитать значение многочлена лагранжа в заданной точке х*, а потом построить 2 графика функции (исходной и лагранжа)

программа работает, считает верно, но вот график выглядит плачевно. не знаю, как сделать, чтобы он выглядел больше, нагляднее и с подписанными координатами. подскажите, пожалуйста
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <Windows.h>
#include <stdlib.h>
#include <math.h>
 
 
 
 
using namespace std;
double a, b;
int n;
double x;
double *mass_of_points;
double *mass_of_function_value;
 
double lagranz(double *mas_of_points, double *mas_of_function_value, double t);
void mass_of_nodes(double a, double b, int n);
void mass_of_value(double *mass_of_points, int n);
double f_x(double a);
 
int main() {
    cout << endl << endl << endl << endl << endl << endl << endl;
    cout << "enter n"<<endl;
    cin >> n;
    cout << "enter a and b"<<endl;
    cin >> a >> b;
    cout << "enter x*"<<endl;
    cin >> x;
    
    mass_of_points = new double[n];
    mass_of_function_value = new double[n];
 
    mass_of_nodes(a, b, n);
    mass_of_value(mass_of_points, n);
 
    
 
    for (int i = 0; i < n; i++) {
        cout <<i+1<< ")  x= " << mass_of_points[i] << "; f(x)=" << mass_of_function_value[i] << endl;
    }
    cout << "p"<<n<<"(x*)=" << lagranz(mass_of_points, mass_of_function_value,x )<< " " << endl;
    
    float x;
    HDC hDC = GetDC(GetConsoleWindow());
    HPEN Pen = CreatePen(PS_SOLID, 2, RGB(255, 255, 255));
    SelectObject(hDC, Pen);
    MoveToEx(hDC, 0, 85, NULL);
    LineTo(hDC, 200, 85);
    MoveToEx(hDC, 100, 0, NULL);
    LineTo(hDC, 100, 170);
    for (x = -8.0f; x <= 8.0f; x += 0.01f) // O(100,85) - center
    {
        MoveToEx(hDC, 100 * x + 100, -100 * f_x(x) + 85, NULL);//10 - scale
        LineTo(hDC, 100 * x + 100, -100 * f_x(x) + 85);
    }
    for (x = -8.0f; x <= 8.0f; x += 0.01f) // O(100,85) - center
    {
        MoveToEx(hDC, 100 * x + 100, -100 * lagranz(mass_of_points, mass_of_function_value, x) + 85, NULL);//10 - scale
        LineTo(hDC, 100 * x + 100, -100 * lagranz(mass_of_points, mass_of_function_value, x) + 85);
    }
    system("pause");
    return 0;
    return 0;
}
 
double lagranz(double *mas_of_points, double* mas_of_function_value, double t) {
    double z, p1, p2;
    z = 0;
    for (int j = 0; j<n; j++) {
        p1 = 1; p2 = 1;
        for (int i = 0; i<n; i++) {
            if (i == j) {
                p1 = p1 * 1; p2 = p2 * 1;
            }
            else {
                p1 = p1*(t - mas_of_points[i]);
                p2 = p2*(mas_of_points[j] - mas_of_points[i]);
            }
        }
        z = z + mas_of_function_value[j] * p1 / p2;
    }
    return z;
}
 
double f_x(double a) {
    return (1/(1+(25*a*a)));
}
double h;
void mass_of_nodes(double a,double b,int n) {
    h = ((b-a)/(n-1));
    for (int i = 0; i < n; i++) {
        mass_of_points[i] = (a + (i*h));        
    }
};
void mass_of_value(double *mass_of_points,int n) {
    
    for (int i = 0; i < n; i++) {
            mass_of_function_value[i] = f_x(mass_of_points[i]);
    }
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2018, 21:09
Ответы с готовыми решениями:

Нарисовать график функции y=tg(x) WinAPI
Я не могу понять как нарисовать график функции y=tg(x) с помощью WINAPI.У меня есть примеры с кодом для функции синуса,но я не могу в нем...

Построить график функции с использованием сопроцессора
Уважаемые форумчане! Помогите нарисовать график функции Y=K/X+B через сопроцессор! Код, который я написал, выводит только горизонтальную...

C использованием TChart построить график функции
C использованием TChart построить график у=ctg(x)/sin(3x)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2018, 21:09
Помогаю со студенческими работами здесь

Построить график функции y = cos( x ) с использованием TChart
Помогите написать программу в форме рисующую график функции y=cos x с помощью компонента TChart.

С использованием символов «*» построить на экране график заданной функции
Написать программу которая с использованием символов «*» строит на экране график заданной функции y(x). y(x)=tg(x),при x принадлежащем...

Построить график функции.Реализовать задачу необходимо с использованием компонентов Chart и PictureBox
Построить график функции согласно своему варианту. Реализовать задачу необходимо с использованием компонентов Chart и PictureBox. 8...

Как построить график функции к нелинейным уравнениям с помощью элемента управления Chart и с использованием делегатов?
У меня задание: Создать приложение позволяющее решать методом Ньютона и методом половинного деления нелинейные уравнения, а также выполнять...

Найти производные функции и на одном графике построить график данной функции, график первой и второй производной.
найти производные первого и второго порядка функции и на одном графике построить график данной функции , график первой и второй...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
Подробно о std::mdspan в C++23
stackOverflow 02.03.2025
Работа с многомерными массивами данных традиционно была одной из сложных задач в C++. Программистам приходилось создавать собственные абстракции или использовать сторонние библиотеки для эффективной. . .
Колмогоровская сложность в C++: Путь к совершенному коду
stackOverflow 02.03.2025
Абстрактная математическая теория Колмогорова стала мощным средством оценки и улучшения программного кода. Сложность алгоритма - не только в его вычислительной эффективности, но и в том, насколько. . .
Изменения в C# 14
stackOverflow 02.03.2025
Одно из самых значимых изменений в C# 14 - поддержка коллекционных выражений, которые позволяют создавать и инициализировать коллекции с помощью нового лаконичного синтаксиса. Это нововведение. . .
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru