Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Паскаль] Массивы 
:(
    Опции темы
Anyutka
Дата 25.12.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.12.2009

Репутация: нет
Всего: нет



Даны два вектора х=(х1, х2, ..., хn), у=(у1, у2, ..., уn). Написать программу, проверяющую являются ли х и у линейно зависимыми. 


PM MAIL   Вверх
Anyutka
  Дата 25.12.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.12.2009

Репутация: нет
Всего: нет



помогите пожалуйста...очень прошу....
PM MAIL   Вверх
darkart
Дата 2.1.2010, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Код

program vpf_anyutka_linear_independence;

const
  N = 3;{размерность}
  EPSILON = 1e-4;{точность}

type
  TVector = array[ 1..N ] of real;{тип - вектор}

procedure InputVector( var vector : TVector );
{процедура ввода вектора}
var
  i : integer;{счетчик}
begin
  for i := 1 to N - 1 do{для каждого компонента векотра, кроме последнего}
    read( vector[ i ] );{читаем очередной компонент вектора}
  readln( vector[ N ] );{читаем последний компонент вектора с переходом на новую строку}
end;

procedure PrintVector( var vector : TVector );
{процедура печати вектора}
var
  i : integer;{счетчик}
begin
  for i := 1 to N - 1 do{для каждого компонента вектора, кроме последнего}
    write( vector[ i ], ' ' );{печатаем очередной компонент вектора и разделитель - пробел}
  writeln( vector[ N ] );{печатаем последний компонент вектора с переходом на новую строку}
end;

function IsLinearIndependence( var vectorA, vectorB : TVector ) : boolean;
{функция проверки на линейную зависимость двух векторов}
{Система двух векторов линейно зависима тогда и только тогда, когда эти
векторы - коллинеарны }
var
  i : integer;{счетчик}
  scalarProduct, lengthA, lengthB : real;{scalarProduct - скалярное произведение векотров, lengthA, lengthB - длины векторов}
begin
  {инициализация}
  lengthA := 0.0;
  lengthB := 0.0;
  scalarProduct := 0.0;
  for i := 1 to N do{для каждого компонента}
  begin
    lengthA := lengthA + sqr( vectorA[ i ] );{суммируем квадраты компонентов вектора}
    lengthB := lengthB + sqr( vectorB[ i ] );{суммируем квадраты компонентов вектора}
    scalarProduct := scalarProduct + vectorA[ i ] * vectorB[ i ];{вычисляем скалярное произведение}
  end;
  if( ( lengthA < EPSILON ) or ( lengthB < EPSILON ) ) then
  {один из векторов - нулевой => линейная зависимость}
    IsLinearIndependence := true
  else{иначе}
  begin
    lengthA := sqrt( lengthA );{извлекаем корень, чтобы узнать длину вектора}
    lengthB := sqrt( lengthB );{извлекаем корень, чтобы узнать длину вектора}
    { |x||y|cos(alpha) = xy }
    { cos(alpha) = (xy) / ( |x||y| ) }
    { коллинеарность означает, что alpha = 0 => cos( alpha ) = 1 }
    { 1 = (xy) / ( |x||y| ) }
    { проверяем это }
    IsLinearIndependence := abs ( scalarProduct / ( lengthA * lengthB ) - 1 ) < EPSILON;
  end;
end;

var
  x, y : TVector;{вводимые вектора}
begin
  {ввод векторов}
  writeln( 'Пожалуйста введите вектор X с ', N, ' компонентами:' );
  InputVector( x );
  writeln( 'Пожалуйста введите вектор Y с ', N, ' компонентами:' );
  InputVector( y );

  {печать исходных данных}
  writeln;
  writeln( 'Исходные данные' );
  writeln( 'Вектор X:' );
  PrintVector( x );
  writeln( 'Вектор Y:' );
  PrintVector( y );

  {печать результата}
  writeln;
  writeln( 'Результат:' );
  write( 'Вектора - линейно ' );
  if IsLinearIndependence( x, y ) then
    writeln( 'зависимые' )
  else
    writeln( 'независимые' );
  readln;{ждем ввода}
end.

PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1119 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.