a=input("Write your function")
b=input("Input the derivative of your function ")
def f(x):
return a
def fprime(x):
return b
guess= 1
for n in range(1, 100):
nextguess = guess - f(guess)/fprime(guess)
print(nextguess)
guess = nextguess
错误代码:
Traceback (most recent call last): File "C:\Users\Anton Morian\kod\Projekt.py", line 13, in <module> nextguess = guess - f(guess)/fprime(guess) TypeError: unsupported operand type(s) for /: 'str' and 'str'
答案 0 :(得分:0)
首先,你不需要funtions
。
其次,python中的input()
返回str
。您需要将其转换为int
才能进行数学运算。
我不是一个数学家,所以不要试图在这里尝试实现,但尝试这个代码。
a=input("Write your function")
b=input("Input the derivative of your function ")
guess= 1
for n in range(1, 100):
nextguess = guess - int(a)/int(b)
print(nextguess)
guess = nextguess
答案 1 :(得分:0)
这是我的最终结果,您怎么看?是的,我知道使用全局变量。
顺便说一下,它的newtows方法
restart = True
import re
from decimal import Decimal
while restart:
print("Hej ska du vara! Detta är Newtons metod. Jag kan räkna ut nollställen ALLA nollställen, coolt va?!? Testa gärna mig :)")
a=(input("Skriv din funktion"))
b=(input("Ange dervatan till din funktion"))
def f(x):
return eval(re.sub("x", str(x), a))
def fprime(x):
return eval(re.sub("x", str(x), b))
gissa = None
inputText = "Ange din gissning av ett nollställe: "
def getInput():
global gissa
global inputText
gissa = float(input(inputText))
if fprime(gissa) == 0:
inputText = "Gissningen ej definierad, ange en ny: "
return True
else:
return False
while getInput():
pass
for n in range(1, 50):
nextgissa = gissa - f(gissa)/fprime(gissa)
gissa = nextgissa
gissa=Decimal(gissa)
output=round(gissa,2)
print("Nollstället är", output)
restart=input("Tryck på valfri tagent för att starta om eller enter för att avsluta!")
if restart=="":
restart = False
print("Hejdå ska du vara!")