С Новым годом! Форум программистов, компьютерный форум, киберфорум
Wolfram Mathematica
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 7
1

Как объединить таблицы

17.05.2018, 18:49. Показов 4501. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, господа.

Столкнулся с небольшой проблемой: попытка объединения таблиц привела к "некрасивому" результату - пришлось вручную обходными путями создавать новый пустой массив, который поэлементно затем заполнялся. Нельзя ли как-то эффективнее сделать данный процесс?

u[1..5][t] - численные решения имеющегося ОДУ 1 порядка, при этом значения функции f1[t] (других, соответственно, тоже) выводятся Математикой в фигурных скобках, а не просто числом. В результате весь массив B тоже состоит из кучи скобок, а ведь другой программе (тому же языку C++/фортран) надо будет прочитать этот файл. Можно как-то упростить жизнь?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
s = NDSolve[{eqs, u0}, fs, xs]
f1[t_] = u[1][t] /. s;
f2[t_] = u[2][t] /. s;
f3[t_] = u[3][t] /. s;
f4[t_] = u[4][t] /. s;
f5[t_] = u[5][t] /. s;
 
file = File[CreateFile[]]
B = RandomInteger[{0, 0}, {n, n}];
For[i = 1, i < n + 1, i++,
 B[[i, 1]] = f1[i];
 B[[i, 2]] = f2[i];
 B[[i, 3]] = f3[i];
 B[[i, 4]] = f4[i];
 B[[i, 5]] = f5[i];]
B // MatrixForm
 
Write[file, B];
Close[file];
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2018, 18:49
Ответы с готовыми решениями:

Как Правильно объединить таблицы
Как Правильно объединить таблицы, чтоб сбор информации брался с обеих формул =ГПР(B2;Таблица12;2)...

Как объединить таблицы в Word
Как объединить таблица ворд?

Как объединить три таблицы?
имеется три таблицы 1: Описание обуви...

Как объединить 3 таблицы по дате?
есть 3 таблицы в которых выполняю запрос SELECT CONVERT(CHAR(10),date1,104), count(date1) AS...

4
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,163
Записей в блоге: 24
17.05.2018, 21:09 2
Лучший ответ Сообщение было отмечено Jennan как решение

Решение

Цитата Сообщение от Jennan Посмотреть сообщение
при этом значения функции f1[t] (других, соответственно, тоже) выводятся Математикой в фигурных скобках, а не просто числом
Это из-за того, что NDSolve, как и другие подобные ей функции-решатели, возвращают список решений, каждое из которых для многомерных задач являются списком компонент типа Rule.
Поэтому expr /. NDSolve[...] будет возвращать список.
Если заранее известно, что решение единственно (т-ма Коши), имеет смысл сразу писать NDSolve[...][[1]], тогда "лишних" скобок не будет.

Цитата Сообщение от Jennan Посмотреть сообщение
В результате весь массив B тоже состоит из кучи скобок [...] Можно как-то упростить жизнь?
Если вдруг всё же мы получили список A списков чего-то (напр., ещё списков), можно "снять" один уровень скобок несколькими способами, которые могут давать различный эффект при нарушении вышеупомянутого предположения о единственности.
1. B = A[[1, All]]. Убираем скобочки с верхнего уровня, оставляя только первый элемент.
2. B = A[[All, 1]]. Убираем скобочки со второго уровня, оставляя только первый элемент.
3. B = Join @@ A. Убираем скобки с верхнего уровня, объединяя (конкатенируя).
4. B = Join @@@ A. Убираем скобки со второго уровня, объединяя (конкатенируя) на втором уровне.

Короче, поиграйтесь.
Lisp
1
2
3
4
5
6
7
A = RandomInteger[{0, 10}, {2, 3, 1}];
A // MatrixForm
A[[1]] // MatrixForm
A[[All, 1]] // MatrixForm
A[[All, All, 1]] // MatrixForm
Join @@ A // MatrixForm
Join @@@ A // MatrixForm
0
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 7
17.05.2018, 22:12  [ТС] 3
Да, решение моего уравнения единственно. Просто количество u[1,....] зависит от количества точек разбиения промежутка.
Оба варианта действительно успешно справляются с моими кривыми руками, спасибо!
P.S. Случайно нет волшебной функции, выводящей матрицу в файл в первозданном виде, а не на языке Математики со скобками? Как вариант можно и построчно, но в таком случае придется помучиться со считыванием
Было несколько вариантов:
C++
1
2
3
For[i = 1, i < n + 1, i++, 
 For[j = 1, j < n + 1, j++
   Write[file, B[[1,j]] ] ] ]
C++
1
For[i = 1, i < n + 1, i++, Write[file, B[[i,j]] ] ]
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,163
Записей в блоге: 24
17.05.2018, 23:17 4
Цитата Сообщение от Jennan Посмотреть сообщение
Случайно нет волшебной функции, выводящей матрицу в файл в первозданном виде, а не на языке Математики со скобками?
Для WM первозданный (каноничный) вид со скобками. Остальное уже альтернативные форматы.
Обычно для перевода в другой формат используется Export/Import.
См. ref/Export, там вторым-третьим аргументом нужно будет передать "Table" (в кавычках). Также поищи "Table" (с кавычками) в документации, как формат.
1
0 / 0 / 0
Регистрация: 02.10.2017
Сообщений: 7
18.05.2018, 01:30  [ТС] 5
Большое спасибо за пояснения!
0
18.05.2018, 01:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2018, 01:30
Помогаю со студенческими работами здесь

Как объединить (суммировать) 2 таблицы?
есть 2 таблицы и мне нужно в третей их суму. файл прикреплю.

Как объединить хитрые таблицы
Добрый день. Никак не получается решить следующую задачу. Помогите, пожалуйста. Дано 2 таблицы....

как объединить две таблицы?
У меня есть две таблицы, они состоят из одинаковых полей, за исключением одного (поле id из разных...

Как объединить две таблицы в одну ?
Ребята как объединить две таблицы в одну или больше. Есть две таблицы dolzhnosti и sotrydnic их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru