С Новым годом! Форум программистов, компьютерный форум, киберфорум
Scilab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.11.2018
Сообщений: 23
1

Ошибка "Неправильный индекс"

22.02.2019, 10:57. Показов 2972. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте, товарищи.
Возникла проблема
Есть код, где я решаю 3 системы ДУ
между 2ой и 3ей поменял переменную интегрирования.
Код представлен ниже.
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
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
a=0;
R=1740;
g0=0.00162;
r=1740;
c=3.045;
A3=c^2/(g0*R);
n0=1.95;
 
function dx=syst1(ut,x)
fi=%pi/2;
dx=zeros(4,1);
a=fi-x(2)+x(4);
g=g0.*(R./(R+x(3)*R)).^2;
dx(1)=cos(a)/(1-ut)-(g/g0)*sin(x(2))/n0;
Vorb=sqrt(g*(R+x(3)*R))/c;
dx(2)=(sin(a)/(1-ut)-(g/g0)*cos(x(2))*(1-(x(1)/Vorb)^2)/n0)/x(1);
dx(3)=A3*x(1)*sin(x(2))/n0;
dx(4)=A3*x(1)*cos(x(2))/n0;
endfunction
 
function dx1=syst2(ut,x1)
dx1=zeros(4,1);
fi=%pi/2-(k*(ut-ut1)/(tk2-ut1))
a=fi-x1(2)+x1(4);
g=g0.*(R./(R+x1(3)*R)).^2;
dx1(1)=cos(a)/(1-ut)-(g/g0)*sin(x1(2))/n0;
Vorb=sqrt(g*(R+x1(3)*R))/c;
dx1(2)=(sin(a)/(1-ut)-(g/g0)*cos(x1(2))*(1-(x1(1)/Vorb)^2)/n0)/x1(1);
dx1(3)=A3*x1(1)*sin(x1(2))/n0;
dx1(4)=A3*x1(1)*cos(x1(2))/n0;
endfunction
 
function dx=splain(V,x)
    dx=zeros(2,1);
    a1=k1
    a2=-1*(2*k1*(Vk-V0)-3*(rk-r0))/(Vk-V0)^2
    a3=(k1*(Vk-V0)-2*(rk-r0))/(Vk-V0)^3
    fi1=a1+2*a2*(V-V0)+3*a3*(V-V0)^2
    fi2=2*a2+6*a3*(V-V0)
    fi=r0+a1*(V-V0)+a2*(V-V0)^2+a3*(V-V0)^3
    g=Ul./fi^2
    psi=g*fi1/(V+g*fi1)
    ut=t*n0*g0/c
    g1=(-2*Ul/(psi^3*fi1))
    K=V+g*fi1
    O=1+V*V*(fi)/Ul
    psi1=(g*fi2*V-fi1-g1*fi1*fi1)/K/K
    o=asin(psi*V)
    G=G0*(1-ut)
    n=P/G
    ny=sqrt(n.*n-x(2).*x(2)) //21
    dx(1)=K*x(1)/(c*V)
    dx(2)=(cos(o).*(ny.*g0-g.*O.*cos(o)))./((1-g.*psi).*(x(2)))-psi1.*x(2)./psi
endfunction
P=15900
G0=4877*g0
m=4877;
//V0=Y3(1)*c;
nx0=1.95;
dt1=0.00001
dt2=0.00001
dt3=0.001
tk1=0.05
Ul=4900
tk=0.1
tk2=0.1
k=1.33
 
x0=[10^-12;%pi/2;0;0]; ut0=0; ut=0:dt1:tk1;y=ode("rk",x0,ut0,ut,syst1);
Y=y(:,size(y,'c')); disp(Y)
x1=[Y(1);Y(2);Y(3);Y(4)]; ut1=ut(:,size(ut,'c')); ut2=ut1:dt2:tk2;
//fi=arctg(ut2-ut1/tk2-ut1)
y1=ode("rk",x1,ut1,ut2,syst2);
Y1=y1(:,size(y1,'c')); disp(Y1)
 
