Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
03.11.2017, 14:11  [ТС]
Студворк — интернет-сервис помощи студентам
Centurio, у меня в векторе dJ записаны уравнения в символьном виде. Кажлоя строка - строка в системе.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2017, 14:11
Ответы с готовыми решениями:

Решение переопределеной СЛАУ
Доброго времени суток! Возникла проблема при решении переопределенной системы алгебраических уравнений (далее - СЛАУ). Необходимо решить...

Решение переопределенной СЛАУ
Здравствуйте. Есть СЛАУ, которая в зависимости от числа членов ряда, состоит из 2, 3 или 4 неизвестных, правая часть так же известна....

Решение несовместной СЛАУ
Здравствуйте, Имеется СЛАУ следующего вида: \left\{\begin{matrix} a1+b1=Z1 \\ a1+b2=Z2 \\ a1+b3=Z3 \\ a2+b2=Z4 \\ a2+b3=Z5 \\ ...

37
79 / 61 / 25
Регистрация: 07.04.2013
Сообщений: 204
03.11.2017, 14:14
Что-то у меня вообще код перестал работать, видимо помнил тогда символьные переменные y1, y2, и т . д. А их по ходу тоже нужно объявлять как и символьный вектор y. Вот так вроде всё работает как надо, попробуйте:
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 all
% делаем символьные переменные y1, y2 ... yn
idx = 1:9;
y_temp = sprintf(['y' '%d,'],idx);
syms(['tmp(' y_temp(1:end-1) ')']);
 
% делаем символьный вектор y
y = sym('y',[9,1]);
 
% записываем уравнения
eqns = [36 * y1 - 18 * y2 - 18,
 36*y2 - 18*y1 - 18*y3 - 101/450,
   36*y3 - 18*y2 - 18*y4 - 17/75,
 36*y4 - 18*y3 - 18*y5 - 103/450,
  36*y5 - 18*y4 - 18*y6 - 52/225,
    36*y6 - 18*y5 - 18*y7 - 7/30,
  36*y7 - 18*y6 - 18*y8 - 53/225,
         18*y8 - 18*y7 - 107/450,
                  18*y9 - 906/25];
 
% решаем
otv=solve(eqns, y);
 
% переводим символьную структуру в double-вектор
C= struct2cell(otv);
for i = 1: length(C)
double_solve(i) = double(C{i});
end
0
Модератор
 Аватар для Centurio
1765 / 1610 / 542
Регистрация: 13.09.2015
Сообщений: 5,649
03.11.2017, 14:15
MightyPower, у вас уже все уравнения со 100 неизвестными записаны где-то в символьном виде?
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
03.11.2017, 14:20  [ТС]
Centurio, всё как в первом сообщении в теме, только не 9, а 100 будет. Если конкретно, то - вот (для 50 неизвесных):
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
46
47
48
49
50
51
52
dJ =
 
                  196*y1 - 98*y2 - 98
    196*y2 - 98*y1 - 98*y3 - 100/2401
    196*y3 - 98*y2 - 98*y4 - 102/2401
    196*y4 - 98*y3 - 98*y5 - 104/2401
    196*y5 - 98*y4 - 98*y6 - 106/2401
    196*y6 - 98*y5 - 98*y7 - 108/2401
    196*y7 - 98*y6 - 98*y8 - 110/2401
      196*y8 - 98*y7 - 98*y9 - 16/343
   196*y9 - 98*y8 - 98*y10 - 114/2401
  196*y10 - 98*y9 - 98*y11 - 116/2401
 196*y11 - 98*y10 - 98*y12 - 118/2401
 196*y12 - 98*y11 - 98*y13 - 120/2401
 196*y13 - 98*y12 - 98*y14 - 122/2401
 196*y14 - 98*y13 - 98*y15 - 124/2401
   196*y15 - 98*y14 - 98*y16 - 18/343
 196*y16 - 98*y15 - 98*y17 - 128/2401
 196*y17 - 98*y16 - 98*y18 - 130/2401
 196*y18 - 98*y17 - 98*y19 - 132/2401
 196*y19 - 98*y18 - 98*y20 - 134/2401
 196*y20 - 98*y19 - 98*y21 - 136/2401
 196*y21 - 98*y20 - 98*y22 - 138/2401
   196*y22 - 98*y21 - 98*y23 - 20/343
 196*y23 - 98*y22 - 98*y24 - 142/2401
 196*y24 - 98*y23 - 98*y25 - 144/2401
 196*y25 - 98*y24 - 98*y26 - 146/2401
 196*y26 - 98*y25 - 98*y27 - 148/2401
 196*y27 - 98*y26 - 98*y28 - 150/2401
 196*y28 - 98*y27 - 98*y29 - 152/2401
   196*y29 - 98*y28 - 98*y30 - 22/343
 196*y30 - 98*y29 - 98*y31 - 156/2401
 196*y31 - 98*y30 - 98*y32 - 158/2401
 196*y32 - 98*y31 - 98*y33 - 160/2401
 196*y33 - 98*y32 - 98*y34 - 162/2401
 196*y34 - 98*y33 - 98*y35 - 164/2401
 196*y35 - 98*y34 - 98*y36 - 166/2401
   196*y36 - 98*y35 - 98*y37 - 24/343
 196*y37 - 98*y36 - 98*y38 - 170/2401
 196*y38 - 98*y37 - 98*y39 - 172/2401
 196*y39 - 98*y38 - 98*y40 - 174/2401
 196*y40 - 98*y39 - 98*y41 - 176/2401
 196*y41 - 98*y40 - 98*y42 - 178/2401
 196*y42 - 98*y41 - 98*y43 - 180/2401
   196*y43 - 98*y42 - 98*y44 - 26/343
 196*y44 - 98*y43 - 98*y45 - 184/2401
 196*y45 - 98*y44 - 98*y46 - 186/2401
 196*y46 - 98*y45 - 98*y47 - 188/2401
 196*y47 - 98*y46 - 98*y48 - 190/2401
 196*y48 - 98*y47 - 98*y49 - 192/2401
           98*y49 - 98*y48 - 194/2401
                     98*y50 - 9608/49
Ну и мне нужно режить систему https://www.cyberforum.ru/cgi-bin/latex.cgi?dJ = 0, т. е. приравнять каждый элеент вектора https://www.cyberforum.ru/cgi-bin/latex.cgi?dJ нулю в системе.

Добавлено через 1 минуту
Annza, спасибо, я сейчас ручками посмотрел и похоже, что у Вас всё правильно считает, а ошибка видимо у меня на более ранних этапах, ещё до получения https://www.cyberforum.ru/cgi-bin/latex.cgi?dJ.
0
Модератор
 Аватар для Centurio
1765 / 1610 / 542
Регистрация: 13.09.2015
Сообщений: 5,649
03.11.2017, 14:21
MightyPower, вы ответьте конкретно на вопрос: эти уравнения у вас уже записаны? Или в предыдущем сообщении вы их вводили вручную?
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
03.11.2017, 14:22  [ТС]
Centurio, нет, у меня этот массив заполняется в цикле в соответствии с алгоритмом.
0
Модератор
 Аватар для Centurio
1765 / 1610 / 542
Регистрация: 13.09.2015
Сообщений: 5,649
03.11.2017, 14:23
MightyPower, а что мешает в цикле заполнить матрицу?
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
03.11.2017, 14:24  [ТС]
Centurio, я не слишком понимаю, как это сделать в данном случае. Если хотите, могу расписать подробно задачу и мб Вы подскажите, как избежать того мракобесия, которое я наворотил здесь.
0
Модератор
 Аватар для Centurio
1765 / 1610 / 542
Регистрация: 13.09.2015
Сообщений: 5,649
03.11.2017, 14:25
Цитата Сообщение от MightyPower Посмотреть сообщение
могу расписать подробно задачу
Вот это будет лучше всего.
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
03.11.2017, 14:47  [ТС]
Значится дело такое - решается задача отыскания экстремума интегрального функционала.
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
I(y) = \int\limits_a^b{F(x, \, y(x), \, y'(x))dx}.<br />
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
I(y) \rightarrow\underset{y(x) \in X}{\text{extr}},<br />
где https://www.cyberforum.ru/cgi-bin/latex.cgi?X - пр - во https://www.cyberforum.ru/cgi-bin/latex.cgi?C^1[a, b] с условиями на концах.
У нас задана функция https://www.cyberforum.ru/cgi-bin/latex.cgi?F(\dots) и стоят условия на концах: https://www.cyberforum.ru/cgi-bin/latex.cgi?y(a) = A, \,\,\, y(b) = B.
Вводится равномерная сетка по https://www.cyberforum.ru/cgi-bin/latex.cgi?x: https://www.cyberforum.ru/cgi-bin/latex.cgi?\omega_h = \left\{x_i, \,\,\,  x_i = a + ih, \,\,\, i = \overline{1,N}, \,\,\, h = \frac{b-a}{N - 1}\right\}, затем производится сужении функции https://www.cyberforum.ru/cgi-bin/latex.cgi?y(x) на сетку https://www.cyberforum.ru/cgi-bin/latex.cgi?\omega_h: https://www.cyberforum.ru/cgi-bin/latex.cgi?\left[y(x) \right]_h = \left\{ y(x_i), \,\,\, i = \overline{0, N}   \right\}.
Собственно на первом шаге интеграл заменяется по какой - нибудь квадратурной формуле численного интегрирования (например - по формуле левых прямоугольников) и мы получаем:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
I(y) = \int\limits_a^b{F(x, \, y(x), \, y'(x))dx} \approx \sum_{i=0}^{N-1}{F(x_i, \, y(x_i), \, y'(x_i))h}.<br />
Производные https://www.cyberforum.ru/cgi-bin/latex.cgi?y'(x_i) заменяются своими разностными аналогами,
нарпимер – по формуле левых разностных производных:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
y'(x_i) \approx \frac{y_i - y_{i-1}}{h}.<br />
Формула левых разностных производных неприменима для узла https://www.cyberforum.ru/cgi-bin/latex.cgi?x_0 = a, поэтому производную в нём аппроксими- руем по формуле правых разностных производных:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
y'(x_i) \approx \frac{y_{i+1} - y_{i}}{h}.<br />
Тогда для нашей задачи имеем (с учетом гр. условий):
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
y'(x_0) \approx \frac{y_1 - y_0}{h} = \frac{y_1 - A}{h}, <br />
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
y'(x_{N-1}) \approx \frac{y_N - y_{N-1}}{h} = \frac{B - y_{N-1}}{h}.<br />
Теперь перепишем наш функционал с учётом вышесказанного:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
I(y) = \int\limits_a^b{F(x, \, y(x), \, y'(x))dx} \approx hF\left(x_0, \, y_0, \, \frac{y_1 - A}{h}\right) + h\sum_{i=1}^{N-2}{ F\left(x_i, \, y_i, \, \frac{y_i - y_{i-1}}{h}\right) } + hF\left(x_{N-1}, \, y_{N-1}, \, \frac{B - y_{N-1}}{h}\right). \nonumber<br />
Таким образом теперь https://www.cyberforum.ru/cgi-bin/latex.cgi?I(y) - функция переменных https://www.cyberforum.ru/cgi-bin/latex.cgi?y_1, \dots , y_{N-1}.
И предыдущая задача сводится к задаче отыскания минимума функции https://www.cyberforum.ru/cgi-bin/latex.cgi? I(y_1, \dots , y_{N-1}).
Соответственно записывается необходимое условие экстремума для функции:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{\partial I}{\partial y_i} = 0, \,\,\, \forall i = \overline{1, N-1}.<br />

Вот, а в моём коде dJ - это как раз вектор следующего толка:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
dJ = \left(\frac{\partial I}{\partial y_1}, \dots , \frac{\partial I}{\partial y_{N-1}}  \right)^{T}.<br />
P.S. Может возникнуть опасение, что там получится не СЛАУ, но у нас в https://www.cyberforum.ru/cgi-bin/latex.cgi?F будет входить https://www.cyberforum.ru/cgi-bin/latex.cgi?y' квадратично, так что после взятия производной получается как раз СЛАУ.
0
Модератор
 Аватар для Centurio
1765 / 1610 / 542
Регистрация: 13.09.2015
Сообщений: 5,649
03.11.2017, 15:32
Значения y(xi) или вид функции y(x)и вид функционала какие?
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
03.11.2017, 23:34  [ТС]
Centurio, ну https://www.cyberforum.ru/cgi-bin/latex.cgi?y - то как раз мы и хотим найти. Пусть, скажем, имеем такой вид:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
F(x, y(x), y'(x)) = 12(y'(x))^2  + x^2y'(x).<br />

Добавлено через 29 минут
Ну и условия на концах заданы:
https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
y(1) = 0, \,\,\, y(2) = -1.<br />
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3416 / 396
Регистрация: 15.06.2009
Сообщений: 5,817
04.11.2017, 17:05
Цитата Сообщение от MightyPower Посмотреть сообщение
могу расписать подробно задачу
С этого надо было начинать
 Комментарий модератора 
Правила форума
4.7. Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.

Типичная задача вариационного исчисления, приводит к уравнению Эйлера-Лагранжа

https://www.cyberforum.ru/cgi-bin/latex.cgi? \frac{\partial F}{\partial y}-\frac{d}{dx}\frac{\partial F}{\partial y'}=0

с элементарным решением
https://www.cyberforum.ru/cgi-bin/latex.cgi?y(x)=\frac{1}{24}\left ( -x^2-21x+22 \right )
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
04.11.2017, 17:08  [ТС]
Том Ардер, разумеется я знаю такие тривиальные вещи, необходимо решить именно численно!
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3416 / 396
Регистрация: 15.06.2009
Сообщений: 5,817
04.11.2017, 17:19
Цитата Сообщение от MightyPower Посмотреть сообщение
необходимо решить именно численно!
Система уравнений получилась ленточной, с трёхдиагональной матрицей. Элементы матрицы формируются программно, никакого ручного ввода/вывода, размерность - любая, решается методом прогонки. Готовые алгоритмы/программы есть, и примеров много.
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
04.11.2017, 17:27  [ТС]
Том Ардер, метод прогонки я знаю.
Но вот не до конца понимаю, как записать в матрицу коэффициенты получившейся СЛАУ. Можете подсказать?
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3416 / 396
Регистрация: 15.06.2009
Сообщений: 5,817
04.11.2017, 18:00
Цитата Сообщение от MightyPower Посмотреть сообщение
метод прогонки я знаю

Не по теме:

Знаю эти слова, изучал, понял, умею пользоваться - укажите правильный вариант

.
Цитата Сообщение от MightyPower Посмотреть сообщение
как записать в матрицу коэффициенты получившейся СЛАУ
Не нужна матрица (в которой практически все элементы нули)! И применять стандартную матричную функцию не надо. Достаточно двух векторов коэффициентов и вектора правых частей.

Пример с матрицей
Как решить систему линейных уравнений с трехдиагональной матрицей методом прогонки?
Поиск:
https://www.google.com.ua/sear... 8wfv1rToDQ
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 70
04.11.2017, 22:05  [ТС]
Том Ардер, зачем Вы мне скидываете про метод прогонки? Я знаю, как он реализуется.
Я пытаюсь объяснить, что не понимаю, как эти самые коэффициенты на главной и соседних побочных диагоналях записать в матрицу (или в вектора, если так угодно) конкретно в данной задаче, в алгоритме, который я описал. Далее найти прогоночные коэффициенты я смогу, мне не понятно, как здесь сформировать трехдиагональную матрицу (3 вектора).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2017, 22:05

Решение СЛАУ методом МНК
Здравствуйте. Никак не получается решить СЛАУ методом МНК.. Есть уравнение x0=0.25*x01+0.25*x02+0.725*x03+0.25*x04-q0-tau*p0 где ...

Решение СЛАУ МНК в MATLAB
Необходимо создать программу на Matlab, реализующую решение переопределенных систем линейных уравнений методом наименьших квадратов (МНК)....

Решение СЛАУ методом Гаусса
Здравствуйте! Помогите пожалуйста разобраться в чем ошибка! Программа - решение СЛАУ методом Гаусса. приводит к ступенчатому виду, дальше...

Решение СЛАУ методом Гаусса
В программе есть ошибка,помогите её найти и исправить,пожалуйста)str=str2num(get(handles.in1,'String')); ...

Решение слау методом релаксации
Программа выдает ошибку в 15 строке. Помогите отредактировать программу, пожалуйста. n=length(b); C=zeros(i,j) for i=1:n ...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru