|
Konstruktor budowlany Forum projektantów
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Wto 22:42, 26 Wrz 2017 Temat postu: Python dla inżynierów |
|
|
Witam. Chciałem zachęcić Kolegów i Koleżanki do nauki programowania w Pythonie
Przygotowuję cykl postów Python dla inżynierów na blogu [link widoczny dla zalogowanych] , gdzie będę krok po kroku pokazywać jak programować w Pythonie i jak wykorzystać go w projektowaniu konstrukcji.
Python to bardzo popularny, łatwy i wydajny język programowania, który pozwala szybko tworzyć kod i wykonywać obliczenia. Sam używam go na co dzień od kilku lat. Świetnie się sprawdza w sytuacjach nietypowych, kiedy mam policzyć coś, czego nie da się załatwić komercyjnymi softami.
Dziś pokażę Wam jak się zabrać za programowanie w Pythonie i jak wykonać pierwsze działania na liczbach. Zapraszam!
LEKCJA 1 ➡️ [link widoczny dla zalogowanych]
Post został pochwalony 0 razy
Ostatnio zmieniony przez vz dnia Pią 12:10, 27 Paź 2017, w całości zmieniany 3 razy
|
|
Powrót do góry |
|
|
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Pon 12:35, 16 Paź 2017 Temat postu: |
|
|
Twój przykład z bloga byłby bardziej inżynierski i zachęcający gdybyś obliczenia wykonał w jednostkach SI
Przykładowo używając paczki Unum
Kod: |
import unum.units as u
# Dane
fck = 30E6*u.Pa
# Obliczenia wg EC2
fcm = fck + 8E6*u.Pa # Średnia wytrzymałość betonu na ściskanie
Ecm = 22 * (0.1 * fcm / (1E6*u.Pa))**0.3 * 1E6*u.Pa # Sieczny moduł sprężystości betonu
# Wynik
print (Ecm)
|
lub definiując dodatkowo MPa którego domyślnie brak w Unum
Kod: |
import unum.units as u
from unum import Unum as _Unum
u.MPa = _Unum.unit('MPa', 1E6 * u.Pa) # [MPa] unit definition
# Dane
fck = 30*u.MPa
# Obliczenia wg EC2
fcm = fck + 8*u.MPa # Średnia wytrzymałość betonu na ściskanie
Ecm = 22 * (0.1 * fcm / u.MPa)**0.3 * u.MPa # Sieczny moduł sprężystości betonu
# Wynik
print (Ecm)
|
Dokumentacja Unum
[link widoczny dla zalogowanych]
[link widoczny dla zalogowanych]
instalacja
Komplet potrzebnych jednostek najlepiej zdefiniować sobie w oddzielnym module
[link widoczny dla zalogowanych]
i używać przez importowanie
[link widoczny dla zalogowanych]
Piszę to gdyż widzę, że w kursie przechodzisz do stringów i ktoś może pomyśleć, że to tak bezwymiarowo będzie wyglądać to inżynierskie obliczanie w Pythonie.
Post został pochwalony 0 razy
Ostatnio zmieniony przez lukaszlab dnia Pon 12:36, 16 Paź 2017, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
adam_47
Doświadczony Forumowicz
Dołączył: 05 Cze 2010
Posty: 1014
Przeczytał: 6 tematów
Pomógł: 23 razy Ostrzeżeń: 0/5
|
Wysłany: Pon 22:56, 16 Paź 2017 Temat postu: |
|
|
Proponuję poświęcić trochę więcej tekstu na sposoby zainstalowania samego środowiska programistycznego i możliwości uruchamiania kodu. I to tak "krok po kroku".
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Wto 12:22, 17 Paź 2017 Temat postu: |
|
|
@lukaszlab dzięki za uwagi!
Jak pewnie czytałeś w opisie przykładu jest to pierwszy wprowadzający przykład, który ma odpowiadać temu, co pokazałem w lekcji. Siłą rzeczy, żeby przykład był czytelny, musi być prosty dla poznających Pythona.
Paczkę Unum mogę oczywiście wrzucić i wiele innych też, ale nie o to tutaj chodzi. Pisałem w poście, że o dodatkowych modułach, funkcjach etc. będę pisać w następnych lekcjach. Racja, powinienem to może wyraźniej zaznaczyć w przykładzie (info, że pracę na jednostkach pokażę później).
Jeśli chodzi o pracę na jednostkach SI, to mam też inne podjeście - w mojej ocenie bardziej efektywne i prostsze (specyfika obliczeń statycznych w bud.), ale o tym później
Co do pracy na osobnych modułach (jednostki tam, obliczenia tu itp.) to się z Tobą zgadzam w 100%. Jest to chyba najlepsze podejście, żeby ogarnąć kod. Też będę to pokazywać w następnych wpisach.
---
@adam_47 Dzięki za feedback!
Widziałeś instrukcje instalacji Pythona i edytora kodu (Sublime) na początku wpisu (akapit "Uruchamianie i obsługa Pythona")? Za mało dokładne PDFy? Myślałem, że pokazałem krok po kroku co i jak.
Post został pochwalony 0 razy
Ostatnio zmieniony przez vz dnia Wto 12:29, 17 Paź 2017, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
adam_47
Doświadczony Forumowicz
Dołączył: 05 Cze 2010
Posty: 1014
Przeczytał: 6 tematów
Pomógł: 23 razy Ostrzeżeń: 0/5
|
Wysłany: Wto 18:11, 17 Paź 2017 Temat postu: |
|
|
Przepraszam, nie zauważyłem. Masz rację - wystarczająco dokładnie.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Pon 8:25, 23 Paź 2017 Temat postu: |
|
|
Zapraszam do drugiej lekcji "Python dla inżynierów". W tej lekcji nauczysz się jak tworzyć w Pythonie napisy i operować na nich.
Aby wykorzystać w projekcie stworzone przez Ciebie algorytmy obliczeniowe w Pythonie, potrzebujesz odpowiednio sformatowanego tekstu, który będziesz mógł dowolnie zmieniać i następnie wklejać tam gdzie chcesz. Nauczę Cię jak radzić sobie z napisami w Pythonie, ponieważ jest to bardzo przydatne! Nauczę Cię też jak tworzyć własne raporty obliczeniowe do wykorzystania bezpośrednio w Twoich obliczeniach statycznych.
Zapraszam! LEKCJA 2 ➡ [link widoczny dla zalogowanych]
Post został pochwalony 0 razy
Ostatnio zmieniony przez vz dnia Pią 12:10, 27 Paź 2017, w całości zmieniany 2 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Pon 11:07, 23 Paź 2017 Temat postu: |
|
|
@vz
Napisałeś w kursie - 'Metoda jest prosta i pozwala na radzenie sobie z problemami, których nie możesz ogarnąć typowym oprogramowaniem'. Niestety nie wygląda to tak kolorowo i tu pomimo wszystkich zalet tego języka, zaczyna się problem z praktycznym użyciem Pythona przez przeciętnego inżyniera nie będącego zaciętym programistą (dotyczy to też innych języków). Do tworzenia tego raportu użyłeś dość siermiężnej metody przez co nie jest ona prosta i efektywna - np. brak wzorów z których pochodzą wyniki (nie chodzi mi o ich przekopiowanie do print). Normalnie inżynierowie zwykli 'ogarniać' takie obliczenia używając np. Excel czy darmowego Smath i przedstawione podejście raczej nie jest realną alternatywą.
W związku z tym, iż w twoim kursie przyjdzie nam poczekać chwilę zanim przedstawisz bardziej praktyczne know how, wspomnę czytającym ten wątek o takich narzędziach do generowania dynamicznych raportów jak Jupyter, SageMath czy SeePy. W szczególności polecam wypróbować narzędzie SeePy mojego autorstwa które znakomicie rozwiązuje powyższy problem.
[link widoczny dla zalogowanych]
Post został pochwalony 0 razy
Ostatnio zmieniony przez lukaszlab dnia Pon 11:47, 23 Paź 2017, w całości zmieniany 3 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Pon 20:54, 23 Paź 2017 Temat postu: |
|
|
@lukaszlab dziękuję za krytyczne uwagi! Widzę, że czekasz niecierpliwie na dalsze lekcje
Lekcje te są przeznaczone dla określonej grupy odbiorców (patrz lekcja 1 - wprowadzenie), więc materiał podaję tak, żeby był dla nich jak najbardziej przystępny.
W ogóle, to ciekawy dylemat w tworzeniu kursów - są tacy, którzy chcą sobie powtórzyć materiał i chcieliby od razu wszystkie kwiatki Pythona zobaczyć, ale są i tacy, którzy jednak potrzebują zobaczyć metodą krok po kroku jak pracować z Pythonem. Wszystkim nie dogodzę Cieszę się jednak z pozytywnego feedbacku również od osób dla których robię ten kurs.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
ZbyszekM
Doświadczony Forumowicz
Dołączył: 11 Sie 2011
Posty: 78
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5 Skąd: Maków Mazowiecki
|
Wysłany: Sob 17:51, 28 Paź 2017 Temat postu: |
|
|
... są też tacy którzy szukali szkoleń lub korepetycji z LISP-a i nie znaleźli.
Patrz ja
Twój kurs będę obserwował i mam nadzieję się czegoś nauczyć
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Sob 20:51, 28 Paź 2017 Temat postu: |
|
|
ZbyszekM napisał: | ... są też tacy którzy szukali szkoleń lub korepetycji z LISP-a i nie znaleźli.
Patrz ja
Twój kurs będę obserwował i mam nadzieję się czegoś nauczyć |
Dzięki wielkie ZbyszekM! To mnie dodatkowo motywuje do pracy
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Nie 0:16, 29 Paź 2017 Temat postu: |
|
|
Wracając jeszcze do sposobu tworzenia tego raportu. Poniżej alternatywne zgrabniejsze i bardziej czytelne rozwiązanie z wykorzystaniem vars() do formatowania wielowierszowego stringu.
Kod: |
# -----------------------------------------------------------
# DANE
# -----------------------------------------------------------
b = 0.2 # Szerokość przekroju w [m]
h = 0.6 # Wysokość przekroju w [m]
N = 100 # Siła podłużna w [kN], (+) rozciąganie / (-) ściskanie
My = 25 # Moment zginający w [kNm], (+) rozciąganie włókien dolnych / (-) rozciąganie włókien górnych
# -----------------------------------------------------------
# OBLICZENIA
# -----------------------------------------------------------
A = b*h # Pole powierzchni
Iy = b * h**3 / 12 # Moment bezwładności
z = h/2 # Współrzędna względem środka ciężkości
Wy = Iy / z # Wskaźnik wytrzymałości
sigY_gora = (N/A) - (My*z/Iy)
sigY_dol = (N/A) + (My*z/Iy)
sigY_srodek = (N/A)
#------------------TWORZENIE RAPORTU------------
raport = '''
------------------------------------------------
Dane:
------------------------------------------------
Wymiary przekrou b = %(b).2f m, h = %(h).2f m
Obciązęnia - N = = %(N).2f kN, My =%(My).2f kNm
------------------------------------------------
Otrzymane wyniki:
------------------------------------------------
Napreżenie:
dolne %(sigY_dol).2f
górne %(sigY_gora).2f
środkowe %(sigY_srodek).2f
itd....
---------------KONIEC---------------------------
'''%vars()
print (raport)
|
co daje na wyjściu
Kod: |
------------------------------------------------
Dane:
------------------------------------------------
Wymiary przekrou b = 0.20 m, h = 0.60 m
Obciązęnia - N = = 100.00 kN, My =25.00 kNm
------------------------------------------------
Otrzymane wyniki:
------------------------------------------------
Napreżenie:
dolne 2916.67
górne -1250.00
środkowe 833.33
itd....
---------------KONIEC---------------------------
|
Czyli zamiast fundować inżynierowi ten horror:
Kod: |
line = 60
sep = '-'
print(line*sep)
print('DANE')
print(line*sep)
print(' Przekrój prostokątny: %s = %.2f m/%.2f m' % ('b/h'.rjust(7), b, h))
print(' Wskaźnik wytrzymałości: %s = %.3E m3' % ('Wy'.rjust(5), Wy))
print('')
print(line*sep)
print('WYNIKI OBLICZEŃ')
print(line*sep)
print(' Naprężenia normalne: %s = %+.2f MPa %s' % ('sig.g'.rjust(8), sigY_gora / 1000, '(włókna górne)'.rjust(15)))
print('%s = %+.2f MPa %s' % ('sig.0'.rjust(31), sigY_srodek / 1000, '(oś obojętna)'.rjust(15)))
print('%s = %+.2f MPa %s' % ('sig.d'.rjust(31), sigY_dol / 1000, '(włókna dolne)'.rjust(15)))
|
mamy nieco już intuicyjne:
Kod: |
raport = '''
------------------------------------------------
Dane:
------------------------------------------------
Wymiary przekrou b = %(b).2f m, h = %(h).2f m
Obciązęnia - N = = %(N).2f kN, My =%(My).2f kNm
------------------------------------------------
Otrzymane wyniki:
------------------------------------------------
Napreżenie:
dolne %(sigY_dol).2f
górne %(sigY_gora).2f
środkowe %(sigY_srodek).2f
itd....
---------------KONIEC---------------------------
'''%vars()
print (raport)
|
Post został pochwalony 0 razy
Ostatnio zmieniony przez lukaszlab dnia Nie 0:52, 29 Paź 2017, w całości zmieniany 6 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Wto 21:25, 13 Mar 2018 Temat postu: |
|
|
Dobry wieczór,
zapraszam Was po dłuższej pauzie na kolejną lekcję "Python dla inżynierów". W lekcji trzeciej omawiam tzw. LISTY.
Listy w Pythonie, przez niektórych nazywane tablicami, pozwalają na zorganizowanie i przez to znaczne przyśpieszenie obliczeń. Dzięki listom można efektywnie wykonywać 'masowe' obliczenia, czyli za jednym zamachem będziesz w stanie przeprowadzić wiele obliczeń na raz. Przykład: zwymiarowanie 100 belek w jednym algorytmie. Zastosowanie list pozwala też na automatyzację obliczeń – większość programów w budownictwie i nie tylko bazuje na tego typu elementach. Zastosowań jest wiele, najlepiej samu sprawdzić z czym się to je
Lekcja dostępna pod linkiem: ↪ [link widoczny dla zalogowanych]
Post został pochwalony 0 razy
Ostatnio zmieniony przez vz dnia Wto 21:53, 13 Mar 2018, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
lukaszlab
Doświadczony Forumowicz
Dołączył: 15 Maj 2006
Posty: 231
Przeczytał: 0 tematów
Pomógł: 9 razy Ostrzeżeń: 0/5 Skąd: Kraków
|
Wysłany: Śro 11:51, 14 Mar 2018 Temat postu: |
|
|
Szkoda, że nie wspomniałeś o numpy i np funkcji vectorize - co pozwala uniknąć tworzenia tych pętli w obliczeniach na listach.
[link widoczny dla zalogowanych]
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Śro 18:25, 14 Mar 2018 Temat postu: |
|
|
Będzie i o tym, ale przy temacie „import” i bibliotek Dzięki!
Post został pochwalony 0 razy
Ostatnio zmieniony przez vz dnia Śro 18:26, 14 Mar 2018, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vz
Doświadczony Forumowicz
Dołączył: 20 Lip 2009
Posty: 231
Przeczytał: 0 tematów
Pomógł: 13 razy Ostrzeżeń: 0/5
|
Wysłany: Czw 20:28, 03 Maj 2018 Temat postu: |
|
|
Nadaję ważny komunikat❗ PYHON DLA INŻYNIERÓW odcinek #4 jest już dostępny ❗
Tym razem w #PDI będzie o mało znanym i niedocenianym typie danych jakim jest KROTKA (ang. Tuples). Często, z racji podobieństw, krotki mylone są z listami. Są to jednak zupełnie inne typy danych. Krotki oprócz tego, że są szybsze niż listy, to dodatkowo są niemodyfikowalne... 😲
↪ [link widoczny dla zalogowanych]
KROTKI są specyficzne i przez to też niedoceniane a nawet zapominane w programowaniu w Pythonie. Sam przygotowując tą lekcję dowiedziałem się rzeczy, o których wcześniej nie miałem pojęcia. Doszedłem do wniosku, że muszę częściej z nich korzystać 🤔
Link znajdziecie tutaj: [link widoczny dla zalogowanych]
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|