Metody numeryczne

0

Witam. Mam w tym roku taki przedmiot jak wstęp do metod numerycznych i muszę na nim pisać programy jak nazwa wskazuje ściśle związane z liczbami, matematyką, macierzami. Zastanawiam się jaki język wybrać do tych programów. Mówi się o C++ z jakąś biblioteką, a ja gdzieś jeszcze słyszałem, że dobry do tego może być jezyk F# z platformy .NET. Co sądzicie?

0

Jak jesteś masochistą i chcesz się narobić po pachy to wybierz C/C++.
Jeżeli nie to wybierz Matlaba (lub darmową wersję - Octave).

0

Są języki gorsze do nauki metod numerycznych, niż C++, ale nie ma ich tak wiele. Fortran jest np. o wiele lepszy. Ja bym użyć radził Pythona, moje subiektywne odczucia są takie, że bardziej skomplikowane algorytmy szybciej mi się piszę na początku w Pythonie, a potem jak już dobrze działa ewentualnie przepisać do C++. Dodatkowo, jak robisz bardziej zaawansowane rzeczy to bardzo pomocna i dobrze wykonana jest biblioteka NumPy, która min. pozwala na pisanie kodu wektorowo w prosty sposób.

Innym pomysłem może być wykorzystanie Matlaba/Octave'a, piszesz wtedy w języku bardziej wyspecjalizowanym do obliczeń numerycznych, także z dużą ilością pomocnych funkcji i porządną obsługą macierzy (więcej niż w NumPy). Dodatkowo w obydwu przypadkach możesz w prosty sposób wizualizować dane (Python - Matplotlib), ogólnie jestem pewien, że używając tych języków nauczysz się metod numerycznych szybciej.

Podejrzewam, że na zajęciach będziesz właśnie używał Matlaba, który moim zdaniem jest do samych obliczeń najszybszy w pisaniu programów, choć wolę Pythona jak trzeba zrobić coś jeszcze poza czystymi obliczeniami.

0

Tyle, że jeśli na zajęciach sam będzie musiał implementować algorytmy, to Matlab mu się do niczego nie zda.
Prowadzący nie ma żadnych wymagań, co do języków?

0

Nie ma, byle było to legalne. Posiedziałem chwile nad Math.NET w Visual Studio i wydaje się ciekawą sprawą, potrzebuje tylko troche tutoriali o rozkładach macierzy na początek

0
somekind napisał(a)

Tyle, że jeśli na zajęciach sam będzie musiał implementować algorytmy, to Matlab mu się do niczego nie zda.
Prowadzący nie ma żadnych wymagań, co do języków?

Jak się nie zda? Jak masz algorytmy numeryczne wymagające np. odwrócenia macierzy (przykładowo interpolacja) to nie musi tego klepać od zera, wystarczy że użyje jednego operatora w matlabie.

0

Ja na metodach numerycznych pisalem w C#, wykresy rysowalem korzystajac z ZedGrapha. Mysle, ze to dobre polaczenie, w ZedGraphie zrobienie wykresu, ktory mozna przyblizyc/oddalic, przesuwac itp to kilka-kilkanascie linijek, dzieki temu mozna sie skupic na metodach numerycznych, a nie na pitoleniu sie z okienkami, wykresami itp. Oczywiscie mozna tez poustawiac inne [CIACH!] typu jaka linia ma byc rysowana wykres(ciagla/przerywana/kwadrat/serduszka/wtf ;p), jak maja wygladac osie wspolrzednych itp. W sumie to grupa w ktorej bylem byla chyba jedyna korzystajaca z C#- wiekszosc osob pisala w c++ i meczyli sie znacznie wiecej od nas i pod wzgledem graficznym wychodzili na tym gorzej ;) Ogolnie - jezeli nie chcesz sie dlugo bawic w rysowanie wykresow, tworzenie okienek itp to wybierz C# i ZedGrapha.

0

Nam prowadzący na metodach numerycznych polecał Matlaba. Niestety, nie ma go na msdnaa, więc sugerował on by wykonywać zadania na zajęciach, lub z wykorzystaniem darmowego Octave, lub on nic nie wie i go nie obchodzi. A muszę powiedzieć, że Matlab jest bardzo przyjemnym środowiskiem do obliczeń matematycznych, na tamtym semestrze, jako że i tak dużo mieliśmy w nim projektów, zdarzało mi się go wykorzystywać zamiast systemowego kalkulatora (pewna kolejność działań, sin(), cos() itp. dostępne pod ręką... i wiele innych plusów).
W szczególności na tym przedmiocie przydatne: wykresiki rysują się same, działania na macierzach są banalne.

0

Skąd pomysł, że Matlab służy do implementowania metod numerycznych? Tam już wszystko jest, po to, żeby tego używać a nie implementować na nowo. W Matlabie/Octave/Scilabie to żadne wyzwanie i prowadzący zajęcia, który się na to zgodzi musi być, no cóż... dziwny.

Na tym przedmiocie chyba chodzi o to, że masz to zrobić samemu? Przynajmniej ja tak miałem.

Niestety, nie ma go na msdnaa

Skąd miałby tam być, przecież to nie jest produkt Ms. :-|

0

Skąd pomysł, że Matlab służy do implementowania metod numerycznych? Tam już wszystko jest, po to, żeby tego używać a nie implementować na nowo. W Matlabie/Octave/Scilabie to żadne wyzwanie i prowadzący zajęcia, który się na to zgodzi musi być, no cóż... dziwny.

Myślałam, że chodzi o to, żeby metody numeryczne zrozumieć. W matlabie operacje matematyczne są bajecznie proste do wykonania... i o to chodzi. Nie każdy przedmiot musi być "wyzwaniem", niektóre mogą być proste i przyjemne. Metody numeryczne są proste i przyjemne i tylko porypany wykładowca będzie je za wszelką cenę utrudniał.
Implementacja odwracania macierzy w prologu jest wyzwaniem z pewnością, nie znaczy to, że będzie to dobre narzędzie do tego celu.

Skąd miałby tam być, przecież to nie jest produkt Ms. :-|

Skrót myślowy, a chodziło o: "nie jest dostępny za darmo dla studentów".

0
Endrju napisał(a)

Skąd pomysł, że Matlab służy do implementowania metod numerycznych? Tam już wszystko jest, po to, żeby tego używać a nie implementować na nowo. W Matlabie/Octave/Scilabie to żadne wyzwanie i prowadzący zajęcia, który się na to zgodzi musi być, no cóż... dziwny.

Nie myślisz w ogóle. W metodach numerycznych nie chodzi o to żeby implementować od nowa koło, chodzi o to żeby za pomocą tych już zaimplementowanych kół (wszelkie operacje na macierzach itp) zapisywać istniejące już algorytmy i je rozumieć.

0

Zrozumieć metodę numeryczna to jedno, ale zaimplementować ją to drugie. Moim zdaniem implementacja ich w Matlabie jest po prostu zbyt prosta i niczego nie nauczy, jeżeli chodzi o programowanie.

Chyba, że to studia matematyczne, gdzie nie chodzi o programowanie. Ale to forum "programistyczne". :-P

0

Moim zdaniem implementacja ich w Matlabie jest po prostu zbyt prosta i niczego nie nauczy, jeżeli chodzi o programowanie.

Dlatego właśnie przedmiot nazywa się "Metody Numeryczne" a nie "Zaawansowane Programowanie".

Ręce opadają, ile można powtarzać, że studia informatyczne nie są po to, by uczyć ludzi programowania :/
Ciekawe w czym u ciebie na uczelni pisze się na Sieci Komputerowe? A na Mediach Komunikacyjnych? A w czym piszecie Podstawy Elektroniki i Fizykę? :/

0

Nie wiem, nie studiuje informatyki. Ja MN miałem tylko po to, żeby nauczyć się i metod, i programowania.

W porządku, skoro celem nie jest nauka programowania przy okazji, to niech będzie Matlab.

PS.
A jak ktoś z Krakowa, to 16 listopada będzie Matlab Tour. ;-)

0
0x200x20 napisał(a)
somekind napisał(a)

Tyle, że jeśli na zajęciach sam będzie musiał implementować algorytmy, to Matlab mu się do niczego nie zda.
Prowadzący nie ma żadnych wymagań, co do języków?

Jak się nie zda? Jak masz algorytmy numeryczne wymagające np. odwrócenia macierzy (przykładowo interpolacja) to nie musi tego klepać od zera, wystarczy że użyje jednego operatora w matlabie.

No właśnie - ma gotowe, więc nie nauczy się jak to działa i jak się implementuje. A o to chyba chodzi na tym przedmiocie, nieprawdaż?

aurel napisał(a)

Dlatego właśnie przedmiot nazywa się "Metody Numeryczne" a nie "Zaawansowane Programowanie".

A co zaawansowanego jest w metodach numerycznych? Arytmetyka zmiennoprzecinkowa czy pętla for?

Ręce opadają, ile można powtarzać, że studia informatyczne nie są po to, by uczyć ludzi programowania :/

No nie, są po to, żeby "wykształcić" ludzi nie znających podstaw informatyki. ;]

Ciekawe w czym u ciebie na uczelni pisze się na Sieci Komputerowe? A na Mediach Komunikacyjnych? A w czym piszecie Podstawy Elektroniki i Fizykę? :/

WTF?

0

U nas zarówno metody numeryczne, jak i algebra numeryczna, były pisane w Matlabie. I nie widzę tutaj problemu: to jest również język programowania. Przedmiot powinien skupiać się na implementacji zaawansowanych algorytmów, a nie odkrywaniu koła na nowo poprzez ręczne implementowanie dodawania i mnożenia macierzy i wektorów.

I jeżeli ktoś zaraz wyskoczy z BLAS-em i LAPACK-iem: czym by to się tak naprawdę różniło od Matlaba? Tu chodzi o prostotę wykonywania podstawowych operacji, właśnie w celu lepszego zrozumienia tematu. Sprawdźcie to: http://www.im.pwr.wroc.pl/~zietak/dydaktyka/algebra_numer/laboratorium/ -- i powodzenia z tym w C++.

0
rincewind napisał(a)

Sprawdźcie to: http://www.im.pwr.wroc.pl/~zietak/dydaktyka/algebra_numer/laboratorium/ -- i powodzenia z tym w C++.

Co tam jest takiego, co ma sprawiać problem w C++?

1 użytkowników online, w tym zalogowanych: 0, gości: 1