Форум программистов, компьютерный форум, киберфорум
Наши страницы

Scilab

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

Преобразование Matlab в Scilab - Scilab

16.05.2015, 21:19. Просмотров 1054. Ответов 13
Метки нет (Все метки)

Добрый день!
Нужно выполнить преобразование в scilab.
У меня встроен преобразователь, но почему-то он не работает
Читаю гайд по скайлабу (http://docs.altlinux.org/books/2008/altlibrary-scilab-20090409.pdf), но так и не получается нормально преобразовать ode
Что нужно изменить, чтобы работало в scilab?
Надеюсь на вашу помощь:

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
clear all; clc;
% время
global k
t=0 :0.01 :250;                 
%начальные условия
y0=[8.17 0.00004 0.00065 0.00001 0.00001 0.00001 0.00001 0.00001];
k=load('koeff razvitoy.txt'); 
[T,Y]=ode(@diff_urav,t,y0);
%дальше вносим экспериментальные данные
b1=[0 2 5 10 20 30 40 50 60 70 90 120 140 180 250]; %время
a1=[8.17 8.15 8.13 8.06 7.96 7.82 7.69 7.51 7.44 7.32 7.08 6.73 6.53 6.12 5.48]; %ЭБ
a2=[0 0.01 0.02 0.05 0.11 0.17 0.22 0.27 0.3 0.32 0.4 0.53 0.59 0.66 0.74];  %МФК
a3=[0 0.01 0.02 0.05 0.12 0.19 0.27 0.34 0.42 0.5 0.65 0.9 1.06 1.39 1.95];  %АФ
a4=[0 0.000469 0.000895 0.001234 0.001396 0.001419 0.001421 0.001423 0.001423 0.001423 0.001423 0.001423 0.001423 0.001423 0.001423]; %катализатор
%график1
figure
plot(T,Y(:,1),'-',b1,a1,'.-')   
grid on
title('График искомых функций');
legend('Ethylbenzene','Ethylbenzene exp');
xlabel('t');
%график2
figure
plot(T,Y(:,2),'-.',T,Y(:,3),'-.',b1,a2,'.-',b1,a3,'.-')  
grid on
title('График искомых функций2');
legend('MFK','AF','MFK exp','AF exp');
xlabel('t');
%график3
figure
plot(T,Y(:,5),'--')  
grid on
title('График искомых функций3');
legend('Hydroperoxide');
xlabel('t');
%Значения
disp('Вывод значений функций')
[Y(:,1),Y(:,2),Y(:,3),Y(:,4),Y(:,5),Y(:,6),Y(:,7)]
%график4
figure
plot(T,Y(:,4),'-.',b1,a4,'.-')  
grid on
title('График катализатора');
legend('Katalizator','Katalizator exp');
xlabel('t')
Файл diff_urav:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
function dy = diff_urav(t,y)
global k
dy = zeros(8,1); 
% система
%k=load('koeff.txt');
dy(1) = -k(6)*y(6)*y(1);
dy(2) = 0.5*k(6)*y(6)*y(1)-k(12)*y(6)*y(2);
dy(3) = 0.5*k(6)*y(6)*y(1)+k(12)*y(6)*y(2);
dy(4) = k(7)*y(5)*(k(3)*k(18)-y(4))+k(2)*y(1)*y(7)+k(8)*y(6)*(k(3)*k(18)-y(4))-k(11)*y(2)*y(4);
dy(5) = (k(6)*y(1)*y(6)+k(8)*y(6)*y(8)+k(12)*y(2)*y(6)-k(7)*y(5)*y(8)-k(14)*y(5)*y(5))*k(16);
y(6) = sqrt((k(11)*17*y(4)*y(2))/(k(15)*(y(3)+17*y(2))));
y(7) = (y(8)*k(1)*k(17))/(1+k(1)*k(17));
y(8) = (k(3)*k(18)-y(4))
Файл koeff razvitoy.txt :

Matlab M
1
50 0.03 0.96 1 1 160 25 3000 1 17 0.2 500 1 25 1200000000 0.5 0.0069 0.00159
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2015, 21:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Преобразование Matlab в Scilab (Scilab):

Преобразовать из MATLAB в Scilab - Scilab
Добрый день! Нужно выполнить преобразование из MATLAB в Scilab. 1.Запускаю редактор m-файлов и ввожу следующую программу: ...

Преобразование Mathlab в scilab - Scilab
Здравствуйте! Нужно преобразовать из mathlab в scilab x=; y=; net=newff(,,{'tansig','purelin'},'trainbfg'); ...

Scilab и Fortran - Scilab
В теме http://www.cyberforum.ru/scilab/thread1612707.html я уже отписывался о тормознутости Scilab при обработке матриц большой...

Уравнения в SCILAB - Scilab
Здравствуйте! Помогите пожалуйста решить уравнения в scilab. Задание №1. Решить квадратное уравнение ...

Фракталы на Scilab - Scilab
Кто нибудь строил простенькие фракталы с помощю Scilab-а. Нужен любой работающий пример.

Решение СЛАУ в Scilab - Scilab
Добрый день! Нужно написать 3 метода решения СЛАУ в среде scilab(метод прогонки, метод простых иттераций и метод Зейделя) Мне заданы...

13
S_el
2133 / 1661 / 313
Регистрация: 15.12.2013
Сообщений: 6,583
16.05.2015, 21:22 #2
Цитата Сообщение от Milky Way Посмотреть сообщение
но так и не получается нормально преобразовать ode
Уберите ode и проверьте на работоспособность остальных функций.В качестве T,Y скопируйте значения из Matlab.
1
Milky Way
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
16.05.2015, 21:44  [ТС] #3
Скайлаб в какой папке этот файл смотрит?
У себя в бине, также как и матлаб?
Matlab M
1
2
3
4
5
6
7
-->k=load('koeff razvitoy.txt'); 
 !--error 999 
mopen: Не удалось открыть файл koeff razvitoy.txt.
at line       3 of function listvarFunction called by :  
at line      29 of function listvarinfile called by :  
at line     809 of function %_sodload called by :  
k=load('koeff razvitoy.txt');
0
S_el
2133 / 1661 / 313
Регистрация: 15.12.2013
Сообщений: 6,583
16.05.2015, 21:50 #4
Цитата Сообщение от Milky Way Посмотреть сообщение
Скайлаб в какой папке этот файл смотрит?
в рабочей директории.Пропишите полный путь для надежности.
0
Milky Way
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
17.05.2015, 14:49  [ТС] #5
Есть и помимо этого ошибки.
Думаю пока над ними.

А может проще будет подсказать, почему не работает преобразователь?

В "Инструменты" -> "Преобразование из Matlab в Scilab" заливаю файл diff_urav.m (выше есть его текст)
В выходном каталоге указываю C:\Program Files\scilab-5.4.0\bin

В командном окне выводит:

PureBasic
1
2
3
4
5
6
 !--error 240 
Файл «C:/Program Files/scilab-5.4.0/bin/m2sci_diff_urav.log» уже существует или нет доступа для записи в каталог.
at line     108 of function mfile2sci called by :  
at line     142 of function cb_m2sci_gui called by :  
etcallbackobject("-1fc4163d:14d619ea887:-7e16");cb_m2sci_gui;if exists("%oldgcbo") then gcbo = %o
while executing a callback
Scilab запускал от имени администратора
0
S_el
2133 / 1661 / 313
Регистрация: 15.12.2013
Сообщений: 6,583
17.05.2015, 15:46 #6
Цитата Сообщение от Milky Way Посмотреть сообщение
А может проще будет подсказать, почему не работает преобразователь?
Может и проще.Сейчас попробую своему Scilab-у скормить.
Тоже не берет.Тогда будем переводить по старинке.
0
Milky Way
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
17.05.2015, 17:09  [ТС] #7
Добавил значения переменных, графики строит.
Правда все равно ругается на load:
Matlab M
1
2
3
4
5
6
7
k=load('C:\Program Files\scilab-5.4.0\bin\koeff razvitoy.txt'); 
 !--error 10000 
listvarinfile: Неверный тип переменной (9.260D+08) обнаружен в «C:\Program Files\scilab-5.4.0\bin\koeff razvitoy.txt». Файл может быть ошибочным или повреждённым.
at line      50 of function listvarFunction called by :  
at line      29 of function listvarinfile called by :  
at line     809 of function %_sodload called by :  
k=load('C:\Program Files\scilab-5.4.0\bin\koeff razvitoy.txt');
Но строит нормально, т.к. к этим коэффицентам программа ходила в случае решения дифуров, а ode я пока выкинул.
И на команда grid on ему еще не нравится. Какой у нее в скайлабе эквивалент? Это нанесение сетки на график.
0
S_el
2133 / 1661 / 313
Регистрация: 15.12.2013
Сообщений: 6,583
17.05.2015, 18:30 #8
Цитата Сообщение от Milky Way Посмотреть сообщение
И на команда grid on ему еще не нравится. Какой у нее в скайлабе эквивалент?
https://help.scilab.org/doc/5.3.3/en_US/m2sci_grid.html
https://help.scilab.org/doc/5.3.3/en_US/xgrid.html
1
Milky Way
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
18.05.2015, 01:28  [ТС] #9
Полезная ссылка, спасибо, заработало
Но оде там в списке нету.
Как его зарефакторить для скайлаба не подскажешь?
0
S_el
2133 / 1661 / 313
Регистрация: 15.12.2013
Сообщений: 6,583
18.05.2015, 07:34 #10
ode:
https://help.scilab.org/doc/5.3.3/en_US/ode.html
1
Milky Way
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
19.05.2015, 23:08  [ТС] #11
Как-то имхо сложнее в скайлабе сольвер запускать
и как сделать загрузку функции из файла?
@'namefunction' не канает
0
Milky Way
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
21.05.2015, 00:10  [ТС] #12
Упорно ode не хочет работать.
Упростил все по максимуму, пытаюсь просто запустить сольвер:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear all; clc;
k=[50 0.03 1 1 1 7 30 4000 1 17 0.2 3000 1 27.5 1200000000 0.475]
function dy = f(t,y);
dy = zeros(8,1); 
dy(1) = -k(6)*y(6)*y(1);
dy(2) = 0.5*k(6)*y(6)*y(1)-k(12)*y(6)*y(2);
dy(3) = 0.5*k(6)*y(6)*y(1)+k(12)*y(6)*y(2);
dy(4) = k(7)*y(5)*(k(3)*k(18)-y(4))+k(2)*y(1)*y(7)+k(8)*y(6)*(k(3)*k(18)-y(4))-k(11)*y(2)*y(4);
dy(5) = (k(6)*y(1)*y(6)+k(8)*y(6)*y(8)+k(12)*y(2)*y(6)-k(7)*y(5)*y(8)-k(14)*y(5)*y(5))*k(16);
y(6) = sqrt((k(11)*17*y(4)*y(2))/(k(15)*(y(3)+17*y(2))));
y(7) = (y(8)*k(1)*k(17))/(1+k(1)*k(17));
y(8) = (k(3)*k(18)-y(4));
endfunction;
y0=[8.17 0.00004 0.00065 0.00001 0.00001 0.00001 0.00001 0.00001];
t0=0;
t=0:0.1:10
y=ode(y0,t0,t,f);
plot(t,y(:,2),'-')
Response:
y=ode(y0,t0,t,f);
!--error 21
Неправильный индекс.
at line 6 of function f called by :
y=ode(y0,t0,t,f);


-->plot(t,y(:,2),'-')
!--error 4
Неизвестная переменная: y
Что не так то?
0
S_el
2133 / 1661 / 313
Регистрация: 15.12.2013
Сообщений: 6,583
21.05.2015, 00:19 #13
Цитата Сообщение от Milky Way Посмотреть сообщение
Что не так то?
1.Посмотрите на размерность k и на используемый индекс в 11,12 строчках.
А заодно сравните 9 и 10 строчки.
1
Milky Way
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
24.05.2015, 02:29  [ТС] #14
С коэффицентами мой косяк, непонятно как они потерялись по дороге
А линейность уравнений 6-8 предполагалась изначально
0
24.05.2015, 02:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2015, 02:29
Привет! Вот еще темы с ответами:

scilab + scimax :: factorial() - Scilab
Пытаюсь освоить символьные вычисления в scilab с помощью пакета scimax, но непонятки с функцией factorial(). У меня Ubuntu 11.10, ...

scilab и теория управления - Scilab
Добрый вечер, товарисчи форумчане! нужна помощь в следующем вопросе: как при помощи scilab решать задачи теории управления, тобишь как...

Реализация QL-алгоритма в scilab - Scilab
Пытаюсь реализовать QL-алгоритм в scilab Использовал текст программы на языке C из статьи...

Ошибки в коде scilab-5.5.2 - Scilab
Доброго времени суток. Нужна помощь в scilab При выполнении кода пишет : ...


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

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

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