| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > подпрограммы в паскале |
| Автор: Витас 5.3.2010, 08:38 |
Даны две матрицы А размера n*m B размера m*n, состоящие из целых елементов. Если количество z(A) нулевых элементов матрицы А, больше количества z(B) нулевых элементов матрицы B, то вычислить новую матрицу С по формуле C=z(A)*A*B^T(транспонированная) +z(B)*(A*B^T)^2, иначе вычислить новую матрицу D по формуле D по формуле D=z(B)*((A^T)*B)^2+(A^T)*B*z(A) |
| Автор: ФедосеевПавел 5.3.2010, 17:26 |
| Мне кажется, что в условии ошибка... Матрицы A(n,m), B(m,n). Это "сцепленные" матрицы. Их можно умножать A*B=(n,m)*(m,n)=(n,n) или B*A=(m,n)*(n,m)=(m,m). Теперь попробуем вычислить, например C=z(A)*A*B^T+z(B)*(A*B^T)^2 Обозначим B1=B^T. B1(n,m). А как умножить A*B^T=A*B1=(n,m)*(n,m) ? И тоже самое для D. |
| Автор: Витас 9.3.2010, 17:42 | ||
вот процедуры. помогите дописать тело программы и описание переменных
Добавлено @ 17:45 и в условии матрицы А и В обе размера (n*m) Тегами пользуйся для подсветки синтаксиса |
| Автор: ФедосеевПавел 9.3.2010, 19:52 | ||||
| Пересмотри подпрограммы scmult и Trans. Первая даже не откомпилируется (функция должна возвращать только перечислимые типы (Integer, Real и т.д.). Вторая будет возвращать неверный результат для неквадратных матриц. Могу предложить такой вариант
А сама программа будет примерно такой (это незаконченный вариант):
|