![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
warhel |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть задача:
вычислить матрицу вида: C=A3+B3 3 - это степень, степень размер матрицы и т.д. естественно вводит пользователь вообщем нужно решить всё это на турбо паскале.. я ещё не очень хорошо в нём разбираюсь но вот что всё таки сделал сам: (работает не правельно, выводит вообще числа и не близкие к ответу) Код program matrix; uses crt; const max=10; var i,j,amax, bmax,n: integer; a,b: array [1..max,1..max] of integer; c: array [1..max,1..max] of real; begin writeln('vvedite kol-vo strok v matrice: '); readln(amax); writeln('vvedite kol-vo stolbcov v matrice: '); readln(bmax); write('vvedite stepen: '); readln(n); writeln('vvod matrici A'); for i:=1 to amax do for j:=1 to bmax do begin write('vvedite ',i,'-й элемент ',j,'-строки: '); readln(a[i,j]); end; {end for} writeln('vvod matrici B'); for i:=1 to amax do for j:=1 to bmax do begin write('vvedite ',i,'-й элемент ',j,'-строки: '); readln(b[i,j]); end; {end for} for i:=1 to amax do for j:=1 to bmax do begin c[i,j]:=exp(n*(a[i,j])+exp(n*(b[i,j])) ); end; {end fir} for i:=1 to amax do for j:=1 to bmax do writeln(c[i,j]); repeat until keypressed; end. Помогите пожалуста ![]() спасибо заранее =) Сообщение отредактировано: warhel - 3.12.2006 18:52 |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
ну во первых ты судя по всему матрицу не правильно заполняешь,
for i:=1 to amax do -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
warhel |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
ну это я пробывал менять местами вообщем смысла не меняет, я постоянно пробую вводить в А и в В одинаковые квадратные матрицы 2х2 и все элементы тоже 2. В результате программа выдаёт матрицу: 2;4;2;2, а должна 16;16;16;16..
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
c[i,j]:=exp(n*LN(a[i,j]))+exp(n*LN(b[i,j]));? |
warhel |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, ну как я думал эта строчка должна была возводить элемент матрицы А в степень и прибавлять к нему возведённый в степень элемент матрицы В или я не прав? исправь меня тогда пожалуйста =))
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Ты внимательно посмотри, на то, что было у тебя, и на то, что сделал я ...
Особенно внимание - на скобки... Ну, и про Ln не забудь... |
warhel |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
а извини плз, я подумал что ты просто выделил мою строчку кода и написал вопрос а ты на самом деле написал исправленую =) спасиб пойду пробывать
==== попробывал, всё работает огромное спасибо =) теперь остался один вопрос только, можно ли как то реализовать тоже самое вычисление но например если матрицы будут не квадратный а скажем одна 2х3 а вторая 3х4.. я неособо в математике силён поэтому честно говоря на бумаге то не уверен что посчитаю =) очень хотел бы узнать сам метод приблезительно.. Сообщение отредактировано: warhel - 3.12.2006 20:46 |
мисс_граффити |
![]()
Сообщение
#8
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а разве возведение матрицы в степень - это возведение в степень ее элементов?...
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата а разве возведение матрицы в степень - это возведение в степень ее элементов?... ![]() С этого и надо было начинать, warhel... Здесь: Массивы. Матрицы. Типичные задачи. есть возведение матрицы (только квадратной, потому что перемножать можно только "сцепленные" матрицы, а матрица может быть сцеплена сама с собой только если она - квадратная) в степень... |
warhel |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
неет матрицу в степень мне возводить не надо =) это я и сам бы разобрался как её возвести =)
мне надо было вычилисть матрицу С каждый элемент которой равен элемнт матрицы А в степени + элемент матрицы В в степени =) впрочем с этим я разобрался, проехали =) теперь только один вопрос можно ли перемножать не квадратные матрицы?.. или перемножать можно только сцепленные матрицы? п.с. спасибо за ссылку нашёл некоторые полезные вещи =) |
мисс_граффити |
![]()
Сообщение
#11
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
так ты определись, надо ли тебе перемножать матрицы или работать с отдельными элементами?
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
warhel |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
я плохо наверное обьясняю сори =)
вот значит ещё раз =) задача: вычислисть матрицу: An+Bn=C, где n - степень ну т.е. каждый элемент матрицы С явл. суммой соответствующий элементов матриц А и В в указаной степени. я решил задачу для квадратных матриц. Теперь только один вопрос, можно ли решить задачу если матрицы будут НЕ квадратные и НЕ сцеплённые? ![]() |
Archon |
![]()
Сообщение
#13
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
мисс_граффити и volvo указали тебе на то, что в математике возведение матрицы в степень - это НЕ возведение в степень её элементов. Реши, что тебе надо.
-------------------- Close the World...txeN eht nepO
|
warhel |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Archon, я ж пишу, в степень конкретно матрицу возводить мне не надо. Необходимо только её элементы
![]() Сообщение отредактировано: warhel - 3.12.2006 22:41 |
Archon |
![]()
Сообщение
#15
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата можно ли решить задачу если матрицы будут НЕ квадратные и НЕ сцеплённые? нет-------------------- Close the World...txeN eht nepO
|
warhel |
![]()
Сообщение
#16
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот ещё один вопрос возник.. а как быть если степень отрицательная?
напомню задачу: определить матрницу С=А3+В3, где 3 - это степень.. я делал так, чтобы вычислять задачу при отрицательной степени: сделал проверку, если стпень, которую ввёл юзер отрицательна, значит берём модуль и ставим логическую переменную, при выводе ответа опять проверка, если переменная тру, тогда пишем 1/ответ, но почему считает не правельно.. подскажите пожалуйсто.. ну и если ещё какие то недочёты уваидите тоже буду рад =) вот конечный вариант алгоритма: Код program matrix; uses crt; const max=10; var i,j,amax, bmax,n: integer; a,b: array [1..max,1..max] of real; c: array [1..max,1..max] of real; flag: boolean; t: real; begin clrscr; writeln('Будьте внимательны, количество строк и стобцов должно быть больше 0 и меньше ',max); repeat writeln('Введите количество строк в матрице: '); readln(amax); writeln('Введите количество столбцов в матрице: '); readln(bmax); if (amax<0) or (amax>max) or (bmax<0) or (bmax>max) then writeln('Внимание Вы ввели недопустимо значение, повторите.'); until (amax>0) and (amax<max) and (bmax>0) and (bmax<max); write('Введите степень: '); readln(n); if n<0 then begin n:=abs(n); flag:=true; end; writeln('Ввод матрицы A:'); for i:=1 to amax do for j:=1 to bmax do begin write('Введите ',i,'-й элемент ',j,'-строки: '); readln(a[i,j]); end; {end for} writeln('Ввод матрицы B:'); for i:=1 to amax do for j:=1 to bmax do begin write('Введите ',i,'-й элемент ',j,'-строки: '); readln(b[i,j]); end; {end for} for i:=1 to amax do for j:=1 to bmax do begin c[i,j]:=exp(n*LN(a[i,j]))+exp(n*LN(b[i,j])); end; {end for} if flag then begin for i:=1 to amax do for j:=1 to bmax do t:=1/c[i,j]; writeln(t); end else begin for i:=1 to amax do for j:=1 to bmax do writeln(c[i,j]:3:3); end; repeat until keypressed; end. |
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
Цитата Вот ещё один вопрос возник.. а как быть если степень отрицательная? Насколько я помню, в математике для квадратной матрицы определена только операция возведения в целую НЕотрицательную степень... |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
А ошибка у тебя - в том, что ты СНАЧАЛА складываешь значения, а потом делишь на результат единицу... Тебе же надо складывать обратные значения...
Пример: пусть определенный элемент матрицы А[1, 1] = 2, и соответственно, элемент B[1, 1] = 3... Что делает твоя программа при возведении в (-3) степень? C[1, 1] := (2^3) + (3^3) = 35, после чего получаем 1/35 а нужно: C[1, 1] := 1 / (2^3) + 1/(3^3) = 1/8 + 1/27 = 35/216... Согласись, что это не одно и то же... |
warhel |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
оо спасиба =) точно, а я сидел голову ломал откуда такие цифры берутся, всё супер спасибо =)
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:01 |