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

Python: научные вычисления

Войти
Регистрация
Восстановить пароль
 
селин
0 / 0 / 0
Регистрация: 22.09.2016
Сообщений: 11
#1

Решение уравнения и его график - Python

13.11.2016, 17:30. Просмотров 395. Ответов 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
from math import log
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
 
""" 
Дано диф.ур-е L"+2(L')^2=0
После замены L' на r: dr/dx=-2*(r)^2
Зададим вектор: c(L,r)
Получим систему уравнений
"""
def f(c,x) :
    L,r=c
    return [r,-2*(r**2)] 
    
""" Создаем массив точек интегрирования """    
i= np.arange (10,40,0.1) 
 
""" НУ(L(10)=1,L'(10)=1),выразим их через вектор """
c0 = [10,1] 
 
""" численное решение  """ 
sol = integrate.odeint(f,c0,i) 
 
""" Аналитическое решение L=(1/2)*ln(2x-19)+1 """
def f_an(x) :
    return 0.5*log(2*x-19)+1 
    
""" Аналитическое решение в массиве """    
an_sol = f_an(i) 
print(an_sol)
 
""" Добавляем в окно рисунок для числ. и ан.решений, и относ.погрешности""" 
my_fig = plt.figure() 
pic = my_fig.add_subplot(111) 
pic1 = my_fig.add_subplot(114)
 
""" Назовем рисунки """
pic.set_title("sol,an_sol")
pic1.set_title("Error")
 
""" Подписываем оси""" 
pic.set_xlabel("x", size=20)
pic.set_ylabel("y", size=20)
pic1.set_xlabel("x", size=20)
pic1.set_ylabel("y", size=20)
 
""" Рисуем графики """ 
p1,=pic.plot(i,sol,'r..o')
p2,=pic.plot(i,an_sol,'b--s')
p3,=pic1.plot(i, (sol-an_sol)/(an_sol))
 
""" Добавим легенду """
pic.legend([p1,p2],["sol","an_sol"],loc="upper left")
На выходе должны получиться 2 графика: на 1-м (числ.и анал.решения), а на 2-м относит.погрешность. Не могу понять, почему программа не выдает график??? Выдает ошибку TypeError: only length-1 arrays can be converted to Python scalars
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2016, 17:30     Решение уравнения и его график
Посмотрите здесь:
Найти решение заданного уравнения, построить график полученного решения MathCAD
Matlab Найти решение заданного уравнения, построить график полученного решения
решение заданного дифференциального уравнения,построить график полученного решения MathCAD
Найти решение заданного дифференциального уравнения, построить график полученного решения Matlab
Visual Basic Парсинг строки уравнения и его решение
Visual Basic .NET Решение уравнения, нахождение середины его корней
Определить вид диф. уравнения и найти его общее решение
Определить вид диф. уравнения и найти его общее решение
Найти общее решение уравнения, приведя его к каноническому виду
Указать тип дифференциального уравнения и найти его общее решение
Определить вид диф. уравнения и найти его общее решение
Delphi Решение уравнения методом половинного деления и постойка его графика

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Лысанов Виталий
7 / 8 / 2
Регистрация: 24.01.2015
Сообщений: 78
Записей в блоге: 6
28.03.2017, 00:21     Решение уравнения и его график #2
Цитата Сообщение от селин Посмотреть сообщение
Выдает ошибку TypeError: only length-1 arrays can be converted to Python scalars
Ругается на log, хочет np.log

С графикой еще вопросы.
Код ниже начинает рисовать.

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
from math import log
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
 
""" 
Дано диф.ур-е L"+2(L')^2=0
После замены L' на r: dr/dx=-2*(r)^2
Зададим вектор: c(L,r)
Получим систему уравнений
"""
def f(c,x) :
    L,r=c
    return [r,-2*(r**2)] 
    
""" Создаем массив точек интегрирования """    
i= np.arange (10,40,0.1) 
 
""" НУ(L(10)=1,L'(10)=1),выразим их через вектор """
c0 = [10,1] 
 
""" численное решение  """ 
sol = integrate.odeint(f,c0,i) 
 
""" Аналитическое решение L=(1/2)*ln(2x-19)+1 """
def f_an(x) :
    return 0.5*np.log(2*x-19)+1 
    
""" Аналитическое решение в массиве """    
an_sol = f_an(i) 
 
plt.plot(i,sol)
plt.show()
Yandex
Объявления
28.03.2017, 00:21     Решение уравнения и его график
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru