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
17976
Москва
Есть ещё команда 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
17976
Москва
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, Супермодераторы



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

Сейчас этот форум просматривают: DariaRychenkova


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

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