Форум программистов, компьютерный форум CyberForum.ru

Интегрирование полинома, считанного из файла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Kamino
0 / 0 / 0
Регистрация: 18.06.2011
Сообщений: 41
18.06.2011, 16:53     Интегрирование полинома, считанного из файла #1
Из файла считывается степень полинома и его коэффициенты. Например,
==============
5
1 2 3 4 5 6
==============
~ 1 + 2*x + 3*x^2 + 4*x^3 + 5*x^4 + 6*x^5

Затем с клавиатуры вводятся пределы интегрирования.
Для полинома производится вычисление интеграла на заданном интервале с помощью метода трапеций (http://www.machinelearning.ru/wiki/i...86%D0%B8%D0%B9 http://www.matmetod.ru/method_trapezium_reference) и с помощью метода Монте-Карло (http://ru.wikipedia.org/wiki/%D0%9C%...80%D0%BB%D0%BE)
Количество точек для интегрирования задаётся с клавиатуры. Результаты численного интегрирования сравниваются по абсолютной величине.
Для формулы трапеций необходимо рассчитать величину погрешности.



Вот. В проге парю очень слабо.Сможете помочь?

 Комментарий модератора 
Именуйте темы осмысленно! Название темы должно максимально полно отражать её содержимое.


Добавлено через 2 часа 0 минут
Это очень сложно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2011, 16:53     Интегрирование полинома, считанного из файла
Посмотрите здесь:

Умножение полинома C++
структура,описание полинома C++
C++ Найти рациональные корни полинома!
C++ Нахождение корней полинома n-ой степени
Список полинома C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
18.06.2011, 17:30     Интегрирование полинома, считанного из файла #2
Цитата Сообщение от Kamino Посмотреть сообщение
Это очень сложно?
Да нет, не сложно. Вот все и думают — в чём же проблема? Что не получается?
Ну вот, для начала, программа, которая считает значение многочлена в заданной точке
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
double poly(double *pa, unsigned degree, double x)
{
    double sum = *pa++;
    double x_i = x;
    while (degree--)
    {
        sum += *pa++ * x_i;
        x_i *= x;
    }
    return sum;
}
 
int main()
{
    double array[] = { 4., 3., 2. };
    unsigned const size_a = sizeof(array)/ sizeof(*array);
    unsigned degree = size_a - 1;
    double x = 2.;
    printf("poly(%g) = %g\n", x, poly(array, degree, x));
    return 0;
}
Осталось только прикрутить считывание файла с динамическим выделением памяти и реализовать оба этих несложных метода интегрирования.
Так в чём проблема?
Kamino
0 / 0 / 0
Регистрация: 18.06.2011
Сообщений: 41
19.06.2011, 13:51  [ТС]     Интегрирование полинома, считанного из файла #3
Спасибо. Будем разбираться

Добавлено через 17 часов 30 минут



а эти методов случайно тут нет?
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 14:06     Интегрирование полинома, считанного из файла #4
На форуме? Подозреваю, что есть. Надо поискать.
Метод трапеций (не проверял):
C++
1
2
3
4
5
6
7
double a = 0.0, b = 1.0; // пределы интегрирования
int k = 100; // количество точек
double delta = (b - a)/(k-1); // расстояние между точками
double s1 = 0.5*(poly(array, degree, a) + poly(array, degree, b));
for (int i = 1; i < k; ++i)
    s1 += poly(array, degree, a+k*delta);
s1 *= delta; // результат интегрирования методом трапеций
А методом Монте-Карло надо выбирать случайные точки из диапазона и усреднять значение функции по этим точкам. Потом умножить на интервал интегрирования.
Kamino
0 / 0 / 0
Регистрация: 18.06.2011
Сообщений: 41
19.06.2011, 14:09  [ТС]     Интегрирование полинома, считанного из файла #5
Ты меня просто спасаешь. Спасибо большое.Будем сейчас разбираться

 Комментарий модератора 
Кросспостинг
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 14:12     Интегрирование полинома, считанного из файла #6
Всё-таки предел в цикле неправильный
C++
1
2
3
4
5
6
7
double a = 0.0, b = 1.0; // пределы интегрирования
int k = 100; // количество точек
double delta = (b - a)/(k-1); // расстояние между точками
double s1 = 0.5*(poly(array, degree, a) + poly(array, degree, b));
for (int i = 1; i < k-1; ++i)
    s1 += poly(array, degree, a+k*delta);
s1 *= delta; // результат интегрирования методом трапеций
Yandex
Объявления
19.06.2011, 14:12     Интегрирование полинома, считанного из файла
Закрытая тема Создать тему
Опции темы

Текущее время: 21:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru