Форум программистов, компьютерный форум, киберфорум
Наши страницы
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
olya-neznakomce
52 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
1

Квадратное уравнение

20.10.2013, 13:18. Просмотров 2228. Ответов 9
Метки нет (Все метки)

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
function [x1,x2]=korni(a,b,c)
 
if (a==0)&&(b==0)
    fprintf('eto ne yravnenie!')
    x1 = [];
    x2 = [];
else
if (a==0)&&(b~=0)
    fprintf('yravnenie ne kvadratnoe')
    x1 = -c/b;
    x2 = x1;
else
 
d = (b^2 - 4*a*c);
if (d<0)
    fprintf('discriminant otricatelnui, korni kompleksnue');
end
d=sqrt(d);
x1 = (-b + d)/2*a;
x2 = (-b - d)/2*a;
end
end
x=[(x1+x2)/2-10:0.1:(x1+x2)/2+10];
y=a*x.^2+b*x+c;
plot(x,y)
end
Выдает:
function [x1,x2]=korni(a,b,c)
|
Error: Function definitions are not permitted in this context.
подскажите, как исправить
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2013, 13:18
Ответы с готовыми решениями:

Квадратное уравнение
Добрый день помогите с программой для решения квадратного уравнения. Допустим у нас есть массив из...

Квадратное уравнение с параметрами
Как в среде matlab будет выглядеть цикл решения уравнения ...

Квадратное уравнения на M-файл
Как можно вызывать M-файл на командном окне function =korni(a,b,c) a=input('Введите a= ');...

Создать производные классы линейное уравнение и квадратное уравнение, в которых данная функция переопределена
Создать абстрактный базовый класс уравнение с виртуальной функцией - корни уравнения. Создать...

Квадратное уравнение
Привет всем, застрял, помогите :) Ввести три вещественных числа a, b, c. Решить квадратное...

9
incognito
149 / 142 / 1
Регистрация: 08.04.2010
Сообщений: 998
20.10.2013, 13:25 2
olya-neznakomce, рекомендую в первом случае использовать функцию error('text') вместо fprintf.
Она останавливает выполнение команд.
0
olya-neznakomce
52 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
20.10.2013, 13:28  [ТС] 3
ничего не изменилось

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function[x1,x2] = root2 (a,b,c)
if (nargin<3)
error('задайте 3 коэффициента')
end
[Na, Ma]=size(a);
[Nb,Mb]=size(b);
[Nc,Mc]=size(c);
if (Na~=1)|(Ma~=1)|(Nb~=1)|(Mb~=1)|(Nc~=1)|(Mc~=1)
error(' аргументы должны быть числами')
end
D=b^2-4*a*c;
if D<0
error('комплексные корни')
end
x1=(-b+sqrt(D))/2;
x2(-b-sqrt(D))/2;
if(nargout ~=2
warning('это только один корень')
disp('для получения 2 корней используйте')
disp('[x1,x2]=root2(a,b,c)')
end
и здесь такая же ошибка
0
incognito
149 / 142 / 1
Регистрация: 08.04.2010
Сообщений: 998
20.10.2013, 13:30 4
olya-neznakomce, Вы вызываете функцию в тексте программы или в командном окне?
0
20.10.2013, 13:30
olya-neznakomce
52 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
20.10.2013, 13:32  [ТС] 5
а где надо?
0
incognito
149 / 142 / 1
Регистрация: 08.04.2010
Сообщений: 998
20.10.2013, 13:35 6
где надо - Вам решать

если я вызываю в тексте м-файла, то пишу в таком виде:
Matlab M
1
2
 
function [x1,x2]=korni(a,b,c)
где a,b,c - расчитаны ранее.

если в командном окне, то пишу:
Matlab M
1
[x1,x2]=korni(a,b,c)
где a,b,c - расчитаны ранее.

как-то так...
0
olya-neznakomce
52 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
20.10.2013, 14:08  [ТС] 7
Cпасибо) а как и где нужно задать a,b,c?
0
incognito
149 / 142 / 1
Регистрация: 08.04.2010
Сообщений: 998
20.10.2013, 14:13 8
Если Вы вызываете в тексте м-файла:
строками ранее у Вас должны содержаться выражения для расчета a,b,c.

Если Вы вызываете в командном окне:
необходимо до вызова функции задать a,b,c.

Как-то так...
0
lomt
449 / 275 / 13
Регистрация: 13.11.2012
Сообщений: 588
Записей в блоге: 1
20.10.2013, 14:30 9
Господа, вы немного путаетесь в оприеделениях действий
Если нам надо вызывать функцию, то разницы нет, и в командном окне, и в скрипте, и в функции вызов
производится определением выходным и входныхз аругментов, то есть что-то типа [x1,x2]=korni(a,b,c)
если же вы хотите определить функцию, то в любом случаи пользуются двумя методами: определениям с end:
Matlab M
1
2
3
function [x1,x2]=korni(a,b,c)
...
end
или без него:
Matlab M
1
function [x1,x2]=korni(a,b,c)
НО тогда во всём вашем скрипте должен сохраняться один и тот же вид определения!!!!
В этом случаи определяем функцию так:
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
function[x1,x2] = root2 (a,b,c)
 
if (nargin<3)
error('задайте 3 коэффициента')
end
[Na, Ma]=size(a);
[Nb,Mb]=size(b);
[Nc,Mc]=size(c);
if (Na~=1)|(Ma~=1)|(Nb~=1)|(Mb~=1)|(Nc~=1)|(Mc~=1)
error(' аргументы должны быть числами')
end
D=b^2-4*a*c;
if D<0
error('комплексные корни')
end
x1=(-b+sqrt(D))/2;
x2=(-b-sqrt(D))/2;
if  nargout ~= 2
warning('это только один корень')
disp('для получения 2 корней используйте')
disp('[x1,x2]=root2(a,b,c)')
end
end
Потом вызываем её из командного окна,к примеру для уравнения x2-4=0:
Matlab M
1
2
3
4
5
>> [x1,x2] = root2(1,0,-4)
x1 =
     2
x2 =
    -2
1
olya-neznakomce
52 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
20.10.2013, 14:47  [ТС] 10
спасибо всем большое))
0
20.10.2013, 14:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2013, 14:47

Квадратное уравнение
Класс « квадратное уравнение » : - Квадратное уравнение задается тремя числами ( a , b , c ) ,...

Квадратное уравнение
Знающие люди, составьте пожалуйста программу:

Квадратное уравнение
Недавно начал изучать язык и по мере прочтения книги решил порешать задачи. Сначала все было...


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

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

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