Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Создание одномерного массива типа double размерности N
|
|||
|---|---|---|---|
|
#18+
Ммм, да.Согласен. Завтра буду пробовать. Спасибо за разъяснения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 20:51 |
|
||
|
Создание одномерного массива типа double размерности N
|
|||
|---|---|---|---|
|
#18+
Тут подумал. Все-же что-то не то. Я передаю данные из C# в функцию, написанную на С++. Функция решает СЛАУ. Результат помещает в массив. Решение СЛАУ это отдельная сторонняя dll. Программа на С++ это обертка над ней. И выделение памяти под массив решений происходит именно в этой сторонней dll. Обертка имеет уже ссылку на массив решений. И понятно, что в программе на C# выделить память не получится. Отсюда выходит, что в программе на С++ нужно припиннеть массив решений. Уж не знаю как это делать. Или все-же в программе на C# как-то через fixed-unsave взять массив решений. Что скажет уважаемый мной Изопропил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 08:02 |
|
||
|
Создание одномерного массива типа double размерности N
|
|||
|---|---|---|---|
|
#18+
vlsafИ выделение памяти под массив решений происходит именно в этой сторонней dll. ну раз так, и копировать в c# массив нежелательно, лучше остановиться на unsafe коде с указателями P.S. возвращаемый IntPtr легко приводится к double* (double*)ptr.ToPointer() P.P.S. если пишется обёртка для библиотеки решения СЛАУ - покажи оригинальные сигнатуры(а лучше ссылку на описание библиотеки дай) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 08:17 |
|
||
|
Создание одномерного массива типа double размерности N
|
|||
|---|---|---|---|
|
#18+
Мы делаем LU факторизацию матрицы для дальнейшего решения СЛАУ. Для этого используем бесплатную разработку с открытым кодом. Вот ссылка на SuperLU Работаем с версией 4.3. Это первая строка на скачивание: Download software (V4.3) - Функции с которыми работаем: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Имея структуры L и U вытаскиваем матрицы L и U в координатном прадставлении: L, iL, jL - эти три массива имеют один размер sizeL U, iU, jU - эти три массива имеют другой размер sizeU Эти шесть матриц идут на выход, в C#. На на вход обертки на C++ идет матрица А тоже в координатном представлении A, iA, jA Координатное представление: A - массив ненулевых значений типа double iA - массив строк типа int jA - массив столбцов типа int Размер всех трех массивов sizeA Если еще осталось желание, то могу приложить сольюшен для Visual Studio, где мой коллега пытается написать на С++ код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 09:06 |
|
||
|
Создание одномерного массива типа double размерности N
|
|||
|---|---|---|---|
|
#18+
vlsaf, ничего страшного нет, можно обойтись даже без обёртки, хотя обёртку может оказаться проще сделать, чем P/Invoke напрямую в случае обёртки возвращать IntPtr, входные массивы - по ссылке если есть разумная оценка размеров L и U - можно свой буфер подать (п 1.4.4 документации) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 11:52 |
|
||
|
Создание одномерного массива типа double размерности N
|
|||
|---|---|---|---|
|
#18+
Разумной оценки размерности L и U нет. Может доходить до 10 000 000. Но заранее выделять такого размера буфер нет смысла, т.к. практически 99% расчетов будут идти с размерами гораздо меньшими. Изопропил, можешь показать чем как инициализировать IntPtr в C# программе. И как без Marshal.Copy поиметь нужный массив на выходе, преобразовав intPtr, как ты писал к double* (double*)ptr.ToPointer() . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 12:57 |
|
||
|
Создание одномерного массива типа double размерности N
|
|||
|---|---|---|---|
|
#18+
vlsaf, Код: plaintext 1. 2. 3. 4. 5. 6. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. unsafe c# - давай в профильный форум ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38621041&tid=2019515]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 174ms |

| 0 / 0 |