t0=tk2*c/(n0*g0)
t00=round(t0)
fi=%pi/2-k
a=fi-y1(2,size(y1,'c'))+y1(4,size(y1,'c'));
nx0=n0/(1-tk2)*cos(a)
k1=y1(3,(tk2-ut1)/dt2)*R/(y1(1,(tk2-ut1)/dt2)*c)
V0=0.153
r0=y1(3,(tk2-ut1)/dt2)*R+R
rk=50+R
ra=1840
Vk=1.665
x2=[tk2];
V=V0:dt3:Vk; 
y2=ode("rk",x2,V0,V,splain);
Выдается следующая ошибка:
Неправильный индекс.
at line 21 of function splain called by :
y2=ode("rk",x2,V0,V,splain);
at line 109 of exec file called by :
ких расчетов в scilabe\splain.sci', -1

Понять не могу, в чем я там ошибся?
Причем такая же ошибка есть в 23 строчке кода.
Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2019, 10:57
Ответы с готовыми решениями:

Поток сообщений - ошибка "Неправильный индекс" в 13 и 14-ой строке
Ошибка "Неправильный индекс" в 13 и 14-ой строке. Помогите разобраться, что там не так ...

Ошибка "Неправильный индекс"
Почему такая вот конструкция : for i = 1 : steps pK_R(i) = pK_R(i + transStep); end...

Неправильный индекс
Начала делать курсовой и тут же споткнулась. V=5.5 X= Y(X)=((2*(X.^3))/4)+(3*(cos(X).^2))...

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс...

4
6954 / 4985 / 2106
Регистрация: 02.02.2014
Сообщений: 13,242
22.02.2019, 11:09 2
2 совета:
1. всегда используйте clc; clear;clf; в начале кода
2. не применяйте буквы, похожие на цифры. например, О и 0

в вашем коде не хватает определения t (строка 11 splain)
0
0 / 0 / 0
Регистрация: 22.11.2018
Сообщений: 23
22.02.2019, 11:31  [ТС] 3
Услышал вас

По поводу определения t: понял, что лучше перейти к другой системе, где дифференцировать буду по времени:
Вот код:
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
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
a=0;
R=1740;
g0=0.00162;
r=1740;
c=3.045;
A3=c^2/(g0*R);
n0=1.95;
 
function dx=syst1(ut,x)
fi=%pi/2;
dx=zeros(4,1);
a=fi-x(2)+x(4);
g=g0.*(R./(R+x(3)*R)).^2;
dx(1)=cos(a)/(1-ut)-(g/g0)*sin(x(2))/n0;
Vorb=sqrt(g*(R+x(3)*R))/c;
dx(2)=(sin(a)/(1-ut)-(g/g0)*cos(x(2))*(1-(x(1)/Vorb)^2)/n0)/x(1);
dx(3)=A3*x(1)*sin(x(2))/n0;
dx(4)=A3*x(1)*cos(x(2))/n0;
endfunction
 
function dx1=syst2(ut,x1)
dx1=zeros(4,1);
fi=%pi/2-(k*(ut-ut1)/(tk2-ut1))
a=fi-x1(2)+x1(4);
g=g0.*(R./(R+x1(3)*R)).^2;
dx1(1)=cos(a)/(1-ut)-(g/g0)*sin(x1(2))/n0;
Vorb=sqrt(g*(R+x1(3)*R))/c;
dx1(2)=(sin(a)/(1-ut)-(g/g0)*cos(x1(2))*(1-(x1(1)/Vorb)^2)/n0)/x1(1);
dx1(3)=A3*x1(1)*sin(x1(2))/n0;
dx1(4)=A3*x1(1)*cos(x1(2))/n0;
endfunction
function dx=splain(t,x)
    dx=zeros(2,1);
    a1=k1
    a2=-1*(2*k1*(Vk-V0)-3*(rk-r0))/(Vk-V0)^2
    a3=(k1*(Vk-V0)-2*(rk-r0))/(Vk-V0)^3
    fi1=a1+2*a2*(x(1)-V0)+3*a3*(x(1)-V0)^2
    fi2=2*a2+6*a3*(x(1)-V0)
    fi=r0+a1*(x(1)-V0)+a2*(x(1)-V0)^2+a3*(x(1)-V0)^3
    g=Ul./fi^2
    psi=g*fi1/(x(1)+g*fi1)
    ut=t*n0*g0/c
    g1=(-2*Ul/(psi^3*fi1))
   // cosa=dx(2)*(1-ut)/n0    
    //sina=sqrt(1-cosa)
    K=x(1)+g*fi1
    O=1+x(1)*x(1)*(fi)/Ul
    psi1=(g*fi2*x(1)-fi1-g1*fi1*fi1)/K/K
    o=asin(psi*x(1))
    G=G0*(1-ut)
    n=P/G
    ny=sqrt(n.*n-x(2).*x(2))
    dx(1)=g0*(1-g*psi)*x(1)
    dx(2)=((cos(o).*(ny.*g0-g.*O.*cos(o)))./((1-g.*psi).*(x(2)))-psi1.*x(2)./psi)*dx(1)
