0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 9

Вычисление определенного интеграла функции F(x) (любой пример)

21.04.2012, 20:12. Показов 14406. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста дописать программу вычисляющую определенный интеграл от любой введенной пользователем функции (на подобии онлайн калькуляторов определенных интегралов).

А именно я реализовал два метода: Метод Гаусса и Метод трапеций, а сложность заключается в том, что не могу ввести функцию заданную пользователем в программу для подстановки.

В ходе решения я прихожу к функции :
C#
1
2
3
4
5
6
7
8
 
....
static double f(double x) //интегрируемая функция
 {
//тут должна быть формула введенная пользователем)
return x * x; //вместо х*х - то что ввел пользователь
}
.....
Где х это уже посчитанное значение(цифра) (любым методом) (из точности , верхнего придела и нижнего). И в этой функции производится замена всех х введенной пользователем формулы - к примеру(не обязательно именно это) пользователь введет Math.Sin(x) - на цифру .
Так вот, не могу запихнуть в программу это самое Math.Sin(x) для последующей замены.
Выяснил , что необходимо парсинговать строку введенную в текстбокс. А вот справится не могу с этим.
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.04.2012, 20:12
Ответы с готовыми решениями:

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

Вычисление определённого интеграла методом трапеции
Программа вычисляет определённый интеграл методом трапеции ->Не выводит значения переменных на экран<- using System; using...

Вычисление определенного интеграла методом парабол (Симпсона)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication33 { ...

10
Эксперт Python
 Аватар для dondublon
4643 / 2059 / 363
Регистрация: 17.03.2012
Сообщений: 10,139
Записей в блоге: 6
22.04.2012, 12:50
Имхо, тут не надо писать своих велосипедов, воспользуйтесь готовым.
Я вижу три способа.
1. динамическая компиляция C#. Плюсы - самая высокая скорость, никаких сторонних компонентов (за рамками .net framework).
2. Воспользоваться готовым интерпретатором (IronPython, Boo, PowerShell). Минусы - нужны доп. компоненты, скорость ниже. Ну запрограммировать, думаю, будет проще.
3. Запускать интерпретатор Lua как отдельный процесс. Скорость самая маленькая, к тому же это тоже сторонний компонент, но маленький, таскать с собой ненапряжно.

Ну если из спортивного интереса - тогда можно и свой парсер написать.

Добавлено через 13 минут
А пардон, забыл - есть же еще Jscript. Тоже хороший вариант.
0
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 9
22.04.2012, 16:26  [ТС]
dondublon, Спасибо. Но я мало, что понял из вышеописанного. Т.к С# изучаю только 3 месяца. И буду очень признателен, если подробней опишите что к чему, как подключить итд. Спасибо)
0
38 / 38 / 10
Регистрация: 08.03.2012
Сообщений: 236
22.04.2012, 16:40
немного не понял, что нужно конкретно.
строка парсингуется так:
C#
1
int x = int.Parse(string s1) //string s1 - это та строка которую тебе надо парсить
0
Эксперт Python
 Аватар для dondublon
4643 / 2059 / 363
Регистрация: 17.03.2012
Сообщений: 10,139
Записей в блоге: 6
22.04.2012, 18:44
Опишу подробнее.
1. Динамическая компиляция C# - т.е. в своей программе вы генерируете код класса (на C#) и подаете его компилятору (входит в .net framwork с самого начала). Тот компилирует, готовую длл-ку вы цепляете к вашей программе. Цепляете в run-time, не по правой кнопке.

2. Сторонние интерпретаторы. Из задача - выполнять код без компиляции, на то они и интерпретаторы. Их надо тащить с собой. У каждого свой способ подлючения к основной программе.
3. Lua (под windows, не под .net) - просто я с ней работал, очень простой и маленький интерпретатор. Общаться с программой через консоль, ты ей на вход print(<выражение>) - она тебе на выход результат. Будет относительно медленно.
4. JScript - описано тут http://www.codeproject.com/Art... ript-s-Eva .

Добавлено через 3 минуты
Вдогонку - насчет JScript посмотрите лучший ответ тут.
http://stackoverflow.com/quest... xpressions
Сам такие фишки не проворачивал.

Добавлено через 17 минут
и еще вдогонку: http://flee.codeplex.com/
1
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 9
22.04.2012, 21:18  [ТС]
Nike Jagger

Мне нужно из TextBox внести в программу строку Math.(лалала)*/+-x*x.. не важно какую подынтегральную функцию. И внеся её в программу заменить все символы х(переменные в интеграле) на те цифры , что получает функция. И выполнить расчет получившейся строки с математической токи зрения. Как если бы я прописал эту строку(Math.(лалала)*/+-x*x) в коде программы. Если я прописываю любую формулу в приведенном выше примере. То программа работает нормально. Иксы меняются на цифры и выводит ответ.

dondublon
1. Если я правильно понимаю, то я должен введенное пользователем подынтегральное выражение сохранить в файле с расширением длл. А в программе вызвать этот файл??? Если да. То как мне тогда поменять там все Иксы? И вызвать тот самый файл.

2."выполнять код без компиляции" Собственно что и нужно. Пытаюсь найти подходящее, пока чем глубже тем хуже)
3. Тут все плохо.
4. Попробую покапать в эту сторону. Спасибо.
0
Эксперт Python
 Аватар для dondublon
4643 / 2059 / 363
Регистрация: 17.03.2012
Сообщений: 10,139
Записей в блоге: 6
22.04.2012, 21:43
по п.1. - выражение ты сохраняешь в файле с расширением .cs. А его компилируешь в dll.
по 2 и 3 - да не сцы, все через это проходят
по 4. Я, кстати, ща провернул. Ругается, что объект deprecated и вообще not recommended. Но работает.
1
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 9
22.04.2012, 22:52  [ТС]
Вот что склеил в консольке. Работает. Осталось доделать на Forms и внести свои данные.

скачал using info.lundin.math; с http://www.lundin.info/mathparser.aspx
Поддерживает:
Operators:

+, -, *, /, ^, %

Functions:

sqrt, sin, cos, tan, atan, acos, asin, acotan, exp, ln, 10log, fac, sinh, cosh, tanh, abs, ceil, floor, sfac, round, fpart.

Logical:

!, ==, !=, ||, &&, >, < , >=, <=





Hashtable в using System.Collections;

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
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using info.lundin.math;
  // needs a reference to Microsoft.JScript.dll
 
 
 
 
namespace ConsoleApplication2
{
 
 
    class Program
    {
 
 
   static void Main(String[] args)
{
// Instantiate the parser
ExpressionParser parser = new ExpressionParser();
// Create a hashtable to hold values
Hashtable h = new Hashtable();
// Add variables and values to hashtable
h.Add( "x", 1.ToString() );
h.Add( "y", 2.ToString() );
// Parse and write the result
double result = parser.Parse(Console.ReadLine(), h);
Console.WriteLine( "{0}", result );
Console.Read();
}
    }
}
к примеру ввел xcos(y) работает и тп. Значения менять думаю будет не сложно h.Add( "x", 1.ToString() );

Добавлено через 40 минут
Осталась одна проблема. Решив её думаю всё будет работать
в функции не получается сделать так к примеру



C#
1
2
3
4
5
        static double f(double x) 
        { 
 x = Double.Parse(textBox3.Text);//выделает textBox3
 
            return x;
и сообщает что:
Ошибка 1 Для нестатического поля, метода или свойства "Kurs.Form1.textBox3" требуется ссылка на объект

как обойти это. Потому что ввод нужно организовать именно в функии.

Добавлено через 13 минут
Прописываю её в глобальную переменную
C#
1
2
3
public partial class Form1 : Form
    {
        string ss = textBox3.Text;....
Точно такая же ошибка. + не видит как я вызываю эту глобальную переменную в функции
0
Эксперт Python
 Аватар для dondublon
4643 / 2059 / 363
Регистрация: 17.03.2012
Сообщений: 10,139
Записей в блоге: 6
23.04.2012, 07:26
Ну во-первых, почему ты в функции присваиваешь иксу? Очепятка?

Насчет static field - правильно, в статической функции к нестатическим полям ты обращаться не можешь. Передавай туда string (который textBox3.Text) как аргумент.
1
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 9
23.04.2012, 15:10  [ТС]
dondublon
Спасибо за помощь)) рэпы +АдЫн?)) Одна из твоих ссылок навела на то, чем я все сделал )) Курсач готов))
0
Эксперт Python
 Аватар для dondublon
4643 / 2059 / 363
Регистрация: 17.03.2012
Сообщений: 10,139
Записей в блоге: 6
23.04.2012, 15:19
велкам!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2012, 15:19
Помогаю со студенческими работами здесь

Вычисление определенного интеграла методом криволинейных трапеций
Подскажите пожалуйста, написать консольную программу на C# для вычисления определенного интеграла методом криволинейных трапеций, интеграл...

Вычисление определенного интеграла методом криволинейных трапеций
Помогите пожалуйста написать программу вычисления определенного интеграла методом криволинейных трапеций интеграл : ...

Вычисление определенного интеграла. Подскажите, что от меня требуется?
Имеется задача вот такая задача: Мне непонятно что от меня требуется. Хотелось бы получить блок-схему или описание алгоритма...

Вычисление определённого интеграла от функции, заданной таблично
Здравствуйте! Помогите, пожалуйста. Необходимо вычислить определённый интеграл от функции, заданной таблично. В simulink делаю так, clock -...

Вычисление определенного интеграла функции F(x) на заданном отрезке
составить алгоритм и написать программу вычисления определенного интеграла функции F(x) на заданном отрезке, указанным методом. Функция...


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

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

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru