5 / 5 / 4
Регистрация: 07.01.2013
Сообщений: 35

Изменить работу с массивами (коэффициент корреляции, фазовые портреты)

28.03.2017, 16:07. Показов 966. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По заданию необходимо построить график для коэффициентов корреляции. Сами коэффициенты вычисляются на основе исходных массивов и массивов, у которых начальное значение отличается на 0,005 от исходных (рекурсивно от предыдущих).
График нужно построить по 10 значениям, т.е. грубо говоря, нужны 3 исходных массива и ещё 30 дополнительных.
Изначально переписывала код из Matlab в Python. Подскажите способ, как изменить код (на python), чтобы не заводить 30 массивов, или же как перевести из matlab в python код с упрощённой работой с массивами.
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import sys
import math
import matplotlib.pyplot as plt
import array
import numpy as np
 
N=26000
dt = 0.01
al=7 
bet=9
gam=0
 
def h(x):
    m0 = -(8.0/7.0)
    m1 = -(5.0/7.0)
    return m1*x + 0.5*((m0-m1)*(abs(x+1) - abs(x-1))) 
 
x = [0]*N
y = [0]*N
z = [0]*N
t = [0]*N
xd = [0]*N
yd = [0]*N
zd = [0]*N
x2 = [0]*N
y2 = [0]*N
z2 = [0]*N
x3 = [0]*N
y3 = [0]*N
z3 = [0]*N
x4 = [0]*N
y4 = [0]*N
z4 = [0]*N
masx = []
x[0] = 0.01
y[0] = 0.02
z[0] = 0.15
 
for i in range(0,len(t)):
        t[i]=i*dt
 
for i in range(1,len(x)):
    x[i] = x[i-1] + al*dt*(y[i-1]-x[i-1]-h(x[i-1]))
    y[i] = y[i-1] + dt*(x[i-1]-y[i-1]+z[i-1])
        z[i] = z[i-1] + dt*(gam*z[i-1]-bet*y[i-1])
 
xd[0] = x[0]+0.005 
yd[0] = y[0]+0.005
zd[0] = z[0]+0.005
masx.append(xd[0])
 
for id in range(1,len(xd)):
    xd[id] = xd[id-1] + al*dt*(yd[id-1]-xd[id-1]-h(xd[id-1]))
    yd[id] = yd[id-1] + dt*(xd[id-1]-yd[id-1]+zd[id-1])
        zd[id] = zd[id-1] + dt*(gam*zd[id-1]-bet*yd[id-1])
 
x2[0] = xd[0]+0.005  
y2[0] = yd[0]+0.005
z2[0] = zd[0]+0.005
masx.append(x2[0])
 
for i2 in range(1,len(x2)):
        x2[i2] = x2[i2-1] + al*dt*(y2[i2-1]-x2[i2-1]-h(x2[i2-1]))
        y2[i2] = y2[i2-1] + dt*(x2[i2-1]-y2[i2-1]+z2[i2-1])
        z2[i2] = z2[i2-1] + dt*(gam*z2[i2-1]-bet*y2[i2-1])
 
x3[0] = x2[0]+0.005
y3[0] = y2[0]+0.005
z3[0] = z2[0]+0.005
masx.append(x3[0])
 
for i3 in range(1,len(x3)):
        x3[i3] = x3[i3-1] + al*dt*(y3[i3-1]-x3[i3-1]-h(x3[i3-1]))
        y3[i3] = y3[i3-1] + dt*(x3[i3-1]-y3[i3-1]+z3[i3-1])
        z3[i3] = z3[i3-1] + dt*(gam*z3[i3-1]-bet*y3[i3-1])
 
x4[0] = x3[0]+0.005
y4[0] = y3[0]+0.005
z4[0] = z3[0]+0.005
masx.append(x4[0])
 
for i4 in range(1,len(x4)):
        x4[i4] = x4[i4-1] + al*dt*(y4[i4-1]-x4[i4-1]-h(x4[i4-1]))
        y4[i4] = y4[i4-1] + dt*(x4[i4-1]-y4[i4-1]+z4[i4-1])
        z4[i4] = z4[i4-1] + dt*(gam*z4[i4-1]-bet*y4[i4-1])
 
#plt.xlabel(r'$t$') 
#plt.ylabel(r'$x,y,z$') 
#plt.title(r'$x(t),y(t),z(t)$')
#plt.grid(True) 
#plt.plot(t,x,t,y,t,z)
#plt.plot(t,xd,t,yd,t,zd)
#plt.plot(x,y)
#plt.plot(t,x,t,xd)
#plt.show()
c = np.corrcoef(x,xd)
r=[]
r.append(round(c[0,1],5))
c1 = np.corrcoef(x,x2)
r.append(round(c1[0,1],5))
c2 = np.corrcoef(x,x3)
r.append(round(c2[0,1],5))
c3 = np.corrcoef(x,x4)
r.append(round(c3[0,1],5))
print r
print masx
plt.plot(masx,r)
plt.show()
Код из matlab, где решена проблема с массивами (не 30 штук...), но непонятно как перевести в python.
Matlab M
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
function korel
delt=0.01;
t=0:delt:100;
m=length(t);
ch(1)=1e-6;
[x,y,z] = generate(0.001, 0.001, 0.001, m);
first=x;
hwait = waitbar(0,'Please wait...'); 
M = 10;
for k=1 : M
waitbar(k/M, hwait)
pause(0.01)
ch(k)=ch(1)*k;
[x,y,z] = generate(0.001+ch(k), 0.001, 0.001, m);
cc = corrcoef(first,x);
r(k) = cc(1,2);
fprintf('%d\n',r(k))
end
close(hwait)
plot(ch,r,'r');
end
function [x,y,z] = generate(x0, y0, z0, mN)
x(1)=x0;
y(1)=y0;
z(1)=z0;
A=7;
B=10;
Y=0;
m0=-8/7;
m1=-5/7;
dt=0.01;
m=mN;
for i=2 : m
h=m1*x(i-1)+(1/2)*(m0-m1 )*(abs(x(i-1)+1)-abs(x(i-1)-1));
x(i)=x(i-1)+dt*(A*(y(i-1)-x(i-1)-h));
y(i)=y(i-1)+dt*(x(i-1)-y(i-1)+z(i-1));
z(i)=z(i-1)+dt*(-B*y(i-1)+Y*z(i-1)); 
end
end
Заранее спасибо за помощь!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2017, 16:07
Ответы с готовыми решениями:

Фазовые портреты
Добрый вечер! Подскажите пожалуйста. Как объединить несколько фазовых портретов в один?

Фазовые портреты
Нужна помощь в построении фазового портрета для функции: x=; y=exp(-x)-sin(x); и для системы (на фото) Помогите,...

Фазовые портреты в Matlab
1)В Справочном пособии М.Тынкевича www.exponenta.ru/educat/systemat/pimonov/matlab/syst/glava8.asp описан метод построения фазовых...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2017, 16:07
Помогаю со студенческими работами здесь

Нарисовать фазовые портреты в maple
Здравствуйте!помогите пожалуйста нарисовать фазовые портреты для решения системы из трех дифференциальных уравнений первого порядка.

Нарисуйте фазовые портреты дифференциального уравнения
Помогите пожалуйста я не знаю как выполнить 2. Пусть \frac{dx}{dt} = x({x}^{6} - 2{x}^{3} + r) дифференциальное уравнение,...

Построить переходные процессы и фазовые портреты u1 u2 u3
построить переходные процессы и фазовые портреты u1 u2 u3 я вроде почти сделал но я не могу вывести графики на экран их 6 должно быть....

Фазовые портреты в Mathcad или других программах
Здравствуйте. Пожалуйста, может кто выручить начертить фазовые портреты в программе, уже решенной системы. Ниже представляю решение...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru