Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 9

Реализация методов оптимизации (метод касательных и метод парабол)

16.09.2016, 21:35. Показов 7226. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите найти ошибку, программы неправильно считают. В методе касательных, скорее всего производные неправильно считает, по-другому не нашел способ как сделать. В методе парабол все делал по алгоритму, но все равно не считает.
Python
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
import math
from numpy import *
def func(x):
     return math.cos(x)-math.sqrt(x);
print ("Введите 4 действительных числа, a c b Eps, после каждого введенного числа нажимайте клавишу Enter:")
a = int(input())
c = int(input())
b = int(input())
Eps = float(input())
 
print (" Вы ввели",a,c,b,Eps)
ya=func(a)
yc=func(c)
yb=func(b)
t=c+1/2*(((b-c)*(b-c))*(ya-yc)-((c-a)*(c-a))*(yb-yc))/((b-c)*(ya-yc)+(c-a)*(yb-yc))
if t!=c:
    x=t
else:
    x=(a+c)/2        
y=func(x)
k=0
print(t,x,y)
while (b-a)>(2*Eps): 
    if x<c:
        if y<yc:
            b=c
            c=x
            yb=yc
            yc=y
        elif y>yc:
            a=x
            ya=y
        else :
            a=x
            b=c
            c=(x+c)/2
            ya=y
            yb=yc
            yc=func(c)
    elif x>c:
        if y<yc:
            a=c
            c=x
            ya=yc
            yc=y
        elif y>yc:
            b=x
            yb=y
        else :
            a=c
            b=x
            c=(x+c)/2
            ya=yc
            yb=y
            yc=func(c)
    else:
        break
    k=k+1
Xsr=(a+b)/2
Ysr=func(Xsr)
print("Среднее значение корня равно {0:.6f}, значении функции {1:.6f}, достигнуто за {2:} шагов".format(Xsr,Ysr,k))
При подстановке значений (1 2 3 0.0001) выходит сообщение, что результат достигнут за 1 шаг, чего не может быть.

Python
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
from sympy import *
x, y, z, a, b = symbols('x y z a b')
import math
from numpy import *
def func(x):
     return math.cos(x)-math.sqrt(x);
print ("Введите 3 действительных числа, a b Eps после каждого введенного числа нажимайте клавишу Enter:")
x = Symbol('x')
a = int(input())
b = int(input())
Eps = float(input())
print (" Вы ввели",a,b,Eps)
 
y1=func(a)
y2=func(b)
 
str_expr = "diff(cos(x)-sqrt(x),x)" #переделываем строку в формулу
expr = sympify(str_expr)
z1=(expr.subs(x, a)).evalf()
z2=(expr.subs(x, b)).evalf()
print (z1,z2)
k=0
T=0
while b-a>(2*Eps):
    c=((b*z2-a*z1)-(y2-y1))/(z2-z1)
    c=round(c, 6)#округ
    y=func(c)
    y=round(y, 6)
    z=(expr.subs(x, c)).evalf()
    z=round(z, 6)
    print(c,y,z)
    if z==0:
        Xsr=c
        Ysr=y
        T=1
        break
    else:
        if z<0:
            a=c
            y1=y
            z2=z
        else:
            b=c
            y2=y
            z2=z
    k=k+1
if T==0:
    Xsr=(a+b)/2
    Ysr=func(Xsr)
print("Среднее значение корня равно {0:.6f}, значении функции {1:.6f}, достигнуто за {2:} шагов".format(Xsr,Ysr,k))
В данном методе, при подстановке (1 3 0.0001) появляется ошибка "ValueError: math domain error".

Я не прошу написать за меня программу, возможно, кто-то увидит ошибку и сможет подсказать как ее исправить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2016, 21:35
Ответы с готовыми решениями:

Методы Оптимизации: Метод параллельных касательных - нужен алгоритм
Здравствуйте. Помогите пожалуйста с составлением алгоритма по методу параллельных касательных. Пытался читать литературу, но там алгоритмы...

Минимизация в excel разными методами (метод перебора, дихотомия, метод Ньютона, метод касательных)
Минимизация в excel разными методами (метод перебора, дихотомия, метод Ньютона, метод касательных) как в примере (вложения) только с...

Метод половинного деления, метод касательных метод хорд
Ребят, помогите написать программу вычисления действительных корней уравнения методом половинного деления, методом касательных, методом...

1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
19.09.2016, 11:15
Math domain error возникает при недопустимой математической операции (к примеру, логарифм отрицательного числа). Вы даже поленились указать, на какой строке он вывалился. Вряд ли кто-то будет разбираться.

Зачем вам sympy и numpy, если вы их всё равно не используете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2016, 11:15
Помогаю со студенческими работами здесь

Метод хорд, метод касательных, метод половинного деления
Ребят помогите пожалуйста. Задали тему курсовой &quot;Решение нелинейных уравнений (метод хорд, метод касательных, метод половинного...

Метод итерации и метод Ньютона (метод касательных)
Помогите решить методом итерации и методом Ньютона выражение привиденное ниже: e(в степени Х) - e(в степени (-x)) - 2 = 0

Исследовать итерационный метод- метод касательных для решения нелинейных уравнений
прочитал много всего , но сам пример реализовать никак не могу , кто может помогите F(x) = x5+5x+1=0 с...

Найти корни уравнения с точностью 0.001 (метод итераций и метод касательных)
Здравствуйте, помогите,пожалуйста, с кодом. Метод итерации и метод касательных. Хотя бы один из. Функция: x+ln(x)-5=0 C точностью...

Найти корень многочлена скомбинировав метод хорд и метод касательных
Пожалуйста помогите с этой задачкой С данной точностью e вычислить действительный корень многочлена на интервале (a:b), скомбинировав...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru