0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 15
1

Преобразовать файл из матлаб в скайлаб

08.03.2017, 06:56. Показов 2794. Ответов 8
Метки нет (Все метки)

Доброго времени суток . Не получается преобразовать матлаб файл в скайлаб...Выдает такую ошибку..
x1 = fzero("2*cos(x)/x^2-0.5*(2+cos(x)) - 0.5*log(abs(tan(x/2)))",10)
!--error 4
Неизвестная переменная: fzero
at line 14 of exec file called by :
exec('C:\Program Files\scilab-5.4.1\zadanie5.sci', -1)

Прилагаю матлаб файл. Заранее спасибо за отклик
Листинг программы в матлабе
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
clear all
clc
 
% первый случай
 
x1 = fzero('2*cos(x)/x^2-0.5*(2+cos(x)) - 0.5*log(abs(tan(x/2)))',10)
y1 = 2*cos(x1)/x1^2
 
% второй случай
 
x2 = fzero('2*cos(x)/x^2-0.5*(2+cos(x)) - 0.5*log(abs(tan(x/2)))',-10)
y2 = 2*cos(x2)/x2^2
 
% рисуем наши функци
 
ezplot('2*cos(x)/x^2');
hold on,grid on
 
ezplot('0.5*(2+cos(x)) + 0.5*log(abs(tan(x/2)))')
 
% рисуем точки пересечения
plot([x1 x2],[y1, y2],'or')
axis([-7 7 -2 10])
title('Задание 1.5. График пересечения кривых y1 и y2');
legend('y1=a*cos(x)/x^2','y2 = 0.5*(a+cos(x)) + 0.5*log(abs(tan(x/2)))');
xlabel('x')
ylabel('y')
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2017, 06:56
Ответы с готовыми решениями:

Открыть txt-файл при его формировании в матлаб и сохранении вне матлаб
С помощью операторов fopen, fprintf и fclose в файл "Press.txt" записана текстовая информация : ...

Матлаб не открывает файл
При попытке открыть сохраненный файл открывается пустое окно, и говорит, что ошибка. вот скрин:

не могу открыть файл МатЛаб
ребят, не могу открыть файл, преподаватель дал, и делай как хочешь - у меня стоит MatLab...

При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается и происходит дамп
При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается. При...

8
5732 / 4168 / 1666
Регистрация: 02.02.2014
Сообщений: 11,200
08.03.2017, 11:19 2
Преобразовать файл из матлаб в скайлаб


Не по теме:

что вас с matlab на scilab перебросило?

1
0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 15
08.03.2017, 23:01  [ТС] 3
Дааа, задание дали сделать в матлабе и в скайлабе))) Так мне надо fzero заменить на fsolve?
Если так...все равно как то не выходит

Добавлено через 3 часа 8 минут
Помогите
Не получается
0
5732 / 4168 / 1666
Регистрация: 02.02.2014
Сообщений: 11,200
08.03.2017, 23:04 4
покажите правки в scilab-коде..
1
0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 15
08.03.2017, 23:21  [ТС] 5
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
clear
clc
 
// первый случай
x1 = fsolve("(2*cos(x)) ./(x .^2)-0.5*(2+cos(x)) - 0.5*log(abs(tan(x/2)))",7)
y1 = (2*cos(x1)) ./x1 .^2)
 
// второй случай
x2 = fsolve('2*cos(x) ./x .^2-0.5*(2+cos(x)) - 0.5*log(abs(tan(x/2)))',-7)
y2 = (2*cos(x2)) ./x2 .^2
 
// рисуем наши функци
 
// !! L.16: Функция Matlab ezplot ещё не преобразована, используется исходная последовательность вызова.
ezplot("2*cos(x)./x.^2");
set(gca(),"auto_clear","off"),set(gca(),"grid",[1,1])
 
// !! L.19: Функция Matlab ezplot ещё не преобразована, используется исходная последовательность вызова.
ezplot("0.5*(2+cos(x)) + 0.5*log(abs(tan(x/2)))")
 
// рисуем точки пересечения
plot([x1,x2],[y1,y2],"or")
set(gca(),"data_bounds",matrix([-7,7,-2,10],2,-1))
title("Задание 1.5. График пересечения кривых y1 и y2");
// !! L.25: Функция Matlab legend ещё не преобразована, используется исходная последовательность вызова.
legend("y1=a*cos(x)./x.^2","y2 = 0.5*(a+cos(x)) + 0.5*log(abs(tan(x/2)))");
xlabel("x")
ylabel("y")
Ошибка: x1 = fsolve("(2*cos(x)) ./(x .^2)-0.5*(2+cos(x)) - 0.5*log(abs(tan(x/2)))",7)
!--error 201
fsolve: Неверный тип параметра 1: ожидалась матрица вещественных или комплексных чисел.
at line 12 of exec file called by :
exec('C:\Program Files\scilab-5.4.1\zadanie5f1.sci', -1)
 Комментарий модератора 
Нарушение Правил форума, пункт 4.9. Используйте тэги форматирования текста и редактор формул для удобства восприятия ваших сообщений другими пользователями.
0
5732 / 4168 / 1666
Регистрация: 02.02.2014
Сообщений: 11,200
08.03.2017, 23:24 6
посмотрите внимательнее функцию fsolve для scilab... там последовательность входных параметров другая
1
0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 15
09.03.2017, 00:11  [ТС] 7
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
deff('z=y1(x)','z=(2*cos(x))./x.^2');
 
deff('t=y2(x)','t=0.5*(2+cos(x))+0.5*log(abs(tan(x/2)))');
 
step = 0.5;
x = -13:step:13;
 
function [eq]=f(x)
    eq(1) = (2*cos(x)) ./x .^2;
    eq(2) = 0.5*(2+cos(x))+0.5*log(abs(tan(x/2)));
    
endfunction
resl = fsolve([-2 0.5], f)
 
//set(gca(),"auto_clear","off");set(gca(),"grid",[1,1]);
plot(x,y1(x),x,y2(x))

Из того что я поучила..сделала только это...) Я на правильном пути?)

Добавлено через 1 минуту
Цитата Сообщение от Kompotika Посмотреть сообщение
resl = fsolve([-2 0.5], f)
С этого момента не правильно

Добавлено через 4 минуты
Ошибка: -->exec('C:\Program Files\scilab-5.4.1\fun.sce', -1)
!--error 15
Подматрица задана некорректно.
at line 2 of function f called by :
res1 = fsolve([-2 0.5 ], f)
at line 13 of exec file called by :
exec('C:\Program Files\scilab-5.4.1\fun.sce', -1)

Добавлено через 30 минут
Вы мне можете помочь, пожалуйста?
 Комментарий модератора 
Нарушение Правил форума, пункт 4.9. Используйте тэги форматирования текста и редактор формул для удобства восприятия ваших сообщений другими пользователями.
0
140 / 131 / 41
Регистрация: 11.03.2013
Сообщений: 271
09.03.2017, 03:29 8
Лучший ответ Сообщение было отмечено Kompotika как решение

Решение

Цитата Сообщение от Kompotika Посмотреть сообщение
С этого момента не правильно
Исходя из кода матлаб - Вам надо найти точку пересечения двух кривых, т.е. f1(х) - f2(х) = 0 -> а у Вас функция для fsolve соответствует условию?

Не по теме:

Язык программирования - всего лишь инструмент в руках инженера. Понимание сути задачи - ключ к успеху.



Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
deff('z = y1(x)','z = (2*cos(x))./x.^2');
 
deff('t=y2(x)','t=0.5*(2+cos(x))+0.5*log(abs(tan(x/2)))');
 
step = 0.0125;
x = -12.98:step:12.98;
 
function [eq]=f(x)
eq = (2*cos(x)) ./x .^2 - 0.5*(2+cos(x))-0.5*log(abs(tan(x/2)));
endfunction
 
x1 = fsolve([-1], f);
x2 = fsolve([1], f);
 
y_1 = y1(x1);
y_2 = y1(x2);
 
//set(gca(),"auto_clear","off");set(gca(),"grid",[1,1]);
plot2d(x',[feval(x',y1),feval(x',y2)], style = [2,14],rect = [-8,-2,8,10]);xgrid(color('grey75'))
plot2d([x1,x2], [y_1, y_2], style =- 9, frameflag = 0)
1
0 / 0 / 0
Регистрация: 21.06.2016
Сообщений: 15
09.03.2017, 04:44  [ТС] 9
Спасибо большое )
Исправлюсь... ) Первый раз работаю в скайлабе...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2017, 04:44

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Реализовать файл-функцию,выполняющуюся по образу и подобию стандартной функции системы МатЛаб
Всем здрасте))) Помогите плиз....а то все голову изломал себе.....ужас.. Реализовать...

Как получить точки в матлаб для построения 3-х осного эллипсоида и сохранить их в текстовый файл
Как получить точки в матлаб для построения 3-х осного эллипсоида и сохранить их в текстовый файл ?

Файл: Преобразовать код так, чтобы программа выводила ответ в файл...
Всем привет! Нам задали задание по информатике преобразовать данную задачу в задачу, которая с...

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


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

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

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