Python:为什么我构建的这段代码没有使用初始列表中的所有三个 M0 值?(磁化强度 x 温度 - Weiss 理论)

Python: Why this code I built is not using all the three M0 values within the initial list? (Magnetization x Temperature - Weiss Theory)

提问人:Ferreira H. S. 提问时间:10/28/2023 更新时间:10/28/2023 访问量:8

问:

我正在尝试评估(使用数值方法求解超越方程)当我改变初始猜测 M0 的值时,迭代次数会变化多少。我想我不应该期望它为如此不同的 M0 值返回相同数量的迭代,所以我认为这段代码可能不会使用我希望它使用的所有这三个值。

#ITEM C:
import numpy as np

Tc = 1.0
T = list(np.arange(0.01,1.2,0.001))
M0 = [0.5,50.,100.]
erro_min = 1e-6

for k,Mk in enumerate(M0):
    
    erro = 1.
    iteracao = 0
        
    if k == 0:
        print('\nc) Com critério de convergência dado por {}, alteramos agora os valores de chute inicial para o processo de solução da eq. autoconsistente. A intenção é avaliar possíveis mudanças nas quantidades de iterações.\n\n--> Para M0 = {} tínhamos:'.format(erro_min,Mk))
    else:
        print('\n--> Para M0 = {} temos'.format(Mk))    

    for n, Tn in enumerate(T):

        while erro > erro_min:
        
            iteracao += 1
            M = Mk
        
            a = M
            b = np.tanh(Tc*M/Tn)
        
            if abs(a - b) > erro_min:
                Mk = b
            else:
                break
   
    print("\nNúmero de iterações: {}".format(iteracao))

我试图在 but before 进程中使用/包含,但它显然得到了一个为 k = 1 和 2 的 M(T) 获得的特定值。for k in range(3):for n, Tn in enumerate(T):while

for-loop while-loop 数值方法 超越方程

评论


答: 暂无答案