2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Несколько вопросов по программе Maple
Сообщение22.07.2023, 18:22 
Заслуженный участник


12/07/07
4452
Вопрос не понял. Может базис?

Старый пакет (deprecated): linalg[basis]
Код:
> M:= matrix([[1,1,0], [0,0,1], [1,1,1]]): # С Matrix также работать в Maple 7 будет, но не будет в CW Maple 15.
> linalg[basis](M, 'rowspace');
          [[1,1,0], [0,0,1]]
Современный пакет LinearAlgebra[Basis]
Код:
> M:= Matrix([[1,1,0], [0,0,1], [1,1,1]]):
> with(LinearAlgebra):
> Basis([seq(Row(M, i), i=1..op(1, M)[1])]);
           [[1,1,0], [0,0,1]]

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение23.07.2023, 14:04 
Заслуженный участник


12/07/07
4452
Если нужны все линейно независимые комбинации строк, то предполагаю, можно попробовать менять порядок в списке заданных векторов.

Например. Пусть имеется матрица
\left( \begin{array}{ccс} 1 & 3 & 2 \\ 
2 & -1 & 3\\
3 & -5 & 4\\
1 & 17 & 4\end{array} \right)$
Третья строка является удвоенной второй минус первой: $v_3 = 2v_2 - v_1$. Четвертая строка является упятерённой первой минус удвоенной второй: $v_4 = 5v_1 - 2v_2$. Т.е. линейно-независимыми строками будут первая и вторая. Но возможны и другие комбинации линейно независимых строк.
Код:
> with(LinearAlgebra):
> N:= RowDimension(M):
> IndList:= combinat[permute](N):
> res:= {}:
> for k from 1 to nops(IndList)
     do
       r := Basis([ seq(Row(M, i), i=IndList[k])]);
       res:= res union {{convert(r[1], list), convert(r[2], list)}};
     end:
     res;
    {{[3,-5,4], [1,3,2]}, {[2,-1,3], [1,3,2]}, {[3,-5,4], [1,17,4]}, {[3,-5,4], [2,-1,3]}, {[2,-1,3], [1,17,4]}, {[1,3,2], [1,17,4]}}

Это проверить, конечно, надо. Что-то типа такого
Код:
> M:= Matrix([[1, 1, 0], [0, 0, 1], [1, 1, 1], [0, 0, 0]]):
> with(LinearAlgebra):
> N:= RowDimension(M):
> IndList:= combinat[permute](N):
> res:= {}:
> for k from 1 to nops(IndList)
     do
       r := Basis([ seq(Row(M, i), i=IndList[k])]);
       res:= res union {{convert(r[1], list), convert(r[2], list)}};
     end:
    res;
       {{[1, 1, 1], [0, 0, 1]}, {[0, 0, 1], [1, 1, 0]}, {[1, 1, 1], [1, 1, 0]}}

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение27.07.2023, 02:11 


03/06/12
2763
GAA в сообщении #1602185 писал(а):
Например. Пусть имеется матрица
$\left( \begin{array}{ccс} 1 & 3 & 2 \\ 
2 & -1 & 3\\
3 & -5 & 4\\
1 & 17 & 4\end{array} \right)$
Третья строка является удвоенной второй минус первой: $v_3 = 2v_2 - v_1$. Четвертая строка является упятерённой первой минус удвоенной второй: $v_4 = 5v_1 - 2v_2$.

И в случае этой матрицы команда должна выдать, например, первую и вторую строки матрицы. Но только это должны быть линейно независимые точно строки этой матрицы, а не 2, пусть и независимых вектора, но являющихся такими линейными комбинациями строк этой матрицы, что они уже не являются строками этой матрицы.

-- 27.07.2023, 03:16 --

GAA в сообщении #1602185 писал(а):
Если нужны все линейно независимые комбинации строк,

Хотя бы одну комбинацию строк, но максимальную.

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение27.07.2023, 06:18 
Заслуженный участник


12/07/07
4452
GAA в сообщении #1602185 писал(а):
{[2,-1,3], [1,3,2]}
Sinoid в сообщении #1602658 писал(а):
И в случае этой матрицы команда должна выдать, например, первую и вторую строки матрицы.
Так в случае указанной матрицы «команда» выдала? Или я что-то не так понял? В этом случае можно (конкретный) пример?

-- Thu 27.07.2023 05:40:45 --

Sinoid в сообщении #1602658 писал(а):
Хотя бы одну комбинацию строк, но максимальную.
Так в сообщении post1602101.html#p1602101 команда приведена. Проверили? Если что-то не так, то можно (конкретный) пример?

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение27.07.2023, 14:54 


03/06/12
2763
GAA в сообщении #1602679 писал(а):
Так в сообщении post1602101.html#p1602101 команда приведена. Проверили? Если что-то не так, то можно (конкретный) пример?

Да, похоже, это то, что нужно. Спасибо большое. А не подскажите, тогда заодно, как будет то же самое, но для столбцов матрицы? Я попробовал, было, по аналогии с этим
Код:
Basis([seq(Column(M, i), i = 1 .. op(1, M)[1])])

, но что-то не пошло.

-- 27.07.2023, 16:02 --

GAA в сообщении #1602101 писал(а):
Может базис?

Я базис попробовал, где-то в инете нашел команду. Так Мэйпл мне выдала векторы с единицами, что-то там с нулями, хотя в строках исходной матрицы этого и близко не было. Я и подумал, что в Мэйпл это называется по-другому.

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение27.07.2023, 16:54 
Заслуженный участник


12/07/07
4452
Если набрать
> ?basis
То справочная система в Maple 7 выдаст список страниц. В частности linalg,basis
Начало текста страницы linalg[basis] справочной системы Maple 7 писал(а):
Calling Sequence
basis(V, crspace)
Parameters
V - a vector, set of vectors or list of vectors, a matrix
crspace - (optional), a name, either 'rowspace' or 'colspace'
После ?basis в Maple 15 откроется страница LinearAlgebra[Basis], а к странице linalg[basis] можно выйти через Table Of Content справки:
System \ Libraries and Packages\ Deprecated Packages and Commands \ Deprecated Packages \ linalg (На последней странице ищем ссылку на basis.)
Вложение:
Комментарий к файлу: Help Maple 15
Help.PNG
Help.PNG [ 22.4 Кб | Просмотров: 0 ]
Код:
> M:= matrix([[1,1,0], [0,0,1], [1,1,1]]):
> linalg[basis](M, 'colspace');
               [[1,0,1], [0, 1, 1]]

В пакете LinearAlgebra в Maple 15 Classic Worksheet:
Код:
> Basis([seq(Column(M, i), i=1..op(1, M)[2])]);
#или
> Basis([seq(Column(M, i), i=1..ColumnDimension(M))]); # этот вариант будет работать и в Maple 7

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение01.08.2023, 00:24 


03/06/12
2763
Да, спасибо большое.

-- 01.08.2023, 01:31 --

Ребят, а почему я упорно не могу решить уже такую систему:
https://postimg.cc/fJDhMcVj
? Пока последнее уравнение имеет вид $b_k=0$, еще решает, а вот дальше ни в какую.

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение01.08.2023, 22:05 
Заслуженный участник


12/07/07
4452
Текст лучше вставлять при помощи тега code. Иначе приходится перебирать с рисунка, и читатель может ошибиться.

В каком смысле не решается? У Вас шесть уравнений и семь неизвестных. Если ни одно их уравнений не является следствием других, то шесть неизвестных выразятся через одно из неизвестных, параметры и коэффициенты уравнений.
И в стандартном интерфейсе, и в Classic Worksheet Maple
Код:
> solve({b[k]+c[k]+15*d[k]-6*t[k]=0, 15*a[k]+8*b[k]+5*c[k]-15*f[k]+6*u[k]=0, 6*a[k]+3*b[k]-c[k]+15*h[k]-6*v[k]=0, a[k]-8*d[k]-f[k]-h[k]+2*t[k]=0, a[k]-5*d[k]-u[k]-v[k]=0, b[k]-5*f[k]+15*t[k] + 8*u[k]+5*v[k]=0}, {a[k], b[k], c[k], d[k], f[k], h[k], t[k]});

{a[k] = 5*d[k]+u[k]+v[k], b[k] = -6/5*u[k], c[k] = -15*d[k], d[k] = d[k], f[k] = 19/25*u[k]+v[k], h[k] = -3*d[k]-4/25*u[k], t[k] = -1/5*u[k]}

Если в качестве переменных выбрать {a[k], b[k], d[k], f[k], h[k], t[k]}, Maple вернёт
Код:
{a[k] = -1/3*c[k]+u[k]+v[k], b[k] = -6/5*u[k], d[k] = -1/15*c[k], f[k] = 19/25*u[k]+v[k], h[k] = -4/25*u[k]+1/5*c[k], t[k] = -1/5*u[k]}

Желательно указать конкретный пример, когда «не решает».

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение02.08.2023, 03:49 
Заслуженный участник


12/07/07
4452
Я в третьем уравнении допустил ошибку, когда его записывал, глядя на картинку. Должно быть так:
Код:
solve({b[k]+c[k]+15*d[k]-6*t[k]=0, 15*a[k]+8*b[k]+5*c[k]-15*f[k]+6*u[k]=0, 6*a[k]+2*b[k]-c[k]+15*h[k]-6*v[k]=0, a[k]-8*d[k]-f[k]-h[k]+2*t[k]=0, a[k]-5*d[k]-u[k]-v[k]=0, b[k]-5*f[k]+15*t[k] + 8*u[k]+5*v[k]=0}, {a[k], b[k], c[k], d[k], f[k], h[k], t[k]});
Решение не находит, так как его нет: ранг матрицы коэффициентов 5. А ранг расширенной матрицы, в общем случае, 6. Например, пусть $u_k = 1$, $v_k = 0$. Тогда, если не ошибся
Код:
> v1:= [ 0, 1, 1, 15, 0, 0,-6]:
> v2:= [15, 8, 5, 0,-15, 0, 0]:
> v3:= [ 6, 2,-1, 0, 0, 15, 0]:
> v4:= [ 1, 0, 0, -8,-1,-1, 2]:
> v5:= [ 1, 0, 0,-5, 0, 0, 0]:
> v6:= [ 0, 1, 0, 0,-5, 0,15]:
> M:= Matrix([v1, v2, v3, v4, v5, v6]):
> linalg[rank](M);
           5
> vx1:= [ 0, 1, 1, 15, 0, 0,-6, 0]:
> vx2:= [15, 8, 5, 0,-15, 0, 0, -6]:
> vx3:= [ 6, 2,-1, 0, 0, 15, 0, 0]:
> vx4:= [ 1, 0, 0, -8,-1,-1, 2, 0]:
> vx5:= [ 1, 0, 0,-5, 0, 0, 0, -1]:
> vx6:= [ 0, 1, 0, 0,-5, 0,15, -8]:
> Mx:= Matrix([vx1, vx2, vx3, vx4, vx5, vx6]):
> linalg[rank](Mx);
               6

Проверить, конечно, надо. Мог и ошибиться, но общая теория такая.

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение02.08.2023, 15:26 


03/06/12
2763
GAA в сообщении #1603572 писал(а):
Текст лучше вставлять при помощи тега code.

Я знаю. Я просто хотел показать реакцию Мэйпл.
GAA в сообщении #1603572 писал(а):
Желательно указать конкретный пример, когда «не решает».

Тот пример на скрине неполный. На самом деле нужно решить следующую систему:
Код:
solve({a[k]-5*d[k]-u[k]-v[k] = 0, b[k]+c[k]+15*d[k]-6*t[k] = 0, a[k]-8*d[k]-f[k]-h[k]+2*t[k] = 0, 6*a[k]+2*b[k]-c[k]+15*h[k]-6*v[k] = 0, 15*a[k]+8*b[k]+5*c[k]-15*f[k]+6*u[k] = 0, b[k]-5*f[k]+15*t[k]+8*u[k]+5*v[k] = 0, c[k]-5*h[k]-6*t[k]-2*u[k]+v[k] = 0}, {a[k], b[k], c[k], d[k], f[k], h[k], t[k]})

, а до этого была система из 9 уравнений, но 3 уравнения оказались следствиями этих 6. Я просто неправильно указал неизвестные, относительно которых нужно решить эту систему :facepalm: Вот так:
Код:
solve({a[k]-5*d[k]-u[k]-v[k] = 0, b[k]+c[k]+15*d[k]-6*t[k] = 0, a[k]-8*d[k]-f[k]-h[k]+2*t[k] = 0, 6*a[k]+2*b[k]-c[k]+15*h[k]-6*v[k] = 0, 15*a[k]+8*b[k]+5*c[k]-15*f[k]+6*u[k] = 0, b[k]-5*f[k]+15*t[k]+8*u[k]+5*v[k] = 0, c[k]-5*h[k]-6*t[k]-2*u[k]+v[k] = 0}, {a[k], b[k], c[k], d[k], t[k], u[k], v[k]})

уже решает. Спасибо большое.

-- 02.08.2023, 16:34 --

GAA в сообщении #1603572 писал(а):
Если в качестве переменных выбрать {a[k], b[k], d[k], f[k], h[k], t[k]}, Maple вернёт

А у меня переменные прям с нижними индексами получается вводить:
https://postimg.cc/fJDhMcVj
(повторюсь). Или так делать нежелательно?

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение02.08.2023, 16:33 


03/06/12
2763
Sinoid в сообщении #1603667 писал(а):
На самом деле нужно решить следующую систему:
Код:
solve({a[k]-5*d[k]-u[k]-v[k] = 0, b[k]+c[k]+15*d[k]-6*t[k] = 0, a[k]-8*d[k]-f[k]-h[k]+2*t[k] = 0, 6*a[k]+2*b[k]-c[k]+15*h[k]-6*v[k] = 0, 15*a[k]+8*b[k]+5*c[k]-15*f[k]+6*u[k] = 0, b[k]-5*f[k]+15*t[k]+8*u[k]+5*v[k] = 0, c[k]-5*h[k]-6*t[k]-2*u[k]+v[k] = 0}, {a[k], b[k], c[k], d[k], f[k], h[k], t[k]})

, а до этого была система из 9 уравнений, но 3 уравнения оказались следствиями этих 6.

У меня вначале нужная система не решалась, я и давай убавлять уравнения. Я, когда стало не получаться, подумал, что, может быть в Мэйпл, и для систем, начиная с какого-то количества уравнений в нем, нужно писать что-то наподобие
Код:
interface(rtablesize = 14)

- команды, которую употребляют, чтобы в Мэйпл увеличить верхний потолок размера матрицы, при котором возможно полное ее отображение, а не, скажем, такое ее отображение:
Изображение

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение02.08.2023, 20:12 
Заслуженный участник


12/07/07
4452
Sinoid в сообщении #1603667 писал(а):
Или так делать нежелательно?
В ранних версиях допускалась форма индексация в виде указания индекса в квадратных скобках. В более поздних версиях появились дополнительные возможности, в частности, индексы, вставка греческих букв. Однако я и привык к текстовому виду («текст должен быть текстом»), и трудно находимых ошибок меньше. Поэтому с этим вопросом я не разбирался. Может быть, знатоки напишут.

Для общения на форумах и в электронной переписке раньше обычно использовался текстовый вид. Для преобразования в текстовый вид, видимо, можно
  • просто скопировать через буфер обмена Windows в форму форума;
  • скопировать предложения («команды») через буфер обмена из документа стандартного интерфейса в документ Classic Worksheet;
  • сохранить документ стандартного интерфейса в файл подходящего формата;
  • преобразовать внутри документа стандартного интерфейса, вызвав локальное меню при помощи правой кнопки мыши и выбрав Conversion \ To String (см. рис. ниже).
Вложение:
ToStringLocalMenu_Maple15.PNG
ToStringLocalMenu_Maple15.PNG [ 68.48 Кб | Просмотров: 0 ]
Вложение:
To stringLocalMenu_Maple15_res.PNG
To stringLocalMenu_Maple15_res.PNG [ 31.06 Кб | Просмотров: 0 ]

 Профиль  
                  
 
 Re: Несколько вопросов по программе Maple
Сообщение02.08.2023, 22:26 


03/06/12
2763
GAA
ясно. Спасибо.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group