kleine Mathe-Spielereien

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

15.001.2023
Endlich ist es mir nach einigen Problemen gelungen, mein
Ziel zu erreichen : Ein Popup-Menue , die Übertragung von
Objekten auf eine zweite Ebene.
Der Code ist leicht verständlich und kann beliebig ausgebaut
werden.

Gute Zeit OSWALD
"wer immer strebend sich bemüht, den können wier erlösen " Goethe FII

.

Code: Alles auswählen


from tkinter import *
import subprocess
from subprocess import  *
from tkinter.filedialog import askopenfilename

def code1():
    subprocess.call(["C:/windows/system32/mspaint.exe"])
         
        #subprocess.call(["C:/Program Files/Internet Explorer/iexplore.exe"])

def code2():
     subprocess.call(["C:/windows/system32/calc.exe"])

def code3():
     subprocess.call(["C:/Program Files/Internet Explorer/iexplore.exe"])

def code4():
    subprocess.call( [ "C:\Program Files\Google\Chrome\Application\chrome.exe" ])                                                                   

def NewFile():
    print("New File!")

def OpenFile():
    name = askopenfilename 
    print(name)

def About():
    print("example of a menu" )



window = Tk()

menu = Menu(window)
window.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="P a i n t", command=code1)
filemenu.add_command(label= "C a l c  ", command=code2)
filemenu.add_command(label= "E x p l o r e " ,command  =code3)
filemenu.add_command(label= "G o o g l e" , command = code4)

filemenu.add_separator()
filemenu.add_command(label="Exit", command=window.quit)

helpmenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpmenu)
helpmenu.add_command(label="About...", command=About)

mainloop()



OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

24.01.2023
Heute möchte ich einen einfachen aber mächtigen Texteditor
vorstrellen , den ich im WWW finden konnte..
Diesen konnte ich mit *subprocess* zunächst zwar auf die bekannte Weise
auf die Subebene geladen kriegen. Aber nicht öffnen.
jetzt habe ich den umgekehrten Weg eingeschlagen und *Paint*.exe
im Texteditor implementiert.
Ich glaube inzwischen zu wissen, dass die oft komplizierten und
schwer darzustellenden Pfade die Ursache dafür sind, obwohl ich immer
alle Objekte im gleichen Ordner zusammenstelle.
Gute Zeit Oswald


Code: Alles auswählen

mport subprocess
from subprocess import *
import tkinter as tk
from tkinter.filedialog import askopenfilename, asksaveasfilename
#########################
 
def open_file():
    """Öffne einen Dateiordner """
    filepath = askopenfilename(
        filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")]
    )
    if not filepath:
        return
    txt_edit.delete(1.0, tk.END)
    with open(filepath, "r") as input_file:
        text = input_file.read()
        txt_edit.insert(tk.END, text)
    window.title(f"Texteditor   - {filepath}")

def save_file():
    """Save the current file as a new file."""
    filepath = asksaveasfilename(
        defaultextension="txt",
        filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")],
    )
    if not filepath:
        return
    with open(filepath, "w") as output_file:
        text = txt_edit.get(1.0, tk.END)
        output_file.write(text)
    window.title(f"Text Editor Application - {filepath}")

 #########################
def code1():
    subprocess.call(["C:/windows/system32/mspaint.exe"]) 
#########################
window = tk.Tk()
window.title("Öffne Dateiordner, Text, Scrollen, Speichern als, Löschen ")
window.geometry("800x400")
 
txt_edit = tk.Text(window)
fr_buttons = tk.Frame(window, relief=tk.RAISED, bd=3)
btn_open = tk.Button(fr_buttons, text="Open", command=open_file)
btn_save = tk.Button(fr_buttons, text="Save As...", command=save_file)
btn_laden = tk.Button(fr_buttons, text="Laden..", command=code1())
 
btn_open.grid(row=0, column=0, sticky="ew", padx=5, pady=5)
btn_save.grid(row=1, column=0, sticky="ew", padx=5)

fr_buttons.grid(row=0, column=0, sticky="ns")
txt_edit.grid(row=0, column=1, sticky="nsew")

window.mainloop()






























nddn
Benutzeravatar
grubenfox
User
Beiträge: 412
Registriert: Freitag 2. Dezember 2022, 15:49

OSWALD hat geschrieben: Dienstag 24. Januar 2023, 16:59 24.01.2023
Heute möchte ich einen einfachen aber mächtigen Texteditor
vorstrellen , den ich im WWW finden konnte..
Aha, ... und welcher ist es?
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

Hallo ich habe vergessen zu erwähnen, dass zunächst 'Paint*
erscheint -
Deshalb noch einmal der Ediitor-Code, in dem ich subprocess
inaktiviert habe.

Code: Alles auswählen

[/

  
import subprocess
from subprocess import *
import tkinter as tk
from tkinter.filedialog import askopenfilename, asksaveasfilename
#########################
 
def open_file():
    """Öffne einen Dateiordner """
    filepath = askopenfilename(
        filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")]
    )
    if not filepath:
        return
    txt_edit.delete(1.0, tk.END)
    with open(filepath, "r") as input_file:
        text = input_file.read()
        txt_edit.insert(tk.END, text)
    window.title(f"Texteditor   - {filepath}")

def save_file():
    """Save the current file as a new file."""
    filepath = asksaveasfilename(
        defaultextension="txt",
        filetypes=[("Text Files", "*.txt"), ("All Files", "*.*")],
    )
    if not filepath:
        return
    with open(filepath, "w") as output_file:
        text = txt_edit.get(1.0, tk.END)
        output_file.write(text)
    window.title(f"Text Editor Application - {filepath}")

 #########################
#def code1():
#    #subprocess.call(["C:/windows/system32/mspaint.exe"]) 
#     subprocess.run(["Windows\(C:)GUIRechner.py"]) 


#########################
window = tk.Tk()
window.title("Öffne Dateiordner, Text, Scrollen, Speichern als, Löschen ")
window.geometry("800x400")
 
txt_edit = tk.Text(window)
fr_buttons = tk.Frame(window, relief=tk.RAISED, bd=3)
btn_open = tk.Button(fr_buttons, text="Open", command=open_file)
btn_save = tk.Button(fr_buttons, text="Save As...", command=save_file)
#btn_laden = tk.Button(fr_buttons, text="GUIRechner..", command=code1())
 
btn_open.grid(row=0, column=0, sticky="ew", padx=5, pady=5)
btn_save.grid(row=1, column=0, sticky="ew", padx=5)

fr_buttons.grid(row=0, column=0, sticky="ns")
txt_edit.grid(row=0, column=1, sticky="nsew")

window.mainloop()




code]
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

4.2.23
Bei der Beschäftoigung mit dem hema
Pandas und Mathematik bin ich erstmalig
auf eInen Code gestossen. , der
Dataclass mit Pandas kombiniert.Dieser soll Interessierten
nicht vorenthalten werden, denn hier findet sich auch ein
Beweis für die Bedeutung der Mathematik für Pandas.
Kann man aber auch Mathematik mit Pandas betreiben ?

Code: Alles auswählen


from dataclasses import dataclass
from dataclasses import field
from dataclasses import InitVar
import pandas as pd
import random 
from math import *
@dataclass
class DataClass_Modern(object):

    # Invisible attribute (init-only)
    attr0:InitVar[int] = 81

    # Initialized attribute
    attr1:int   =0
    attr2:float =0.
    attr3:str   ='undefined'
    attr4:list  = field(default_factory=list)

    # Generated attribute
    attr5:float = field(init=False)

    # Generated attribute - read property
    @property
    def attr5(self)->float:
        return sqrt(abs(self._attrHidden))

    # Generated attr - set property (required by dataclasses)
    @attr5.setter
    def attr5(self,_):pass # Do nothing, this is a read-only attribute

    def __post_init__(self,attr0):
        # Make a copy of the init-only attribute to a local attribute that
        # is used for the generated attribute (via a property)
        self._attrHidden = attr0 # This attribute should remain hidden from pandas
    @classmethod

    def rand_factory(cls):
        '''
        Returns an object of the calling class with randomized initialization attributess
        '''
        return cls(
            attr0=random.randint(-1e3,1e3),
            attr1=random.randint(-1e6,1e6),
            attr2=random.random(),
            attr3=random.choice(
                [
                    'Tool',
                    'PinkFloyd',
                    'Soundgarden',
                    'FaithNoMore',
                    'aPerfectCircle',
                    'KingCrimson',
                    'PearlJam',
                    'ChildrenOfBodom']),
            attr4=random.choices(range(100,999),k=3)
        )

if __name__ == '__main__':

    rand_objects = [DataClass_Modern.rand_factory() for _ in range(10)]
    df = pd.DataFrame(rand_objects)

    print(df)

#Google ermittelt den Cumulative Layout Shift durch eine Formel, 
#die die beiden Variablen „impact friction“ und „distance friction“
# miteinander multipliziert:
#  =CLS-Wert#

OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

4.223
Hier ein erster Versch in
'Mathematik und Pandas' einzusteigen:
Auch die Ststistik kommt hinzu.

Gute Zeit OSWALD

Code: Alles auswählen


from math import *
import pandas as pd 
import numpy as np 


print("         Test 1" )

zahlen1 =[]   
zahlen  =   [ [12, 17, 19 ], [ 14, 28, 13] , [ 23,14,36]]
 
df = pd.DataFrame(zahlen ) 
print(df)
       
df +df  
print (df+df) 

df-df  
print (df-df) 

df *df  
print (df*df) 
      
df/df  
print(df/df) 
############################# 
print("           Test 2") 
zahlen =[]   
zahlen  = [[sin(1), cos(3), tan(0.5)], [ 14, 28, 13]] 
df2 = pd.DataFrame(zahlen)  

df2 + df2  
print (df2+df) 

df2-df2  
print (df2-df2) 

df2 *df2  
print (df2*df2) 
      
df2/df2  
print(df2/df2) 

#############################
print("          Test 3")
            
       
zahlen3 =[]   
zahlen3 = [[sin(1), cos(3), tan(0.5)], [ log(14), exp(0.35), log10(16)]] 
df3 = pd.DataFrame(zahlen3)
 
df3 + df3  
print (df3+df3) 

df3-df3  
print (df3-df3) 

df3 *df3  
print (df3*df3) 
      
df3/df3  
print(df3/df2) 



OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

4.2.23 zum Schluß noch ein Beispiel dafür ,wie kompakt man
auch mit Canvas e.twas Mathe machen kann.
Der Phantasie sind keine Grenzen gesetzt.

Gute Zeit OSWALD
Wer immersterebend sich bemüht , den können wir erlösen (Faust II)

Code: Alles auswählen


from math import *
import pandas as pd 
import numpy as np 

   
zahlen  =   [ [12, 17, 19 ], [ 14, 28, 13] , [ 23,14,36]]
df = pd.DataFrame(zahlen ) 

zahlen1 =   [ [1, 7, 19 ], [ 4, 8, 3] , [ 3,4,6]]
df1 = pd.DataFrame(zahlen1) 
  
print(df+df1) 
print(df-sin(5) )
print(df*df1)
print(df/ 1/3)

############################ 
  
zahlen =[]   
zahlen  = [[sin(1), cos(3), tan(0.5)], [ 14, 28, 13]] 
zahlen1 = [[ 1   ,3       , 5      ], [  3  ,3 , 2 ]]
df = pd.DataFrame(zahlen)  
df2 = pd.DataFrame(zahlen1)
 
print(df2+df) 
print(df-df2) 
print(df*df2) 
print(df/df2) 
print(df **3)   
#############################



 
 














OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

7.2.23
Hier stelle ich zwei weitere wichtige Funktionen
von Pandas vor:
1,Konvcrtierung von Strings in Float
2.Konvertierung von NAN-Werten in 0
Damit ewird die Flexibilität von Pamdas erhöht und auch
die mathemaische Anwendungf v. P verbessert,.
Gute Zeit OSWALD


Code: Alles auswählen

import numpy as np
import pandas as pd


df = pd.DataFrame({'Punkte': [np.nan, 12, 15, 14, 19],
                   'Helfer': ['5', np.nan, '7', '9', '12'],
                   'rebounds': ['11', '8', '10', '6', '6']})  

print("  Zunächst  das   Original Dataframe  ") 
print("  Es enthält zwei Leerstellen ")
print(df)
 
 
print( "   Spaltendatentypen anzeigen")
df.dtypes
print(df.dtypes)
dtype: object
print("     Konvertieren einer einzelnen Spalte in Float")
print( "    Es betrifft die Spalte  'Helfer' ")
#"assists" von string in float konvertieren
df['Helfer'] = df['Helfer'].astype(float)
print(df.dtypes) 
df.dtypes
print(df)
 
print("Spalten 'rebounds' u.'Helfer'  in float konvertieren")
df[['Helfer', 'rebounds']] = df[['Helfer','rebounds']].astype(float)
print(df)

df.dtypes#Spaltendatentypen anzeigen
print(df.dtypes)

 
dtype: object
#Beispiel 3: Alle Spalten in Float umwandeln
#Die folgende Syntax zeigt, wie Sie alle Spalten im DataFrame in Floats konvertieren:

#konvertieren Sie alle Spalten in Float
df.dtypes
df = df.astype(float)
print()
print("Spaltendatentypen  jetzt  :"      )
dtype: object

print("Konvertieren von String in Float und Füllen von NaN-Werten")
print("'Helfer'von Strings in Floats  u.die NaN-Werte mit Nullen füllen")

#konvertiere "assists" von string in float und fülle NaN-Werte mit Nullen aus
df['Helfer'] = df['Helfer'].astype(float).fillna(0)
print(df)
print("Jetzt letztes DataFrame anzeigen.")
print(df['Helfer'])                          
 

OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

7.2.23
kleine Korrektur:
die Zeilen 48 bis 54 bitte ersetzen
Leider die Konvertierung eines NaN-Wertes vergessen
'Kein Programm ohne Fehler'
Gute Zeit Oswald

Code: Alles auswählen

[
 
 #konvertiere "Helfer" von string in float und fülle NaN-Werte mit Nullen aus
df['Punkte'] = df['Punkte'].astype(float).fillna(0)
df['Helfer'] = df['Helfer'].astype(float).fillna(0) 
print(df)
print("Jetzt letztes DataFrame anzeigen.")
print(df['Punkte'])                          
 


/code]
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

7.2.23
Mathematik mit Pandas
mit Hilfe von scipy lässt sich schon
tief in die Algebra undArithmetik eintauchen,,
serielle Berechnungen kommen dazu
Als nächstes Ziel möchte ich mit (x=1)
dee Lösung von Gleichungen versuchen.
Jedenfalls eröffnen sich viele neue
Möglichkeiten für "viele kleine Mathe-Spielereien."
OSWALD

Code: Alles auswählen


import numpy as np
from scipy import*  
from math import  *
import pandas as pd
a = pd.DataFrame([1,2,3,6,2,3,1,8,9,10])
b = pd.DataFrame([1,2,3,4,5,6,7,8,9,10]) 
c = pd.DataFrame([1,1,1,1,1,1,1,1,1,1])

#########################
#print(3* a **3)
#print(b**3)
#print(3*c**3)
#########################
#print(a**2 + 2*a*b + b**2)  
#print(3*(a + b) * 2*(a - b))
print(a/(a+b)+a*b)
print((a-b)/(b +c -a))
 
#print(b + 3*np.pi- 2*exp(2) )
##print(4*a*3 + b**3 )       
#(3*( a + 2*a + a**2)* (3-b**3 )-c ) 
##print(( a + b-c) * (a-b))

Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@OSWALD: Da wird überhaupt nichts von `scipy` verwendet, nicht mal im auskommentierten Code. Mir erschliesst sich auch der Sinn dieses Beitrags und auch so einiger anderer Beiträge nicht. Ich meine das hier ist „es gibt Pandas“ und Python kennt die Grundrechenarten. Wer hätte das gedacht… 🙄
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

14.2. :roll: Hallo BlackJack,
Soeben habe ich im Internet unter 'IT-Witze'
einen 'guten' Sprich gesucht und gefunden:

'Das ist suboptimal gelaufen.
Bedeutung: Das ist scheiße gelaufen.'

Bei menem Ausflug ins Pandas-LAND bin ich
leider in einem Irrwegstecken geblieben.
Das mit der angekündigten 'Einfachheit' und 'Effizienz '
war leider nicht der Fall. Der Lehrling darf aiuch Fehler machen.
Deshalb versuche ich jetzt - reuig - mein Heil bei Scipy und Sympy,
speziell beim bestimmten Integral und ich bin sicher ,
dass ich hier nicht enttäuscht werde.
Auf bald OSWALD
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

14.2.23
Der Einstieg beginnt mit der einfachen Brechnung
der 'Fläche unter der Kurve' mit scipy.
Beim Vergleich mit anderen Biblioheken
ergaben sich identische Werte.
OSWALD

Code: Alles auswählen


#   Einfaches bestimmtes Integral

import scipy.integrate as spi
import numpy as np

print("Integral,Fläche von b -a)" )
integrand = lambda x :   3*x**3 +6
a = 1                     
b = 2.5

result, error  = spi.quad(integrand, a, b)
print('Ergebnis: ', result)
print('geschätzter Fehler ', error)
 
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

[ 14.2.23
nun eine Integration mit sympy, jedoch mit
anderen Werten. Hier werden 2 Ergebnisse verglichen.
der erste Wert sollte der genauere sein.
Gute Zeit OSWALD

Code: Alles auswählen


import sympy as sy
# Sympy-Variablen initiieren:
x = sy.S( 'x' )
a, b = sy.S( [1,2] ) # hier Ober- /Untergrenze
# Bestimmtes Integral berechnen:

    
sy.integrate( sy.pi * (x**2 + x + 1/x) , (x,a,b) )
print("Hinweis  zu Zeile 10: 1/x wird zu log() ")  
print("Exaktes Ergebnis = :",sy.integrate( sy.pi * (x**2 + x + 1/x) , (x,a,b) )) 
 
sy.integrate( sy.pi * (x**2 + x + 1/x) , (x,a,b) ).evalf()
print(" jetzt Auswertung mit eval ")
print("Ergebnis2=:",sy.integrate( sy.pi * (x**2 + x + 1/x) , (x,a,b) ).evalf()                                                  ) 

OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

17.02.2023
Die Berechnung von Rotationskörpern
mit Volumen und Manteloberfläche
war schon wesentlich schwieriger, besonders
die Mantelfläche.
Gute Zeit OSWALD

Code: Alles auswählen


import scipy.integrate as spi
import numpy as np
print("Parabelfläche  von x**2  : Rotation um die X-Achse                                                     ")
print("Berechnung der Mantelfläche ")
 

integrand = lambda x :  np.pi *x**2 *(x**2+1) **1/2
a = 1.
b = 3

result, none = spi.fixed_quad(integrand, a, b, n=5)
print('Mantelfläche =: ', result)
 
print()#################################################
 
print("Parabelfläche von x**2  : Rotation um die X-Achse ")
print("Integral  fixed_quad mit scipy")

print('Integral über Pi * f(Pi*x**2) **2 ')
       
integrand = lambda x :  np.pi * (x**2)**2 
a = 1
b = 3
result, none = spi.fixed_quad(integrand, a, b, n=5)
print("Volumen  =:" ,result)


OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

19.02.2023
Zwei kleine Codes mit SYMPY vereinfachen das
Arbeiten mit dem bestimmten Integral.
Sie sind selbsterklärend und beliebig erweiterbar.
Die Ergebnisse sind exakti.
Gute Zeit OSAWLD

Code: Alles auswählen

1.
from math import *
import numpy as np
import scipy
from scipy.integrate import quad 
def func(x):
    return  x +  sin(x) -cos(x) + exp(x) 

integral,error = scipy.integrate.quad(func,0,2)
print("Ergebnis als Summe aller Elemente : " + str(integral))
print("Der Fehler   = :" +str(error))

#########################

2.from  sympy  import  sin , asin ,cos , atan , tan ,  exp ,  log , integrate  
from  sympy  import  integrate 
from  sympy.abc  import  x ,y  ,z
print(integrate ( 1  /  x ,  x ) )
 
print(integrate ( 1 / x ) )
 
print(integrate ( log ( x),  x ) )
 
print(integrate ( log ( x )) )
 
print(integrate ( exp ( x )  /  ( 1  +  exp ( 2  *  x )) ,  x ) )
 
print(integrate ( cos ( x ) ** 4  *  sin ( x ) ** 3 ,  x ) )
 
print(integrate ( cos ( x ) ** 4  *  sin ( x ) ** 5 ,  x ) )
 
print(integrate ( tan ( x ),  x ) )
  
print(integrate ( sin ( x ),  x ) )
 
print(integrate ( asin (x) ,x ))

print(integrate ( atan (y) , y ))

print(integrate ( 1/z**3 ,z  )) 

OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

Visuelle Darstellung
Fläche unter der Kurve x**2
mit Grenzen 4-9
(siehe Integral Berechnung der Fläche)
OSWALD

Code: Alles auswählen

mport numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
 


def func(x):
    return   x**2  


a, b = 4, 9  # integral limits
x = np.linspace(2, 10)
y = func(x)

fig, ax = plt.subplots()
ax.plot(x, y, 'r', linewidth=2)
ax.set_ylim(bottom=0)

# Make the shaded region
ix = np.linspace(a, b)
iy = func(ix)
verts = [(a, 1), *zip(ix, iy), (b, 0)]
poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')
ax.add_patch(poly)

ax.text(0.5 * (a + b), 30, r"$\int_a^b f(x**2)\mathrm{d}x$",
        horizontalalignment='center', fontsize=20)

fig.text(0.9, 0.05, '$x$')
fig.text(0.1, 0.9, '$y$')

ax.spines[['top', 'right']].set_visible(False)
ax.set_xticks([a, b], labels=['$a$', '$b$'])
ax.set_yticks([])
plt.title('Funktion =  x**2,.      Grenzen a=4, b=9 ') 
plt.grid(True) 
plt.show()

##########################







OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

20.02.2023
Für die Praxis: Wo integriert wird,
wird in der Regel auch differenziert.
SYMPY machts möglich.
f --> F ->> f'
Gute Zeit OSWALD

Code: Alles auswählen

from sympy import *
x = symbols('x')



f = 7*x**5- ln(x)+3
print("f(x) =", f)
print("Stammfunktion: F(x) =", integrate(f, x))
print("Ableitung: f'(x) =", diff(f, x))
print() 
 
f =  - 2*x**2   + log(4*x) * 1/x
print("f(x) =", f)
print("Stammfunktion: F(x) =", integrate(f, x))
print("Ableitung: f'(x) =", diff(f, x))
print() 


f =     exp(x) + sin(2*x)*cos(x)
print("f(x) =", f)
print("Stammfunktion: F(x) =", integrate(f, x))
print("Ableitung: f'(x) =", diff(f, x))
 
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

21.02.2023
Die Berechnung der Bogenlänge mit sympy
(erweiterter Code von Dennis hier, so,)
Angebunden eine Graphik mit der gleichen Funktion.
Ich habe versucht die Grenzen des Bogens zu visualisieren,
zumindest symbolisch. Die Funktion ist beliebig
austauschbar. Schwieriges Terrain für Anfänger
Macht aber zunehmend Spass.
OSWALD
User
Beiträge: 346
Registriert: Freitag 18. März 2022, 17:32

siehe oben
warum nicht kopiert ??
aber jetzt

Code: Alles auswählen

import sympy
import numpy as np 
import numpy as np
from scipy.interpolate import make_interp_spline
 
A =-0.5      #siehe Zeeile 33
B= 1.5       #--ort A,B einsetzen'

def main():
   x = sympy.symbols('x')
   bogenlänge_y =  3*x**3 +2*x**2 +5    # sqrt ist die Wurzel
    # diff ist die Ableitung
   z = sympy.sqrt(1 + sympy.diff(bogenlänge_y, x) ** 2)
   print(z)
    # integrate ist die Integration
   s = sympy.integrate(z, (x, A, B))
   print(s) 
    # N wandelt das sympy-Objekt in eine Dezimalzahl
   bogenlänge_s = sympy.N(s, 7)
    
   print(f"Bogenlänge für y = {bogenlänge_y}")
   print(f"Grenzen a ={A}, b ={B}")
   print(f"Bogenlänge s = {bogenlänge_s}")


if __name__ == '__main__':
   main()

import matplotlib.pyplot as plt
import numpy as np

# Definieren der x- und y-Werte
x = np.arange(A,B,0.1)
y = x**4 - 4*x**3 

# Diagramm der Werte erstellen
plt.plot(x,y)

#Füllen Sie den Bereich zwischen den beiden Linien aus
plt.fill_between(x, y, np.max(y), color='red', alpha=.5)
   
 






Antworten