|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.05.2009, 01:18 | #1 |
Регистрация: 24.02.2009
Сообщений: 3
|
Помогите найти ошибку плиз
Мне необходимо найти все значения аргумента при значении функции равному 0, написал код тока проблема в том что напутал с шагом и немогу найти, вот код:
Код:
Последний раз редактировалось EducatedFool; 24.05.2009 в 10:40. |
15.05.2009, 02:20 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Уж слишком много лишнего кода, а проверка функция=0 вообще отсутствует... Попробуй так: Код:
|
|
15.05.2009, 04:24 | #3 |
Регистрация: 24.02.2009
Сообщений: 3
|
Я писал сам, но смысл в чем, отделение корней функции методом деления отрезка по палам, поэтому - то я и использовал дополнительно процедуру, т.к. хотел вывести не все а только именно эти значения, смысл метода: если на концах отрезка (подставить значения х в функцию) разные знаки то на етом промежутке ест корень, вот он то мне и нужен, а насчет проверки на ноль то в такой функции вероятность того что я табулируя ее попаду в 0 - 0.000000000000000001 поетому я и не делал проверку
ну точнее 2 процедуры Обьясню немного подробнее. Необходимо отделить корни функции методом деления отрезка по полам. Суть метода если на отрезке функция принимает значения с разными знаками, то на етом отрезке есть корень По тексту: Получаем начальные параметры. затем проверяем знак функции + или -, в зависимости от знака вызываем процедуру, которые выполняют одни и те же действия: проверяют значение функции покуда она не поменяет знак, затем прерывается и передает в процедуру параметры х и у которые и нужны шаг мона и не передавать. затем выводятся искомые значения и по новому кругу. У меня чего то не правильно работает скорее всего, что то не то или не так передаю в главную процедуру, но не могу понять что именно. Последний раз редактировалось EducatedFool; 24.05.2009 в 10:39. |
15.05.2009, 15:59 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
во вложении поиск решения методом деления отрезка пополам.
варианты с формулами и с ВБА. В примере найден один из корней функции у = х^2 - 3x + 1 (кстати, второй между х=2 и х=3) Для получения решения для вашей функции с помощью ВБА достаточно переписать код, выделенный красным Код:
Для получения решения в таблице (с помощью формул) процедура по-сложнее: 1. в строке с первым приближением под у1 пишем новую формулу ссылаясь на значение под х1. 2. копируем ее и вставляем в две соседние ячейки под у2 и у (4-я строка, 6, 7 колонки) 3. вставляем ее еще раз в три ячейки на строку ниже (5-я строка, 5, 6, 7 колонки) 4. копируем строку с вторым приближением (строка 5 таблицы) 5. вставляем скопированную строку в 20-30 строк ниже. 6. задаем х1, х2 для первого приближения (строка 4) 7. возможно задать другую точность вычислений Вообще задача стоит найти значение х, при котором у = 0. В связи с тем, что используется приближенный метод, точность в обоих случаях задает насколько вычисленное значение функции может отличаться от нуля
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 15.05.2009 в 16:18. |
15.05.2009, 19:37 | #5 |
Регистрация: 24.02.2009
Сообщений: 3
|
Спасибо большое все так, но если функция будет Sin(x) (например) а отрезок большой, ведь если 2 корня (к премеру или больше) то функция на обеих концах будет положительна. Просто вводимый отрезок мне не известен.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите найти ошибку | Pirat_of | Microsoft Office Access | 2 | 08.05.2009 00:42 |
Помогите найти ошибку | Anat | JavaScript, Ajax | 12 | 28.01.2009 23:50 |
помогите найти ошибку | MyQwErTy | Помощь студентам | 1 | 05.11.2008 21:24 |
помогите найти ошибку в коде плиз | Айат | Помощь студентам | 2 | 01.10.2008 17:43 |