gpt4 book ai didi

python - Python 中的定点迭代

转载 作者:行者123 更新时间:2023-12-05 05:04:25 24 4
gpt4 key购买 nike

我是 Python 的初学者,我对这个任务有疑问:

  • 编写一个函数,使用定点迭代找到用户数学函数的根。
  • 使用此函数求根:x^3 + x - 1
  • 画出根近似与迭代算法步数的依赖关系图。

这是我第一次使用 Python,所以我真的需要帮助。这是我的代码,但它不起作用:

import math
import matplotlib.pyplot as plt
import numpy as np

def fixedp (function, x0, min = 0.001, max = 100):
i = 0
e = 1
xp = []
while (e > min and i < max):
x = function(x0)
e = norm(x0 - x)
x0 = x
xp.append(x0)
i = i + 1
return x, xp

fx = input("Wrote function : ")
function = lambda x: eval(fx)

x_start = 0.5
xf,xp = fixedp(function, x_start)

x = linspace(0,2,100)
y = function(x)
plot(x, y, xp, function(xp), 'bo', x_start, f(x_start), 'ro', xf, f(xf), 'go', x, x, 'k')
show()

最佳答案

首先,我会注意到您的代码逻辑非常好并且可以正常工作。缩进和语法存在一些问题,因此我重写了您的代码。

import matplotlib.pyplot as plt
import numpy as np
from typing import Tuple, List
from math import *


def iteration(given_function, x0, min_error=0.001, max_iteration=3) -> Tuple[float, List]:
i = 0
error = 1
xp = []
x = None
while error > min_error and i < max_iteration:
x = given_function(x0)
error = abs(x0 - x)
x0 = x
xp.append(x0)
i += 1
print(xp)
return x, xp


def plot(xf, xp, x_start, given_function):
function_v = np.vectorize(given_function)

x = np.linspace(0, 2, 100)
y = function_v(x)
plt.plot(x, y)
plt.plot(xp, function_v(xp), 'bo')
plt.plot(x_start, given_function(x_start), 'ro')
plt.plot(xf, given_function(xf), 'go')
plt.plot(x, x, 'k')
plt.show()


def main():
fx = input("Write function: ")
given_function = lambda x: eval(fx)

x_start = 0.9
xf, xp = iteration(given_function, x_start)

plot(xf, xp, x_start, given_function)


if __name__ == '__main__':
main()

祝你 future 使用 Python 好运!

关于python - Python 中的定点迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61102869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com