On Tue, Dec 26, 2017 at 2:04 AM, Nico Vogeli <nicco.9...@gmail.com> wrote: > Am Montag, 25. Dezember 2017 15:58:26 UTC+1 schrieb Chris Angelico: >> On Tue, Dec 26, 2017 at 1:48 AM, Nico Vogeli <nicco.9...@gmail.com> wrote: >> > Am Montag, 25. Dezember 2017 14:51:21 UTC+1 schrieb Chris Angelico: >> >> On Tue, Dec 26, 2017 at 12:36 AM, Nico Vogeli <nicco.9...@gmail.com> >> >> wrote: >> >> > Hi everybody. First ad foremost, happy Christmas! >> >> >> >> Same to you! >> >> >> >> > I want to let the use input a function (like x**2) and parse it after >> >> > that through code (for my numeric class) >> >> > >> >> > def newton(x0, s, s2, tol, n = 20000): >> >> > ''' >> >> > Näherung zur lösung einer Gleichung mit dem Newton-Verfahren >> >> > x0 = Startwert >> >> > f = zu lösende Funktion >> >> > fx = Ableitung der Funktion >> >> > >> >> > ''' >> >> > def f(a): >> >> > y = s >> >> > return y >> >> > >> >> > def fx(a): >> >> > y = s2 >> >> > return y >> >> >> >> >> >> > newton(2, 3*x**2, 6*x, 0.1, 2) >> >> > >> >> > I notice that the x is not converted to an integer, because of the x = >> >> > symplos('x') >> >> > But I don't know how I could possibli change the code to work... >> >> >> >> The easiest way is to pass a *function* to newton(). It'd look like this: >> >> >> >> def newton(x0, f, fx, tol, n=20000): >> >> ... as before, but without the nested functions >> >> >> >> newton(2, lambda x: 3*x**2, lambda x: 6*x, 0.1, 2) >> >> >> >> At least, I think that's how you're doing things. Inside the nested >> >> functions, you use 'a', but outside, you use 'x'. Are those >> >> representing the same concept? If so, the lambda functions given here >> >> will have the same effect. >> >> >> >> Hope that helps! >> >> >> >> ChrisA >> > >> > Hi Chris >> > >> > Thanks very much for your quick response! >> > I was in a bit of a rush, so I confused the variables (don't worry, I just >> > messed arround to try different things, the original code was al tidy with >> > the variable). >> > >> > I tried your input, but now I get another error: >> > >> > >> > File "C:/Users/Nicco ZHAW/Desktop/Test GUI/Test Projekt.py", line 42, in >> > newton >> > b = x - f(x)/fx(x) >> > >> > TypeError: unsupported operand type(s) for /: 'function' and 'function' >> > >> > This did not occure befor I tried to implement the user input.. >> >> Did you remove the nested functions? The lambda functions completely >> replace your "def f(a)" and "def fx(a)" functions. >> >> ChrisA > > I am so so sorry!! I just did not know what you meant by sested functions.. :P
No need to apologize! That's why we have two-directional communication - I can ask you to clarify, you can ask me to clarify, and we get to a solution. The concept of passing functions around does take some getting used to, so there's no shame in not instantly understanding it. > Thank you so much for helping me! You're great! > > Cheers and all the best! My pleasure! Have yourself an awesome holiday season. ChrisA -- https://mail.python.org/mailman/listinfo/python-list