endfunction
 
//t0=utk*c/(n0*g0); //примерно 25 секунд при utk=0.026
P=15900
G0=4877*g0
m=4877;
//V0=Y3(1)*c;
nx0=1.95;
dt1=0.00001
dt2=0.00001
dt3=0.1
tk1=0.05
Ul=4900
tk=0.1
tk2=0.1
k=1.33
 
x0=[10^-12;%pi/2;0;0]; ut0=0; ut=0:dt1:tk1;y=ode("rk",x0,ut0,ut,syst1);
Y=y(:,size(y,'c')); disp(Y)
x1=[Y(1);Y(2);Y(3);Y(4)]; ut1=ut(:,size(ut,'c')); ut2=ut1:dt2:tk2;
//fi=arctg(ut2-ut1/tk2-ut1)
y1=ode("rk",x1,ut1,ut2,syst2);
Y1=y1(:,size(y1,'c')); disp(Y1)
 
 
t0=tk2*c/(n0*g0)
t00=round(t0)
fi=%pi/2-k
a=fi-y1(2,size(y1,'c'))+y1(4,size(y1,'c'));
nx0=n0/(1-tk2)*cos(a)
k1=y1(3,(tk2-ut1)/dt2)*R/(y1(1,(tk2-ut1)/dt2)*c)
V0=0.153
r0=y1(3,(tk2-ut1)/dt2)*R+R
rk=50+R
ra=1840
//Vk=sqrt(2*Ul*ra/((rk)*(ra+rk)))
Vk=1.665
x2=[V0,nx0];
t=t0:dt3:t0+10; 
y2=ode("rk",x2,t0,t,splain);
1ая и 2ая система без изменений
Теперь выдало еще более интересную ошибку
y2=ode("rk",x2,t0,t,splain);
!--error 9999
ode: external must be real.at line 109 of exec file called by :
ких расчетов в scilabe\splain.sci', -1
Warning !!!
Scilab has found a critical error (EXCEPTION_ACCESS_VIOLATION).
Save your data and restart Scilab.
0
6954 / 4985 / 2106
Регистрация: 02.02.2014
Сообщений: 13,242
22.02.2019, 11:50 4
при предварительной очистке данных clear у меня выдает другую ошибку
ваша ошибка может возникнуть из-за того, что какая-то переменная имеет недопустимое значение для работы в "сплайн"
0
0 / 0 / 0
Регистрация: 22.11.2018
Сообщений: 23
22.02.2019, 11:51  [ТС] 5
clear у меня прописано, странно
0
22.02.2019, 11:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2019, 11:51
Помогаю со студенческими работами здесь

Ошибка подключения ftp в lan - неправильный логин/пароль, ошибка 530
Сервер w7 x64 с babyftp Golden FTP, ServerFileZilla Server Клиент w10 x64 с TCMD, filezilla client...

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

Неправильный логин и неправильный пароль, программа не выдает сообщения об ошибке
Вообщем проблема такова: DBConnect->ConnectionString = "Provider=SQLOLEDB.1;Password=" +...

Ошибка с Sitemap: Неправильный адрес
Составил sitemap и robots.txt через онлайн генератор sitemap <?xml version="1.0"...

Ошибка подается неправильный bool
при нажатии на чекбокс в неопределенном состоянии (то есть у него null) подается false, а не true....

Ошибка - Неправильный доступ к памяти
Помогите пожалуйста! Написал код к задачке. Работает только в 64-х разрядной операционной...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru