|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите плииз с программой для Turbo Pascal |
|
|
Разное - [решено] Помогите плииз с программой для Turbo Pascal
|
Новый участник Сообщения: 40 |
Помогите пожалуйста с программкой для вычисления бесконечной нормы вектора х размерностью n
|
|
Отправлено: 17:57, 19-09-2010 |
Misanthrope Сообщения: 474
|
Профиль | Отправить PM | Цитировать Цитата dasha131:
|
|
------- Отправлено: 18:37, 19-09-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать если я правильно понял, то норма вектора - это скаляр его длинны.
Вектор в данном случае - одномерный массив чисел. Надо накапливать норму вектора и пересчитывать ее при поступлении нового значения iой размерности. Т.е. сначала одномерное пространство - линия. Двухмерное - если без "заморочек", то декартова плоскость. Трехмерное - сводится к 2х мерному. Т.е. сначала считаем a+b, затем переходим в плоскость (a+b,c) Так и получается, что надо при каждом поступлении новой величины снижать размерность. Можно кстати в одно, двумерной плоскости находиться, не залезая в 3d. |
------- Отправлено: 20:54, 19-09-2010 | #3 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать ВОт формула, [[x]]8=max(i) [x(i)]
8-так обозначила бесконечность [[]]- норма []-модуль тоесть бесконечный предел=максимальному значению x(i) По теории все понятно, а вот с программой у меня напряг( |
Отправлено: 05:00, 20-09-2010 | #4 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Формула ИМХО не верна, но ладно.
По программе - делай цикл до некоторого условия. В цикле делай сравнение по максимальному отклонению от 0. Т.е. максимальный модуль числа. Нарисуй блок, а ее либо я, либо другой участник переведет тебе в программу. |
|
------- Отправлено: 09:01, 20-09-2010 | #5 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать а как задать это сравнение?
по логике можно с начало сложить первое с первым число, потом первое со вторым, потом первое с третьим, первое с четвертым (при N=4) и выбрать наибольшую сумму (складывать естественно по модулю) Второе слагаемое как раз и будет этим макс числом Но я не знаю как программу написать, да и выполняется ли условие задачи? "для вычисления беск.нормы вектора" и "для нахождения модуля макс. элемента вектора" суть одна и та же, но все таки мне кажется нужно задействовать в программе формулу. int main(void) { /* Initialized data */ static float b[4] = { 1.f,3.f,8.f,6.f }; /* Local variables */ extern float av01r_c(float *, int *); static int n; static float z__; n = 4; z__ = (float)av01r_c(b, &n); printf("\n %12.4e \n", z__); printf("\n %12.4e %12.4e %12.4e %12.4e \n", b[0], b[1], b[2], b[3]); return 0; } /* main */ результат z=8 Вот какая то программа для нахождения бесконечной нормы, только мне этот язык незнаком Цитата lxa85:
Хотя сомнения тоже были... |
|
Отправлено: 12:38, 20-09-2010 | #6 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать dasha131, приведенный пример конечно интересен, но не разу не понятен =(
Если брать воон ту формулу с модулем, которая вызывает подозрения, то задача сводится к нахождению максимального числа в потоке. Т.е. первое приравниваем к текущему максимуму, затем в цикле сравниваем текущий текущий максимум с текущим числом. Тут простой if в цикле, без особых заморочек. ---- НО! Лично я бы предложил отказаться от этой формулы, либо заставил студента доказать ее правильность. Я думаю скаляр длинны надо искать именно как скаляр длинны. Пока для простоты и наглядности рассмотрим декартову систему координат. Во что у нас разлагается вектор? Правильно, в более короткие вектора, коллинеарные (параллельные) осям координат. (взять тот же синус с косинусом в окружности единичного радиуса) Синус и косинус, при неком угле 0<n<90 явно меньше единицы(1) Вот теперь внимательно, попробую рассказать (нарисовать к сожалению сейчас не могу, чуть позже) Как нам просчитать сферу? Сфера это 3х мерная фигура. 4х мерные фигуры брать не буду, их рисовать сложно ![]() Значит вектор задан 3мя параметрами по осям координат. Поступает первая величина x. Скаляр длинны очевидно равен модулю x т.е. |x| Добавляем следующую координату - y. Уже плоскость и нам надо понизить кол-во степеней объекта. т.е. вернуться обратно к линиям. (мудренно по ходу сказал) Проще Есть плоскость, нам надо ее свести к линии. Поступила y. Что у нас получается? Получается прямоугольный треугольник, где по доказанному Пифагором l = sqrt (|x|^2 + |y|^2); Отлично. Поступает координата z, что мы имеем? Берем плоскость l(!) z на ней образуется прямоугольный треугольник, где катетами являются l, z. Раскрывать подстановку я не вижу смысла, вроде бы как все и так понятно. Т.е. сводить к одной, большой, большой формуле не надо. Надо считать скаляр длинны вектора по мере итерационно (по шагам) по мере поступления данных. Далее можно наращивать кол-во изменений размерности 4, 5, 6d и т.д. Все вектора имеют прямой угол друг с другом, просто это в единой картине сложно рисуется ![]() Решения задачи я вижу двумя способами: Либо нахождение максимальной величины в потоке Либо постепенное накопление нормы вектора (скаляра длинны) |
------- Отправлено: 01:44, 23-09-2010 | #7 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Нет, тут точно правильная формула, я проверила
А как это сравнение на языке пасхаль записать вы могли бы показать? |
Отправлено: 13:27, 23-09-2010 | #8 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать dasha131, Уточни пожалуйста, что вы понимаете под словом норма.
Просто сейчас спросил у к.ф.м.н, зав. каф. Талапов В. В.(замечательная вещь конференция, иногда сидишь рядом с такими людьми, с которыми в другом месте встретиться просто не реально, т.е. мне бы и в голову не пришло, с кем я сижу) и мне доходчиво объяснили, что под словом "норма вектора" может подразумеваться много всего интересного. Тем более, если мы начинаем говорить про норму бесконечного норму вектора. В принципе, в принципе, формула приведенная тобой так же имеет право на существование, но это несколько иное определение нормы вектора. Норм и определения нормы, как выяснилось, так же много. Т.е. можно назвать максимальное значение координаты n мерного пространства нормой вектора. Обрамление условия с тебя. Т.е. блок var, способ получения значений, способ их выдачи и т.д. Vector - одномерный массив данных. Также называемый вектором. Vector[i] - i'тый элемент вектора. Перебор задается в цикле (скорее всего в цикле for). Если задана бесконечность, т.е. массив не "переборный", то текущее вводимое значение. (цикл while) Max - текущее максимальное значение. Изначально приравнивается первому элементу массива, затем сравнивается с остальными. На всякий случай, формула к более "каноническому" определению вектора |
------- Отправлено: 14:20, 23-09-2010 | #9 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Кое что исправила, сейчас скину
программа работает и выдает модуль максимального элемента. program norma; var n:integer; max:real; i:integer; a: Array [1..10] of real; begin read (n); for i:=1 to n do begin read (a[i]); end; begin for i:=1 to n do begin if (ABS(a[i])>max) then max:=a[i]; end; write(max:4:2); end; end. a: Array [1..10] of real; незнала как обозначить в блоке описания переменных элемент "а", потом нашла в примерах такое её обозначение, звучит как "Переменная а - массив действительных чисел из 10 элементов" а что это означает? что бы поменялось если я поставила там другие значения? |
Отправлено: 15:16, 23-09-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) | Loading | Программирование и базы данных | 41 | 20-05-2015 15:28 | |
Прочие - Turbo Pascal 7 | Sniper | Программное обеспечение Windows | 30 | 01-12-2008 16:04 | |
Turbo Pascal, Помогите написать пару программ | kirillsp | Программирование и базы данных | 11 | 20-11-2006 23:34 | |
программка в среде turbo pascal | gh6 | Программирование и базы данных | 3 | 14-11-2006 12:16 | |
Borland Turbo Pascal 7.0 | Guest | Программирование и базы данных | 4 | 21-09-2004 18:44 |
|