Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
10 / 10 / 3
Регистрация: 09.03.2012
Сообщений: 94

Разделить корни полинома по типу.

20.11.2012, 19:05. Показов 3015. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть полином с корнями (кратные, комплексные, простые) нужно передать их (корни) в разные функции, для каждого вида своя... кто нибудь знает как это сделать?


Matlab M
1
2
3
4
5
6
7
K =5;
num1 = 1;
num =num1*K;
den1 = [1 7 18  26  32  24];
den = conv(den1,[1 0]);
denp = polyder(den);
r = roots(den);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2012, 19:05
Ответы с готовыми решениями:

Корни полинома
Помогите пожалуйста найти корни алгебрарического уравнения f(x)=0 как корни полинома и построить график y=x4-93x3+260x2+924x-2160=0

Действительные корни полинома
Так выглядит задание: При вычислении корней полинома построить график полинома и отобразить на нем найденные действительные корни. Ввод...

Как посчитать корни полинома, используя Fzero
Здравствуйте ,не могу разобраться как посчитать корни полинома используя fzero a = 1.0098; b = 4.5603; c = 10.9752; d =...

8
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
20.11.2012, 19:45
Эх, уже уехал с работы(
В матлабе есть множество конструкций типа is* (isreal, isnatural, isprime и т.д., см. help).
Думаю можно было бы что-то придумать, если знать какие именно из корней нужны.
1
10 / 10 / 3
Регистрация: 09.03.2012
Сообщений: 94
20.11.2012, 19:48  [ТС]
3 функции.. каждая выводит переходный процесс для одного вида корней
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
20.11.2012, 20:04
Дружочек, а что за ф-ции и какие виды корней.

Около темы:
Недавно я узнал о такой классной штуке, как логические вектора, т.е. если в условии стоит вектор, то результат тоже вектор, где каждый элемент 0 или 1 в зависимости от того выполено условие или нет. Что это дает? Смотри пример:
Пусть есть x = [ -5 0 2+i 6 13]
Найдем комплексный элемент:
L = ~isreal(x);
Получим вектор: L = [0 0 1 0 0].
А теперь смотри, что получится, при почленном пемножении
C = L.*x = [0 0 2+i 0 0].
Нулевые элементы можно убрать C(C==0) = []; и ты плучишь вектор комплексных элементов!
Кроме того, при формировании логического вектора можно использовать знаки соотношений (>,<,==) операторы И(&), ИЛИ(|), НЕ(~) и конструкции типа is*

Смекаешь?
1
10 / 10 / 3
Регистрация: 09.03.2012
Сообщений: 94
20.11.2012, 20:38  [ТС]
таким же способом можно найти кратные корни?

Пусть есть x = [ -5 0 2+i 6 13 -5]
L = ~isreal(x);

Добавлено через 15 минут
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
clc
close all
syms p;
 
%y0 =0
%y1 = -3
%y2 = -2        (кратностью 2)              % кратные корни
%y4 =  1.4142i            %комплексные
 
K =5;
num1 = 1;
num =num1*K;
den1 = [1 7 18  26  32  24];
den = conv(den1,[1 0]);
denp = polyder(den);
r = roots(den);
 
if (корень комплексный)
z = fun1(комплексный корень )
end
if (корень простой)
z = fun2(простой корень )
end
if (корень кратный)
z = fun3(кратный корень )
end


Пусть есть x = [ -5 0 2+i 6 13]
Найдем комплексный элемент:
L = ~isreal(x);
Получим вектор: L = [0 0 1 0 0].
А теперь смотри, что получится, при почленном пемножении
C = L.*x = [0 0 2+i 0 0].

это не работает((

Добавлено через 13 минут
для простых корней

Matlab M
1
2
3
4
5
for j = 1:n;
    if  isreal(r1(j))== 1     
        [h0 k0] = korn(num,denp,r1(j))
    end
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
21.11.2012, 08:37
Тот пример не совсем матлабовский код, а скорее наглядный пример)
Скоро возьмусь за матлаб, что-нить изобрету!)
1
10 / 10 / 3
Регистрация: 09.03.2012
Сообщений: 94
21.11.2012, 08:41  [ТС]
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dd = [0, -3, -2, -2, 0+1.4142i, 0-1.4142i];
r1 = sort(dd);
n =length(dd);
[h0 k0] = korn(num,denp,0);
for j = 2:n;
    if  isreal(r1(j))== 1
        if  r1(j)==r1(j-1) 
            [h2 h3 k2 k3] = kcorn(num,den,r1(j));
        else
            [h1 k1] = korn(num,denp,r1(j));
        end
    else
        [h4 h5 k4 k5] = jcorn(num,denp,r1(j));
    end
end


правда корни все равно приходится задавать(((... можно как нибудь округлить корни которые находит оператор roots?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
21.11.2012, 11:29
Вот смотри что накидал
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
clc
 
K =5;
num1 = 1;
num =num1*K;
den1 = [1 7 18  26  32  24];
den = conv(den1,[1 0]);
denp = polyder(den);
R = roots(den) % получаем корешки
 
r = round(R*1e6)/1e6; % округляем до 6-го знака после запятой
comp = [];
krat = [];
prost = [];
for i = 1:length(r)
    if ~isreal(r(i)) % если корень комплексный
        comp = [comp r(i)]; % добавляем в нужный массив
    elseif length(find(r==r(i)))>1 % если корень встречается несколько раз (кратный)
        krat = [krat r(i)]; % добавляем в нужный массив
    else % остались простые корни
        prost = [prost r(i)];  % добавляем в нужный массив
    end
end
comp % комплексные корни
krat % кратные корни
prost % простые корни
Проще не вышло, т.к. isreal массивы обрабатывает не так как хотелось бы.
И пришлось округлять, т.к. пятый и шестой корни (-2) отличались на 5e-8 (5*10-8) и поэтому они не распознавались как кратные.
Кроме того, если нужны не все кратные корни, а только каждого по одному, то можно использовать ф-цию unique.
Так, если у тебя krat = [ -2 -2 -3 -3 -3 1 1 1 1], то
unique(krat) = [-2 -3 1];

Вопросы есть?
1
10 / 10 / 3
Регистрация: 09.03.2012
Сообщений: 94
21.11.2012, 13:37  [ТС]
спасибо))..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2012, 13:37
Помогаю со студенческими работами здесь

Найти корни полинома и построить его график
Найти корни полинома f(x)=x^7-6x^6-20x^5+x^3-x^2 и построить его график. С помощью функции fmin( ), fminbnd( ) найти локальный минимум...

Как найти корни полинома нескольких переменных?
Например, какой нибудь Ньютон-Рафсон. Я искала в Математических Функциях, нашла там только polyfit - для одной переменной... Извините за...

Корни полинома
Найти корни полинома с заданной точностью ε . Предлагается следующий алгоритм. 1. В диалоговом окне Параметры Excel задать...

Вычислить корни полинома
Проблема такая. Не могу правильно подобрать масштаб для отображения на графике всех корней полинома. Задача: Найти корни полинома f(s)...

Найти корни полинома
Каким методом можно найти корни полинома 10 степени, если интервал не указан? Все методы по вычислению корней нелинейных уравнений,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 23.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru