Форум программистов, компьютерный форум, киберфорум
MathCAD
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 44

Обращение матриц методом окаймления

08.01.2022, 13:12. Показов 1467. Ответов 14

Студворк — интернет-сервис помощи студентам
Добрый день, пытаюсь сделать обращение матрицы методом окаймления, написал на питоне код, там все работает хорошо, пытаюсь перенести на MathCAD, и здесь возникают проблемы в цикле
Python
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
import numpy as np
np.set_printoptions(precision=2, suppress=True)
def get_inv(A, depth = 0):
    n = len(A)
    k = n - 1
if n == 1:
        return np.matrix([[ 1 / A[0, 0] ]])
Ap = A[:k, :k]
V, U = A[k, :k], A[:k, k]
Ap_inv = get_inv(Ap, depth + 1)
alpha = 1 / (A[k, k] - V * Ap_inv * U).item()
Q = -V * Ap_inv * alpha
P = Ap_inv - Ap_inv * U * Q
R = - Ap_inv * U * alpha
 
A_inv = np.matrix([[0.0] * n for _ in range(n)])
A_inv[:k, :k] = P
A_inv[k, :k] = Q[0]
A_inv[:k, k] = R[:, 0]
A_inv[k, k] = alpha
return A_inv
A = np.matrix([
   [2, 4, 3, 8],
   [5, 6, 8, 2],
   [1, 3, 7, 5],
   [7, 7, 2, 1]
])
print("Обратная матрица методом окаймления: ")
print(get_inv(A))
print("Обратная матрица встроенными функциями: ")
print(np.linalg.inv(A))
Может ли кто-нибудь помочь с этим или подсказать как это сделать правильно?
Миниатюры
Обращение матриц методом окаймления  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2022, 13:12
Ответы с готовыми решениями:

Обратная матрица методом окаймления.
текст: A = ; n = size(A); for k=1:n AK = A(1:k,1:k); % Матрица используемая на данном шаге if k == 1 M(1,1) = 1 /...

задачи по матлабу, обращение матриц, дифференцирование, функция по созданию вектора
Помогите пожалуйста кто чем может) 1)Имеется система уравнений, составленных по методу узловых потенциалов: YU=J Запишите ее...

Обращение матриц методом окаймления
Добрый день, нужно написать код обращения матриц методом окаймления на языке Python. Изначально задается квадратная матрица. Я примерно...

14
Эксперт по математике/физике
11068 / 7369 / 3989
Регистрация: 14.01.2014
Сообщений: 16,807
08.01.2022, 13:44
Нам непонятна конструкция с двоеточием :k внутри массива - это цикл от 1 до k?
Приведите лучше алгоритм метода окаймления, по которому Вы делали программу на Питоне!
0
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
08.01.2022, 14:07
Datvi, в маткаде отсутствуют срезы, что получить новые матрицы, надо использовать явный цикл.

Добавлено через 21 минуту
как вариант, можно использовать submatrix.
1
Эксперт по математике/физике
11068 / 7369 / 3989
Регистрация: 14.01.2014
Сообщений: 16,807
08.01.2022, 15:45
Сравнил Ваш оригинал на Питоне и его "перевод" на Mathcad. Главный его изъян в том, что в Вашей Mathcad-версии нету рекурсивного вызова подпрограммы в отличие от версии на Питоне! Хотя Mathcad поддерживает рекурсивные вызовы подпрограмм.
Совсем нелепым выглядит ввод цикла по k в Mathcad-версии, хотя в Питон-версии совсем нет циклов!
0
Эксперт по математике/физике
11068 / 7369 / 3989
Регистрация: 14.01.2014
Сообщений: 16,807
08.01.2022, 16:55
Лучший ответ Сообщение было отмечено Datvi как решение

Решение

Перевёл Ваш Питон-код на Mathcad-язык практически один к одному, сохранив Вашу рекурсивную логику. Убрал только параметр depth, который видимо является индексом глубины рекурсии.
Заработала с первой попытки!
Миниатюры
Обращение матриц методом окаймления  
2
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
08.01.2022, 17:01
Цитата Сообщение от mathmichel Посмотреть сообщение
в Питон-версии совсем нет циклов!
Цитата Сообщение от Datvi Посмотреть сообщение
for _ in range(n)])
там еще отступы хромают, что к чему, не сразу понять.
1
Эксперт по математике/физике
11068 / 7369 / 3989
Регистрация: 14.01.2014
Сообщений: 16,807
08.01.2022, 17:11
Ну, это был заключительный этап формирования обратной матрицы из четырёх блоков!
Поэтому этот цикл не играл большой роли в данном рекурсивном алгоритме.
1
08.01.2022, 17:18

Не по теме:

Цитата Сообщение от Datvi Посмотреть сообщение
A_inv = np.matrix([[0.0] * n for _ in range(n)])
Цитата Сообщение от mathmichel Посмотреть сообщение
этап формирования обратной матрицы из четырёх блоков!
нет, посмотрела внимательнее... это формирование начальной нулевой матрицы А_inv, потом уже присваивались значения.

вставляют код как попало, а ты сиди, глаза ломай...

0
0 / 0 / 0
Регистрация: 08.12.2020
Сообщений: 44
08.01.2022, 17:22  [ТС]
Спасибо вам большое за помощь, простите за предоставленные неудобства.
0
Эксперт по математике/физике
11068 / 7369 / 3989
Регистрация: 14.01.2014
Сообщений: 16,807
08.01.2022, 17:26
Цитата Сообщение от Krasme Посмотреть сообщение
Не по теме:
Сообщение от Datvi
A_inv = np.matrix([[0.0] * n for _ in range(n)])
А, там оказывается цикл внутри функции np.matrix(...)
Цитата Сообщение от Datvi Посмотреть сообщение
простите за предоставленные неудобства.
Ничего страшного - даже было интересно узнать про алгоритм метода окаймления!
1
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
09.01.2022, 15:48
mathmichel , в 11 Маткаде программа не хочет работать.
Миниатюры
Обращение матриц методом окаймления  
0
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
09.01.2022, 16:00
Nacuott, третья строка снизу - ошибка
0
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
09.01.2022, 16:52
Krasme , спасибо. Дело в том, что я набрал и 15 Маткаде, в нем сразу сработала. Не думал, что при наборе в 11 Маткаде допустил ошибку.
0
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
09.01.2022, 17:13
Цитата Сообщение от Nacuott Посмотреть сообщение
я набрал и 15 Маткаде, в нем сразу сработала.
в 15 маткаде при наборе также R в формуле? или все-таки там U поставили?
0
1833 / 1027 / 192
Регистрация: 24.02.2013
Сообщений: 3,084
Записей в блоге: 12
09.01.2022, 17:29
Цитата Сообщение от Krasme Посмотреть сообщение
в 15 маткаде при наборе также R в формуле? или все-таки там U поставили?
В 15 набрал правильно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2022, 17:29
Помогаю со студенческими работами здесь

Обращение матриц методами окаймления
Написать программу на языке C - Обращение матриц методами окаймления. Матрица должна вводиться из текстового файла. Результаты,...

Обращение матрицы методом окаймления
Дана невырожденная матрица размерности n*n. Требуется найти обратную матрицу. Но методом окаймления. Суть метода окаймления здесь:...

Обращение матриц методом Жордана-Гаусса
Доброго времени суток!Задача следующая: обращение матрицы методом Жордана-Гаусса. Прошу проверить на корректность написание моего ущербного...

Упорядочивание разреженных матриц по методу окаймления
Помогите написать алгоритм для упорядочивания разряженных матриц по методу окаймления.:help: в нэте как то совсем нету информации по...

Обращений матрицы методом окаймления
Помогите пожалуйста переделать код из Matlab в Си. clear all; A = ; disp('Окаймление'); n = size(A); disp(A); for k=1:n ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru