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

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

23.09.2018, 21:09. Показов 1168. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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)

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

0
23.09.2018, 21:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2018, 21:09
Помогаю со студенческими работами здесь

С использованием символов «*» построить на экране график заданной функции
Написать программу которая с использованием символов «*» строит на экране график заданной функции...

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

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

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

Графика в C++ с использованием WinAPI
Доброго времени суток! Дошел до изучения графики, с отрисовкой, заливкой разобрался, не могу...

Графика с использованием WinAPI
Помогите пожалуйста, нужно на winapi реализовать программу, в которой рисуется «толстый провод» в...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru