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

Решение системы нелинейных уравнений с 3 переменными (или как понять что решения не существует)

02.12.2019, 23:12. Показов 2948. Ответов 5

Author24 — интернет-сервис помощи студентам
Добрый день, такая проблема, есть система нелинейных уравнений, в матлабе пытался решить но каждый раз выдает ошибку.
Системы выглядит следующим образом

f1 = z * x * 5,451 + z * y * 5,662 +z * (1 -x- y) * 6,135 +x* (1 - z) * 5,449 + y * (1 - z) *5,641 + (1 - z) * (1 - x -y) * 6,094 - 6,094=0

f2 = z * x * 4,7 + z * y * 5,2 + z * (1 - x - y) * 4,88 + x * (1 - z) * 5,81 + y * (1 - z) * 6,86 + (1 - z) * (1 - x - y) * 6,7 - 6,7=0

f3 = z * x * 3,6 + z * y * 2,9 + z* (1 - x - y) * 2,2 + x * (1 - z) * 2,78 + y * (1 - z) * 1,35 + (1 - z) * (1 - x - y) * 0,72 - x *y * (z* 0,22 + (1 - z) * 0,22) - x* (1 - x- y) * (z * 1,2 + (1 - z) * 1,2) -y * (1 - x - y) * (z* 0,72 + (1 - z) * 1,21) - z * (1 - z) * (x * 0,04 +y * 0,026 + (1 -x - y) * 0,17)=0

Вот пример того как пытался решать
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
clear, clc
% x(1)->a. x(2)->b. x(3)->c
F = @(x) [x(3) * x(1) * 5.451 + x(3) * x(2) * 5.662 +x(3) * (1 -x(1)- x(2)) * 6.135 +x(1)* (1 - x(3)) * 5.449 + x(2) * (1 - x(3)) * 
 
5.641 + (1 - x(3)) * (1 - x(1) -x(2)) * 6.094 - 6.094;
 
       x(3) * x(1) * 4.7 + x(3) * x(2) * 5.2 + x(3) * (1 - x(1) - x(2)) * 4.88 + x(1) * (1 - x(3)) * 5.81 + x(2) * (1 - x(3)) * 6.86 + (1 
 
- x(3)) * (1 - x(1) - x(2)) * 6.7 - 6.7;
      
 x(3) * x(1) * 3.6 + x(3) * x(2) * 2.9 + x(3) * (1 - x(1) - x(2)) * 2.2 + x(1) * (1 - x(3)) * 2.78 + x(2) * (1 - x(3)) * 1.35 + (1 - 
 
x(3)) * (1 - x(1) - x(2)) * 0.72 - x(1) * x(2) * (x(3) * 0.22 + (1 - x(3)) * 0.22) - x(1) * (1 - x(1)- x(2)) * (x(3) * 1.2 + (1 - x(3)) * 
 
1.2) -x(2) * (1 - x(1) - x(2)) * (x(3)* 0.72 + (1 - x(3)) * 1.21) - x(3) * (1 - x(3)) * (x(1) * 0.04 +x(2) * 0.026 + (1 -x(1) - x(2)) * 
 
0.17)];
 
   x0 = [1 0 0]; % начальное предположение
X = fsolve(F,x0);
a = X(1);
b = X(2);
c = X(3);
Наиболее частая проблема выглядит так Error in
@(x)[x(3)*x(1)*5.451+x(3)*x(2)*5.662,+x(3)*(1-x(1)-x(2))*6.135,+x(1)*(1-x(3))*5.449+x(2)*(1-x(3))*5.641+(1-x(3))*(1-x(1)-x(2))*6.094-6.094;x(3)*x(1)*4.7+x(3)*x(2)*5.2+x(3)*( 1-x(1)-x(2))*4.88+x(1)*(1-x(3))*5.81+x(2)*(1-x(3))*6.86+(1-x(3))*(1-x(1)-x(2))*6.7-6.7;x(3)*x(1)*3.6+x(3)*x(2)*2.9+x(3)*(1-x(1)-x(2))*2.2+x(1)*(1-x(3))*2.78+x(2)*(1-x(3))*1.35+(1-x(3))*(1-x(1)-x(2))*0.72-x(1)*x(2)*(x(3)*0.22+(1-x(3))*0.22)-x(1)*(1-x(1)-x(2))*(x(3)*1.2+(1-x(3))*1.2),-x(2)*(1-x(1)-x(2))*(x(3)*0.72+(1-x(3))*1.21)-x(3)*(1-x(3))*(x(1)*0.04+x(2)*0.026+(1-x(1)-x(2))*0.17)]
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2019, 23:12
Ответы с готовыми решениями:

Решение систем нелинейных уравнений с индексированными переменными
Подскажите, пожалуйста, можно ли в маткаде решить систему нелинейных уравнений с индексированными переменными. Есть матрица, элементы...

Решение системы нелинейных уравнений 12 уравнений – 12 неизвестных переменных
мне надо решать такую задачу, помогите мне пожалуйста даны 12 уравнений 1/ A+B+C+D+E+F+G+H+I+J+K+L=24.05 2/...

Решение системы нелинейных уравнений (для двух уравнений)
Нужна написать программный модуль для решения систем неленейных уравнений методом ньютона и методом простых итераций. Вот уравнения: sinx +...

5
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
02.12.2019, 23:20
Цитата Сообщение от OrdinaryTaper Посмотреть сообщение
(1 - x(3)) *
Вы строку заканчиваете неправильно. Где троеточие?
0
0 / 0 / 0
Регистрация: 02.12.2019
Сообщений: 3
02.12.2019, 23:24  [ТС]
Это не конец формулы, ее перенесло на следующую строку. В коде также всего три уравнения, просто каждое из них не поместились в одну строку.

Так выглядит конец первого уравнения "6.094 - 6.094;". Конец определяется символом ";"
0
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
03.12.2019, 00:13
Лучший ответ Сообщение было отмечено OrdinaryTaper как решение

Решение

У матлаба бывает конфуз из-за пробелов
Matlab M Скопировано
1
2
3
4
5
6
A = [1 + 2 - 3]
A =
     0
A = [1 +2 -3]
A =
     1     2    -3
Попробуйте каждую строку записать отдельно
Matlab M Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function main
clear, clc
% x(1)->a. x(2)->b. x(3)->c
    function y = F(x)
        y(1) = x(3)*x(1)*5.451 + x(3)*x(2)*5.662 + x(3)*(1 -x(1)- x(2))*6.135 +x(1)* (1 - x(3)) * 5.449 + x(2) * (1 - x(3)) * 5.641 + (1 - x(3)) * (1 - x(1) -x(2)) * 6.094 - 6.094;
        y(2) = x(3) * x(1) * 4.7 + x(3) * x(2) * 5.2 + x(3) * (1 - x(1) - x(2)) * 4.88 + x(1) * (1 - x(3)) * 5.81 + x(2) * (1 - x(3)) * 6.86 + (1 - x(3)) * (1 - x(1) - x(2)) * 6.7 - 6.7;
        y(3) = x(3) * x(1) * 3.6 + x(3) * x(2) * 2.9 + x(3) * (1 - x(1) - x(2)) * 2.2 + x(1) * (1 - x(3)) * 2.78 + x(2) * (1 - x(3)) * 1.35 + (1 - x(3)) * (1 - x(1) - x(2)) * 0.72 - x(1) * x(2) * (x(3) * 0.22 + (1 - x(3)) * 0.22) - x(1) * (1 - x(1)- x(2)) * (x(3) * 1.2 + (1 - x(3)) * 1.2) -x(2) * (1 - x(1) - x(2)) * (x(3)* 0.72 + (1 - x(3)) * 1.21) - x(3) * (1 - x(3)) * (x(1) * 0.04 +x(2) * 0.026 + (1 -x(1) - x(2)) * 0.17);
    end
 
   x0 = [1 0 0]; % начальное предположение
options = optimoptions('fsolve','Display','iter'); % Option to display output
X = fsolve(@F,x0,options);
a = X(1);
b = X(2);
c = X(3);
end
1
0 / 0 / 0
Регистрация: 02.12.2019
Сообщений: 3
04.12.2019, 10:36  [ТС]
Да, спасибо это помогло, Матлаб начал считать. Не подскажите, можно ли, видеть значение переменных на каждой итерации?
0
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
04.12.2019, 13:28
Ничего лучше не придумал. Должен быть способ проще
Кликните здесь для просмотра всего текста
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
function main
clear, clc
clear functions             % clear persistent variables
% x(1)->a. x(2)->b. x(3)->c
 
    function y = F(x)
        persistent iter x00
        if isempty(iter), iter = 1; end
        if isempty(x00), x00 = x; end
        y(1) = x(3)*x(1)*5.451 + x(3)*x(2)*5.662 + x(3)*(1 -x(1)- x(2))*6.135 +x(1)* (1 - x(3)) * 5.449 + x(2) * (1 - x(3)) * 5.641 + (1 - x(3)) * (1 - x(1) -x(2)) * 6.094 - 6.094;
        y(2) = x(3) * x(1) * 4.7 + x(3) * x(2) * 5.2 + x(3) * (1 - x(1) - x(2)) * 4.88 + x(1) * (1 - x(3)) * 5.81 + x(2) * (1 - x(3)) * 6.86 + (1 - x(3)) * (1 - x(1) - x(2)) * 6.7 - 6.7;
        y(3) = x(3) * x(1) * 3.6 + x(3) * x(2) * 2.9 + x(3) * (1 - x(1) - x(2)) * 2.2 + x(1) * (1 - x(3)) * 2.78 + x(2) * (1 - x(3)) * 1.35 + (1 - x(3)) * (1 - x(1) - x(2)) * 0.72 - x(1) * x(2) * (x(3) * 0.22 + (1 - x(3)) * 0.22) - x(1) * (1 - x(1)- x(2)) * (x(3) * 1.2 + (1 - x(3)) * 1.2) -x(2) * (1 - x(1) - x(2)) * (x(3)* 0.72 + (1 - x(3)) * 1.21) - x(3) * (1 - x(3)) * (x(1) * 0.04 +x(2) * 0.026 + (1 -x(1) - x(2)) * 0.17);
        
        plot([iter iter+1],[x; x00]','.-')
        iter = iter + 1;
        x00 = x;
    end
 
   x0 = [1 0 0]; % начальное предположение
   % Option to display output
options = optimoptions('fsolve','Display','iter');
figure(1)
hold on
X = fsolve(@F,x0,options);
hold off
a = X(1);
b = X(2);
c = X(3);
end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2019, 13:28
Помогаю со студенческими работами здесь

Решение системы нелинейных уравнений 8 уравнений – 8 неизвестных переменных
Решаю систему нелинейных уравнений в символьном виде, решение выполняю с помощью математических программ. Возник вопрос в плане математики,...

Странные решения системы нелинейных уравнений
В маткаде с помощью метода Квази-Ньютон получил решения системы из семи нелинейных уравнений с помощью функции "Find". Далее под...

Ускорение решения системы нелинейных уравнений в Mathcad
Здравствуйте! Мне хотелось бы узнать, есть ли возможность увеличить скорость решения систем нелинейных уравнений в Mathcad? Прикладываю...

Составить программу решения системы нелинейных уравнений
Составить программу решения системы нелинейных уравнений методами а)Ньютона б)Зейделя. Точность уравнения принять равной 0,001. Система...

Заполнение таблицы решения системы нелинейных уравнений
День добрый уважаемые. Помогите пожалуйста решить проблему. Задача. 1. Необходимо решить систему линейного уравнения(3го порядка) и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер