0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 9
|
||||||
Вычисление определенного интеграла функции F(x) (любой пример)21.04.2012, 20:12. Показов 14406. Ответов 10
Метки нет Все метки)
(
Здравствуйте. Помогите пожалуйста дописать программу вычисляющую определенный интеграл от любой введенной пользователем функции (на подобии онлайн калькуляторов определенных интегралов).
А именно я реализовал два метода: Метод Гаусса и Метод трапеций, а сложность заключается в том, что не могу ввести функцию заданную пользователем в программу для подстановки. В ходе решения я прихожу к функции :
Так вот, не могу запихнуть в программу это самое Math.Sin(x) для последующей замены. Выяснил , что необходимо парсинговать строку введенную в текстбокс. А вот справится не могу с этим. Спасибо.
0
|
21.04.2012, 20:12 | |
Ответы с готовыми решениями:
10
Вычисление определённого интеграла методом трапеции Вычисление определенного интеграла методом парабол (Симпсона) |
![]() ![]() |
|
22.04.2012, 12:50 | |
Имхо, тут не надо писать своих велосипедов, воспользуйтесь готовым.
Я вижу три способа. 1. динамическая компиляция C#. Плюсы - самая высокая скорость, никаких сторонних компонентов (за рамками .net framework). 2. Воспользоваться готовым интерпретатором (IronPython, Boo, PowerShell). Минусы - нужны доп. компоненты, скорость ниже. Ну запрограммировать, думаю, будет проще. 3. Запускать интерпретатор Lua как отдельный процесс. Скорость самая маленькая, к тому же это тоже сторонний компонент, но маленький, таскать с собой ненапряжно. Ну если из спортивного интереса - тогда можно и свой парсер написать. Добавлено через 13 минут А пардон, забыл - есть же еще Jscript. Тоже хороший вариант.
0
|
![]() ![]() |
|
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
|
![]() ![]() |
|
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;
Добавлено через 40 минут Осталась одна проблема. Решив её думаю всё будет работать в функции не получается сделать так к примеру
Ошибка 1 Для нестатического поля, метода или свойства "Kurs.Form1.textBox3" требуется ссылка на объект как обойти это. Потому что ввод нужно организовать именно в функии. Добавлено через 13 минут Прописываю её в глобальную переменную
0
|
![]() ![]() |
|
23.04.2012, 07:26 | |
Ну во-первых, почему ты в функции присваиваешь иксу? Очепятка?
Насчет static field - правильно, в статической функции к нестатическим полям ты обращаться не можешь. Передавай туда string (который textBox3.Text) как аргумент.
1
|
![]() ![]() |
|
23.04.2012, 15:19 | |
велкам!
0
|
23.04.2012, 15:19 | |
Помогаю со студенческими работами здесь
11
Вычисление определённого интеграла от функции, заданной таблично Вычисление определенного интеграла функции F(x) на заданном отрезке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Компиляция 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
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
|