2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Извлечение вычесленных значений для построения графика
Сообщение18.11.2017, 17:23 


27/03/16
53
Здравствуйте!
Посоветуйте пожалуйста, возник вопрос:
Необходимо решить систему алгебраических уравнений с коэффициентами зависящими от переменной х, которая задается с шагом, а затем вычесленные значения подставить в новую функцию содержащую туже переменную х. По полученным значениям строится график функции.
В программе Wolfram matem существует оператор ListPlot, который строит график функци по точкам ${x,y}$, но мне не удается задать цикл, который подставлял бы полученные значения координат в этот оператор (не хочется вручную вбивать большое количество пар чисел). Другие операторы типа Plot похоже не воспринимают функцию $V_8$, представляющую массив значений, как заданную аналитчески.
Остановился пока, только на этом
$U = Inverse[AI].BI$
$V_6 = Table[x, \{x, 2, 4, 1\}]$
$V_8 = Table[-x.Part[U, 1] + x.Part[U, 2], \{x, 2, 4, 1\}]$
$ListPlot[Do[Print[[V_6, V_8]], \{x, 2, 4, 1\}]]$
Пытался записать так
$ListPlot[\{Print[V_6, V_8]\}]$
Программа выдает значения, но график не строит.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение18.11.2017, 17:38 
Заслуженный участник


27/04/09
28128
Попробуйте ListPlot[ Transpose[{V6, V8}] ].

Кстати, лучше не оформлять код в виде формул, получается страшненько. :roll: Используйте [tt]...[/tt] для фрагментов или [code]...[/code] для больших кусков (лучшим вариантом был бы syntax, но он не поддерживает подсветку Wolfram).

Вообще, возможно, там у вас ещё можно поулучшать — например, пределы изменения икса выделить в отдельную переменную, или вместо отдельных V6 и V8 написать

V68 = Table[{x, -x U[[1]] + x U[[2]]}, {x, 2, 4, 1}],

хотя и там можно ещё пошуровать. Кроме того, матричную систему уравнений AI . U == BI чуть лучше решать специальной функцией LinearSolve: U = LinearSolve[AI, BI] (см. справку, почему).

-- Сб ноя 18, 2017 19:43:36 --

Ещё можно добавлять ; в конце операций, вывод от которых вам не нужен и загромождает место.

И комментарий по поводу Print: оно работает не так. Print[x] не возвращает значения (точнее, возвращает Null; все конструкции, не возвращающие значения в других языках, выдают Null, и если это единственный результат, идущий на вывод, он не печатается; конечная точка с запятой как раз тоже выдаёт именно его). Печать идёт, так сказать, в обход — это побочный эффект вычисления этого выражения, вполне аналогичный печати в консоль в традиционных языках.

-- Сб ноя 18, 2017 19:49:07 --

Ну и ещё: то, что вы пытались устроить, можно устроить с использованием конструкции ReapSow, но в данном случае она будет совершенно избыточна. (Тут и выше предполагается, что вы посмотрите документацию, которая практически всегда подробна. :-) (Например, что делает функция Transpose, чтобы разобрать, зачем я её написал.) Может смущать, что документация только на английском, но мир никогда и не прикидывался справедливым для всех сразу.)

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение18.11.2017, 17:59 


27/03/16
53
Спасибо Вам за рекомендации! Буду разбираться!

 Профиль  
                  
 
 Posted automatically
Сообщение18.11.2017, 18:06 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Околонаучный софт»
Причина переноса: тематика.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение18.11.2017, 18:45 


27/03/16
53
К сожалению ситуация не изменилась:
Команды$V_6_8 = Table[{x, -x U[[1]] + x U[[2]]}, {x, 2, 4, 1}]$ и
$Transpose[\{V_6, V_8\}]$ действительно вроде, как объединяют нужные мне значения (за эту рекомендацию отдельное Спасибо!!!), однако ListPlot по прежнему не видит эту пару чисел (нарисовала только координатные оси) есть подозрение, что проблемма с вычесленным значением функции - она ставит его в фигурные скобки, (образец же не предусматривает их наличия), причем x ставит как и положенно.
Использование команды $U = LinearSolve[AI, BI]$ на промежуточные результаты не повлияло - вродебы результаты остались теми же, (но спасибо за рекомендацию буду разбираться в чем ее целесоообразность).
А вот насчет Reap-Sow пока затрудняюсь.

-- 18.11.2017, 18:52 --

вот таковы ответы {{2, {-4.}}, {3, {-9.}}, {4, {-17.6}}} явно у ординаты y фигурные скобки лишние

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение18.11.2017, 20:13 
Заслуженный участник


27/04/09
28128
SPgum в сообщении #1266448 писал(а):
А вот насчет Reap-Sow пока затрудняюсь.
Это было просто на всякий случай, сейчас не беспокойтесь.

SPgum в сообщении #1266448 писал(а):
вот таковы ответы {{2, {-4.}}, {3, {-9.}}, {4, {-17.6}}} явно у ординаты y фигурные скобки лишние
Видимо, BI имеет вид {{b1}, {b2}, ..., {bn}}. Тогда надо сделать, чтобы оно имело вид {b1, b2, ..., bn}, поменяв определение, или использовать вместо BI выражение Transpose[BI][[1]].

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение18.11.2017, 20:34 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Есть ещё команда Flatten. Она позволяет убрать лишние фигурные скобки.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение18.11.2017, 23:13 


27/03/16
53
Ура!!!Огромное Спасибо!
Программа ожила! Действительно у меня в программе BI имеело вид {{b1}, {b2}, ..., {bn}}. Я ведь просто брал шаблонку Column vector из Basic Math Assisten (из справочника я понял, только что не стоит писать Matrixform если необходимо в дальнейшем пользоваться вычислениями) и ничего не подозревал про скобки. Пытался использовать Part, которая в промежуточных вычислениях с успехом заменяла команду %, пытался задействоватьTake . А все оказалось не то! Сейчас ввел вручную {b1, b2, ..., bn} и все заработало!!! Буду разбираться с командой Transpose[BI][[1]].
Отдельно благодарю за рекомендацию относительно команды Flatten. Тут мне надо разбираться отдельно (как бы не поудолять все скобки).
Еще раз Спасибо всем за помощь!!!

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение19.11.2017, 01:46 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
SPgum в сообщении #1266521 писал(а):
как бы не поудолять все скобки
В простейшем варианте команда Flatten[list] удаляет все фигурные скобки, кроме самых внешних. Но у неё есть какие-то более сложные варианты, которыми я никогда не пользовался. Смотрите описание команды.
Команды MatrixForm, TableForm предназначены для отображения результата в удобном виде, а не для вычислений.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение19.11.2017, 03:48 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли

(Звиняйте)

SPgum в сообщении #1266430 писал(а):
В программе Wolfram matem
А я бы за такое пренебрежение сразу ботинком.
А за пофигизм относительно записи кода, когда неоднократно дают советы и примеры, — ещё раз.
А за «Спасибо» с большой буквы — и в ухо, пожалуй, напоследок. А чтоб больше здесь не появлялся — в другое ухо.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение19.11.2017, 04:01 
Заслуженный участник


09/05/12
25179
 !  Aritaborian, пожалуйста, будьте поспокойнее.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение19.11.2017, 04:13 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Pphantom, ну я же воздерживался от нецензурщины, тем самым был поспокойнее ;-) Я выразил своё отношение (согласен: на самом деле быть поспокойнее значило бы вообще его не выражать, но не сделать это я, увы, не смог). Но если этот участник снова продолжит пинать правила и приличия во все стороны налево и направо всеми конечностями, коими он пинает клавиатуру, я, знаете ли, тоже оставляю за собою право вот на такое вот на это. Простите.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение19.11.2017, 12:19 


27/03/16
53
Еще раз спасибо!
Но если это не звучит слишком нахально с моей стороны, то не подскажите в чем может быть причина получения различных результатов?
На простом тестовом примере (решение системы двух алгебраических уравнений) при использовании Part[U,1] и Part[U,2] результаты полученных значений полностью совпадают с теми, которые получаются с использованием {C1,C2}=%. Если же выражения для коэффициентов уравнений представляют собой длинные выражения зависящие от Sin, Cos, Exp, то результаты вычисления рознятся от (0.128266 и 0.15401) до (0.059862 и 0.0774986).

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение19.11.2017, 14:28 
Заслуженный участник


09/05/12
25179
 !  SPgum, все-таки примите во внимание то, что написал Aritaborian несколько выше. Неправильное оформление участков кода (даже отдельных строк и термов) делает Ваши сообщения малочитаемыми. Последнее я поправил, но впредь следите за оформлением самостоятельно.

 Профиль  
                  
 
 Re: Извлечение вычесленных значений для построения графика
Сообщение20.11.2017, 21:08 
Заслуженный участник


27/04/09
28128
SPgum
Приведите, пожалуйста, текущий вид кода, а то не очень понятно, что где как.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group