Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 112

Нужно написать на питоне в библиотеке (numpy)

24.12.2020, 14:57. Показов 2472. Ответов 12

Студворк — интернет-сервис помощи студентам
1.Используйте метод Эйлера с размером шага h = 0,1, чтобы найти приближенные значения решения при x = 0,1, 0,2, 0,3, 0,4 и 0,5. сравните их с точными значениями решения в этих точках.
2.Используйте метод Эйлера, чтобы найти приближение к решению при t = 1, t = 2, t = 3, t = 4 и t=5. Используйте h = 0.1, h = 0.05, h = 0.01, h = 0.005 и h = 0.001 для аппроксимаций.
Миниатюры
Нужно написать на питоне в библиотеке (numpy)  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2020, 14:57
Ответы с готовыми решениями:

Нужно написать программу на питоне
Всем доброго времени суток, нужно решить вот такую задачу: Напишите программу в виде отдельного модуля, которая в зависимости от...

Нужно написать программу на питоне
Дана строка символов. Определите длину самого короткого и самого длинного слова.

Нужно написать программу на питоне
4. Определить, содержит ли текст хотя бы один вопросительный знак, и подсчитать их количество. Удалить из теста все точки.

12
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
24.12.2020, 20:17
Аъзамжон, не уверен, что нужно было так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
from math import exp
h = 0.1
x = np.zeros((11,3))
x[0] = np.array([0, -11, 27])
for i in range(1, 11) :
    x[i][0] = x[i-1][0] + h 
    x[i][1] = x[i-1][1] + x[i-1][2] * h
    x[i][2] = 5. - 2.*x[i][1] - exp(-4.*x[i][0])
#print(x)
y = lambda a: (5 + exp(-4 * a)) / 2 - 14 / exp(2 * a)
for i in range(1,6) :
    xi = x[np.argmax(x[:,0] == h * i), 1]
    xr = y(h * i)
    print('x= {:.1f} y= {:.3f} => {:.3f}'.format(h * i, xi, xr))
Но, к сожалению, не знаю, как функционально изменять значения элементов в numpy массиве.
2
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 112
24.12.2020, 20:44  [ТС]
а я пытался сделать таким методом но запутался
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
 
 
def f(x,y):
    return 2-e**(-4*x)-2*y
 
n=float(input('x:'))
h=float(input('Input the step:'))
 
xx0=0
yy0=11
 
for j in np.arange(1,n):
    yy1=yy0+f(xx0,y0)*h
    xx1=xx0+h
    if xx[1]=0.1
    print(yy1)
    break
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
24.12.2020, 22:16
Аъзамжон, второе задание. Но без numpy (куда его там прикрутить? И зачем?)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from math import exp, sin, cos
def euler(x = 0., y = 0., h = 0.1, n = 10000):
    n = int(x / h)
    x = 0.
    for i in range(n):
        y += h * function(x, y)
        x += h
    return x, y
 
def function(x, y):
    return y + exp(x/2) * (cos(5*x) + sin(5*x))
 
y0 = 0.
h = [0.1, 0.05, 0.01, 0.005, 0.001]
t = [1., 2., 3., 4., 5.]
for x in t :
    print('t = ', x)
    for d in h :
        print('y = {:.3f}  h = {}'.format(euler(x, y0, d)[1], d))
    print()
1
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 112
25.12.2020, 04:54  [ТС]
Вот тоже мне не понятно суть задачи. От меня требуют чтобы я использовал библиотеку numpy

import numpy as np
.....
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
25.12.2020, 09:01
Аъзамжон, может это?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
from math import exp, sin, cos
def euler(xy, h = 0.1, n = 10000):
    x = xy[0]
    n = int(x / h)
    xy[0] = 0.
    for i in range(n):
        xy = xy + np.array([h, h * function(xy)])
    return xy
 
def function(xy):
    x, y = map(float, xy.tolist())
    return y + exp(x/2) * (cos(5*x) + sin(5*x))
 
y0 = 0.
h = [0.1, 0.05, 0.01, 0.005, 0.001]
t = [1., 2., 3., 4., 5.]
for x in t :
    print('t = ', x)
    for d in h :
        fxy = np.array([x,y0])
        print('y = {:.3f}  h = {}'.format(euler(fxy, d)[1], d))
    print()
Добавлено через 30 минут
Аъзамжон, И первая задача. В ней в функции euler изменил цикл из-за ошибок округления:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
from math import exp, sin, cos
def euler(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        xy = xy + np.array([h, h * function(xy)])
    return xy
 
def function(xy):
    x, y = map(float, xy.tolist())
    return 5. - 2.*y - exp(-4.*x)
 
y0 = -11.
h = 0.1
t = [0.1, 0.2, 0.3, 0.4, 0.5]
for x in t :
    fxy = np.array([x,y0])
    print('x = {:.1f} y = {:.3f}'.format(*map(float, euler(fxy, h).tolist())))
1
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 112
25.12.2020, 09:08  [ТС]
Спасибо большое
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
25.12.2020, 20:53
Gdez,можно exp, sin, cos не из math брать, а из numpy
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
25.12.2020, 21:33
u235, "вылетело".
Если читал с начала, то - начинал без numpy. Поэтому...
0
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 112
19.01.2021, 17:15  [ТС]
Здравствуйте, еще раз а если у мне нужно использовать метод RK4(runje kutta) и метод Хойна (Heun's) как я могу написать программу. С такими условиями

Добавлено через 2 часа 2 минуты
Gdez, а методом Ралстон, (midpoint)?
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.01.2021, 19:58
Лучший ответ Сообщение было отмечено Аъзамжон как решение

Решение

Аъзамжон,
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
import numpy as np
from math import exp, sin, cos
def euler(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        xy = xy + np.array([h, h * function(xy)])
    return xy
    
def RK4(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        k1 = function(xy)
        xy2 = xy + np.array([h/2, h/2 * k1])
        k2 = function(xy2)
        xy3 = xy + np.array([h/2, h/2 * k2])
        k3 = function(xy3)
        xy4 = xy + np.array([h, h * k3])
        k4 = function(xy4)
        xy = xy + np.array([h, h * (k1 + 2*(k2 + k3) + k4) / 6])
    return xy
 
def function(xy):
    x, y = map(float, xy.tolist())
    return 5. - 2.*y - exp(-4.*x)
 
y0 = -11.
h = 0.1
t = [0.1, 0.2, 0.3, 0.4, 0.5]
print('Метод Эйлера')
for x in t :
    fxy = np.array([x,y0])
    print('x = {:.1f} y = {:.3f}'.format(*map(float, euler(fxy, h).tolist())))
 
print()
 
print('Метод Рунге — Кутты')
for x in t :
    fxy = np.array([x,y0])
    print('x = {:.1f} y = {:.3f}'.format(*map(float, RK4(fxy, h).tolist())))
Добавлено через 15 минут
Аъзамжон,
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
import numpy as np
from math import exp, sin, cos
def euler(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        xy = xy + np.array([h, h * function(xy)])
    return xy
    
def Heun(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        s1 = function(xy)
        xy2 = xy + np.array([h, h * s1])
        s2 = function(xy2)
        xy = xy + np.array([h, h * (s1 + s2) / 2])
    return xy
 
def function(xy):
    x, y = map(float, xy.tolist())
    return 5. - 2.*y - exp(-4.*x)
 
y0 = -11.
h = 0.1
t = [0.1, 0.2, 0.3, 0.4, 0.5]
print('Метод Эйлера')
for x in t :
    fxy = np.array([x,y0])
    print('x = {:.1f} y = {:.3f}'.format(*map(float, euler(fxy, h).tolist())))
 
print()
 
print('Метод Хойна ')
for x in t :
    fxy = np.array([x,y0])
    print('x = {:.1f} y = {:.3f}'.format(*map(float, Heun(fxy, h).tolist())))
Добавлено через 29 минут
Аъзамжон, Вторая задача
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
62
63
64
65
66
67
68
import numpy as np
 
def function(xy):
    x, y = map(float, xy.tolist())
    return y + np.exp(x/2) * (np.cos(5*x) + np.sin(5*x))
 
y0 = 0.
h = [0.1, 0.05, 0.01, 0.005, 0.001]
t = [1., 2., 3., 4., 5.]
 
print('Метод Эйлера')
def euler(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        xy = xy + np.array([h, h * function(xy)])
    return xy
 
for x in t :
    print('t = ', x)
    for d in h :
        fxy = np.array([x,y0])
        print('y = {:.3f}  h = {}'.format(euler(fxy, d)[1], d))
    print()
 
print()
 
print('Метод Хойна ')
def Heun(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        s1 = function(xy)
        xy2 = xy + np.array([h, h * s1])
        s2 = function(xy2)
        xy = xy + np.array([h, h * (s1 + s2) / 2])
    return xy
 
for x in t :
    print('t = ', x)
    for d in h :
        fxy = np.array([x,y0])
        print('y = {:.3f}  h = {}'.format(Heun(fxy, d)[1], d))
    print()
 
print()
 
print('Метод Рунге — Кутты')
def RK4(xy, h = 0.1, n = 10000):
    x = xy[0]
    xy[0] = 0.
    while x - xy[0] > 0:
        k1 = function(xy)
        xy2 = xy + np.array([h/2, h/2 * k1])
        k2 = function(xy2)
        xy3 = xy + np.array([h/2, h/2 * k2])
        k3 = function(xy3)
        xy4 = xy + np.array([h, h * k3])
        k4 = function(xy4)
        xy = xy + np.array([h, h * (k1 + 2*(k2 + k3) + k4) / 6])
    return xy
 
for x in t :
    print('t = ', x)
    for d in h :
        fxy = np.array([x,y0])
        print('y = {:.3f}  h = {}'.format(RK4(fxy, d)[1], d))
    print()
1
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 112
19.01.2021, 20:27  [ТС]
Gdez, спасибо за программы , смотри а если дана обычное дифференциальное уравнения. То после def ... придётся писать
return 5-np.exp**(-4)-2 и потом xxo=0 yy0=..(0) ?
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.01.2021, 21:09
Аъзамжон, в задании и так обычная диффура первого порядка.
Для решения этими кодами нужно производную оставить в левой части, а остальные члены перенести вправо. Вот эта правая часть и прописывается в function().
y0 -> y(0) - значение функции при х = 0
В принципе можно для любого x, но придется часть переписать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2021, 21:09
Помогаю со студенческими работами здесь

Нужно написать программу на питоне
Задан список, содержащий в своем составе кортежи. Найти все кортежи, которые содержат элемент, равный 5.

Нужно написать программу на питоне
Сторонники языков Java и C++ часто спорят о том, какой язык лучше для решения олимпиадных задач. Одни говорят, что в Java есть масса ...

Нужно написать в питоне небольшую программку
Нужно, чтобы открывало файл, затем читало в нем цитаты, которые там есть и затем случайно выводилось одна из цитат на экран.

Очень нужно написать программку на Питоне
Срочно нужна помощь в составлении небольшой программки. Ссылка на задачу следующая: Я даже толком понять не могу, чего от меня хотят? ...

Нужно найти детерминант используя numpy
Найти детерминант используя numpy но не используя np. linalg. det


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru