2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 16:21 


17/04/06
256
Приветствую!

Мне необходимо написать множественную регрессию на C#. У меня в голове два варианта:
1) Написать все самому. Здесь потребуется линейная алгебра и я пока нахожусь в раздумьях как это обьектно-ориентированно организовать: какие классы определить, как использовать delegates and interfaces и так далее.

2) Взять готовый пакет по линейной алгебре написанный на C#. Например: http://numerics.mathdotnet.com/
Я правда не знаю как его интегрировать в мой код.

Ну и наверное самая большая проблема: у меня очень слабые навыки програмирования. По C# я только прочел Essential C# 4.0, несовсем внимательно.

Не дадите ли каких-либо общих рекомендаций, куда двигаться?

 Профиль  
                  
 
 Re: C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 17:18 


23/11/09
130
Надо двигаться в сторону компьютера, включить его и пробовать, только так можно научиться :wink:
Вы хотябы 1 программу уже написали? или это первая

Вы сперва решите что вам нужно 1 или 2

 Профиль  
                  
 
 Re: C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 17:27 


17/04/06
256
Я когда то слушал вводный курс по Java и что-то писал, потом писал на VBA, но немного.

Я думаю, что мне лучше написать библиотеку для линейной алгебры (чтобы ёе и в будущем использовать). Вот только все это получается не обьектно. Мне либо static метод нужен либо delegate. Куда лучше двинуться?

Наверное это должно работать следующим образом

mmult(A, B) - для умножения двух матриц.

 Профиль  
                  
 
 Re: C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 17:53 


23/11/09
130
Предпочтения по компилятору есть?
Советую SharpDevelop
http://www.icsharpcode.net/opensource/sd/
Мне очень нравится.

Цитата:
Я думаю, что мне лучше написать библиотеку для линейной алгебры (чтобы ёе и в будущем использовать). Вот только все это получается не обьектно. Мне либо static метод нужен либо delegate. Куда лучше двинуться?

Наверное это должно работать следующим образом

mmult(A, B) - для умножения двух матриц.

Я уже написал свою и двинулся уже, только в каком направлении непонятно :D
Универсально для всего можно написать только на С++ (ну или на чем то другом поддерживающим шаблоны) причем использовать можно только там же.
Я например захотел написать класс матрици чтобы он независил от типа int, float... и понял что на C# это невозможно.
Так что я лично пришел к выводу что я пишу для типов double все и вся, а если надо чтото другое то перевожу уже имеющийся код.

И еще! написания чего-то своего немаловажно для понимания сути, а вот если понимание уже есть но лень писать по 500 раз одно и тоже то я лично прибегаю к плагиату или использованию сторонних либ

 Профиль  
                  
 
 Re: C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 18:51 


17/04/06
256
Спасибо, у меня уже стоит Visual Studio.

Да, действительно, имеет смысл написать все самому. Наверное создам класс LinAlg и напишу массу статических методов.

Да, что передать double or decimal несразу ясно. Так же наверно придется писать два разных метода для умножения матриц и умножения вектора и матрицы.

Спасибо за ответы!

 Профиль  
                  
 
 Re: C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 19:04 


23/11/09
130
Цитата:
Да, действительно, имеет смысл написать все самому. Наверное создам класс LinAlg и напишу массу статических методов.

А вы посмотрите для начала например
http://www.mathdotnet.com
как в нем все устроено, посмотрите другие либы.

Я когда писал на С++ то все писал отдельными функциями, как вы предложили, а контейнеры данных определял как класс, типа:
CmMatrix4x4 - Class Math Matrix 4 x 4
math::mMat4x4Mul( LPCmMatrix4x4 lpMatSrcADst, LPCmMatrix4x4 lpMatSrcB )
Думаю тут интуитивно понятно из названий что к чему

А вот когда стал писать на С# даже не знаю, у меня часть запихана в класс, другая часть отдельными функциями.

Цитата:
Да, что передать double or decimal несразу ясно. Так же наверно придется писать два разных метода для умножения матриц и умножения вектора и матрицы.

Ну это не самое страшное.
Страшнее когда этот класс матрицы надо использовать уже в другой функции, подразумевающей независимость от типа. Тут наступает понимание что это невозможно.
Берем тип перекрывающий другие типы double и пишем все в нем.

 Профиль  
                  
 
 Re: C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 19:37 


17/04/06
256
logout2d в сообщении #465476 писал(а):
Цитата:
Да, действительно, имеет смысл написать все самому. Наверное создам класс LinAlg и напишу массу статических методов.

А вы посмотрите для начала например
http://www.mathdotnet.com
как в нем все устроено, посмотрите другие либы..


Да ссылка интересная. Я загрузил код, но прочесть его не просто. Не ясно с какого файла начинать.

 Профиль  
                  
 
 Re: C# и как все это интегрировать и во всем этом разобраться
Сообщение05.07.2011, 20:08 


23/11/09
130
Да там громоздко у них числа и всякая всячина определена, на это пока не обращайте внимания.
Я имел ввиду просто посмотреть какие классы созданы, как они подразделены.
(немного жалею что это посоветовал, потому что там действительно не все сразу очевидно)
Советую посмотреть:
http://www.gamedev.ru
и смежные темы, в игровых движках часто можно встретить реализации математических либ.
Может вот это вам поможет:
http://jenyay.net/Programming/Complex

-- Вт июл 05, 2011 20:14:31 --

AForge неплохая либа
http://www.aforgenet.com/

-- Вт июл 05, 2011 20:16:26 --

Я еще пользуюсь AlgLib, там все отдельными функциями, но они все как правило мудрено написаны, но зато гарантируют получения результата вычислений, если это возможно.
http://alglib.sources.ru/

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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



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

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


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

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