Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2008, 00:02   #1
ProPoker
 
Аватар для ProPoker
 
Регистрация: 11.06.2008
Сообщений: 5
Печаль NEED HELP (Помогите пожалуйста решить задачу на Паскале)

Люди немогу догнать 2 задачи... Помогите решить плиз.... Хотя бы объясните суть... А лучше дайте код! =)))

1) Заданы матрицы A,B,C размера (nхn) и векторы x,y,z в n-мерном пространстве. Определить u=Ax+By-Cz+Bx

2) Заданны n-элементные вещественные векторы x,y и квадратные матрицы А,В,С n-го порядка. Определите величину:
Q=(Ax,By)-(Cx,y)/(x,By)
Где Ах - это произведение матрицы А на вектор х, результатом чего является вектор; а например, (х, Ву) - скалярное произведение соответствующих векторов.

Вот это две аццкие задачи... Плиз хелп!..
з.Ы: Времени осталось мало....
Все должно быть изложено так просто, как только возможно, но не проще.
Альберт Эйнштейн
ProPoker вне форума Ответить с цитированием
Старый 12.06.2008, 07:06   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот я решал похожую задачу, почти как твоя вторая, только один знак не совпадает, думаю разберешся, если надо.
Цитата:
Даны 6 элементные вещественные векторы х и у, и квадратные матрицы шестого порядка А, В и С. Вычислить: ((А*х)*(В*у))+((С*х)*у)/(х*(В*у)).
1. Результатом Ах, Ву, Сх будет матрица [6,1].
2. Результатом (Ах,Ву), (Сх,у), (х,Ву) будет произведение матрицы [6,1] на матрицу [1,6] т.е. число.
3. Дальше идут действия с числами.
По программе.
- для создания матриц и векторов, а также умножения матрицы на вектор сделал процедуры, чтобы не повторяться по 2-3 раза.
- матрицы и вектора заполнил числами из интервала [1,8], т.к. даже 10 иногда дает выход за пределы типа Longint.
- переменным дал обозначения, чтобы было понятно, какое действие делаем.
Код:
uses crt;
const n=6;
type Tvect=array[1..n]of integer;
     Tmatr=array[1..n] of Tvect;
var a,b,c:Tmatr;
    x,y,ax,by,cx:Tvect;
    axby,cxy,xby:longint;
    sum:real;
    i,j:integer;
Procedure VvMatr(var m:Tmatr);
begin
for i:=1 to n do
   begin
     for j:=1 to n do
       begin
         m[i,j]:=random(8)+1;
         write(m[i,j]:3);
       end;
    writeln;
  end;
end;
Procedure VvVect(var m:Tvect);
begin
for i:=1 to n do
   begin
     m[i]:=random(10)+1;
     write(m[i],' ');
   end;
end;
Procedure PrzMatVec(m:Tmatr;p:Tvect;var q:Tvect);
begin
for i:=1 to n do
    begin
      q[i]:=0;
      for j:=1 to n do
        begin
         q[i]:=q[i]+m[i,j]*p[j];
        end;
      write(q[i],' ');
    end;
writeln;
end;
begin
clrscr;
randomize;
Writeln('Matrica A:');
VvMatr(a);
readln;
Writeln('Vector x:');
VvVect(x);
readln;
Writeln('Vector A*x:');
PrzMatVec(a,x,ax);
readln;
Writeln('Matrica B:');
VvMatr(b);
readln;
Writeln('Vector y:');
VvVect(y);
readln;
Writeln('Vector B*y:');
PrzMatVec(b,y,by);
readln;
Writeln('Matrica C:');
VvMatr(c);
readln;
Writeln('Vector x:');
VvVect(x);
readln;
Writeln('Vector C*x:');
PrzMatVec(c,x,cx);
readln;
axby:=0;
for i:=1 to n do
axby:=axby+ax[i]*by[i];
writeln('axby=',axby);
cxy:=0;
for i:=1 to n do
cxy:=cxy+cx[i]*y[i];
writeln('cxy=',cxy);
xby:=0;
for i:=1 to n do
xby:=xby+x[i]*by[i];
writeln('xby=',xby);
sum:=axby+cxy/xby;
writeln('Rezultat=',sum:6:2);
readln
end.

Последний раз редактировалось puporev; 12.06.2008 в 08:28.
puporev вне форума Ответить с цитированием
Старый 12.06.2008, 10:24   #3
ProPoker
 
Аватар для ProPoker
 
Регистрация: 11.06.2008
Сообщений: 5
По умолчанию Огромное спасибо!

Огромное спасибо за помощь, сейчас сяду разбираться!
Все должно быть изложено так просто, как только возможно, но не проще.
Альберт Эйнштейн
ProPoker вне форума Ответить с цитированием
Старый 12.06.2008, 10:49   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если запутаешся, пиши. Вместе распутаемся. Кстати не заметил, у меня целые числа, а утебя надо вещественные.
puporev вне форума Ответить с цитированием
Старый 12.06.2008, 14:18   #5
ProPoker
 
Аватар для ProPoker
 
Регистрация: 11.06.2008
Сообщений: 5
По умолчанию

Мы тут общими усилиями разобрались... Поменяли тип... И зделали не 6го порядка а Нного Спасибо еще раз, отличное решение!
Все должно быть изложено так просто, как только возможно, но не проще.
Альберт Эйнштейн
ProPoker вне форума Ответить с цитированием
Старый 12.06.2008, 14:20   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Пожалуйста, я ведь только пример привел, а из него все можно сделать.
puporev вне форума Ответить с цитированием
Старый 12.06.2008, 16:40   #7
ProPoker
 
Аватар для ProPoker
 
Регистрация: 11.06.2008
Сообщений: 5
По умолчанию

Одна задача решена так сказть... Ну вообщем есть =) Люди добрые, осталось еще одна задачка (Моск так и непонимает) НИД ХЕЛП... Хоть мысли какие нить по этому поводу:

Заданы матрицы A,B,C размера (nхn) и векторы x,y,z в n-мерном пространстве. Определить u=Ax+By-Cz+Bx
Все должно быть изложено так просто, как только возможно, но не проще.
Альберт Эйнштейн
ProPoker вне форума Ответить с цитированием
Старый 12.06.2008, 16:45   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Ну вы даете, здесь то же самое, только в конце 3 вектора сложить и один вычесть.
Код:
uses crt;
const n=6;
type Tvect=array[1..n]of integer;
     Tmatr=array[1..n] of Tvect;
var a,b,c:Tmatr;
    u,x,y,z,ax,by,cz,bx:Tvect;
    i,j:integer;
Procedure VvMatr(var m:Tmatr);
begin
for i:=1 to n do
   begin
     for j:=1 to n do
       begin
         m[i,j]:=random(8)+1;
         write(m[i,j]:3);
       end;
    writeln;
  end;
end;
Procedure VvVect(var m:Tvect);
begin
for i:=1 to n do
   begin
     m[i]:=random(10)+1;
     write(m[i],' ');
   end;
end;
Procedure PrzMatVec(m:Tmatr;p:Tvect;var q:Tvect);
begin
for i:=1 to n do
    begin
      q[i]:=0;
      for j:=1 to n do
        begin
         q[i]:=q[i]+m[i,j]*p[j];
        end;
      write(q[i],' ');
    end;
writeln;
end;
begin
clrscr;
randomize;
Writeln('Matrica A:');
VvMatr(a);
readln;
Writeln('Vector x:');
VvVect(x);
readln;
Writeln('Vector A*x:');
PrzMatVec(a,x,ax);
readln;
Writeln('Matrica B:');
VvMatr(b);
readln;
Writeln('Vector y:');
VvVect(y);
readln;
Writeln('Vector B*y:');
PrzMatVec(b,y,by);
readln;
Writeln('Vector B*x:');
PrzMatVec(b,x,bx);
readln;
Writeln('Matrica C:');
VvMatr(c);
readln;
Writeln('Vector z');
VvVect(z);
readln;
Writeln('Vector C*z:');
PrzMatVec(c,z,cz);
readln;
writeln('Vector U:');
for i:=1 to n do
   begin
    u[i]:=ax[i]+by[i]-cz[i]+bx[i];
    write(u[i],' ');
   end;
readln
end.
puporev вне форума Ответить с цитированием
Старый 12.06.2008, 16:47   #9
ProPoker
 
Аватар для ProPoker
 
Регистрация: 11.06.2008
Сообщений: 5
По умолчанию

Еще большее спасибо =) Если бы эти матрицы и вектора давали в курсе... То мот и вывернули бы что нить...А так пальцем в темноту тыкем... Спасибо еще раз!
Все должно быть изложено так просто, как только возможно, но не проще.
Альберт Эйнштейн
ProPoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста решить задачу в Паскале Alfons Помощь студентам 1 19.02.2008 21:07
Помогите решить задачу в Паскале freeman4913 Помощь студентам 3 24.12.2007 21:41
Пожалуйста помогите решить задачу на паскале jst.denis Помощь студентам 1 09.11.2007 10:56
Помогите решить задачу на паскале! jst.denis Помощь студентам 2 28.10.2007 11:13