当前位置: 首页 > 知识库问答 >
问题:

二维系统Euler方法

司空坚
2023-03-14

我绝对是编程的初学者。并尝试编写了两个系统相互作用的Euler方法的算法。当我运行代码时,我得到了这个错误消息。如果你帮助我,我会很感激的。谢谢.

IndexError:列表赋值索引超出范围

import numpy as np
from matplotlib import pyplot as plt
import math```

U_0 = np.array([1,1])
V_0 = np. array([6,4])

n = 101
D= 7
alpha = 1
ep=0.5
dt=0.001

U = []
V = []

U[0] = U_0
V[0] = V_0 

def NmDef(U1, V1, U2, V2):
    Nm = math.sqrt((U1-V1)**2+(U2-V2)**2)     #sqrt 
    return Nm

NmDef_value = []
for i in range(n):
    i +=1
    L = NmDef(U[i], V[i], U[i-1], V[i-1])
    print(i, L)
    NmDef_value.append(L)

for i in range (n):

    rho_0=(D-L)*(D>L)      #D-norm(U-V)
    rho_e=(D*(1+ep)-L)*((D*(1+ep))>L)
    d=(V[i]-U[i])/L
    Fa=D/alpha*1.872*rho_e*d
    Fr=-D/alpha*15.6*rho_0^3*d

U = np.zeroes([n])
V = np.zeroes([n]) 

#for loop for Euler's method
for i in range (n):
    U[i]=U[i-1]+dt*(Fa[i]+Fr[i])
    V[i]=V[i-1]-dt*(Fa[i]+Fr[i])
    for i in range (n):
        print(U[i], V[i])

共有1个答案

云项禹
2023-03-14

我可以看到在for循环中有很多错误。在这个for循环中,首先有:

NmDef_value = []
for i in range(n):
    i +=1
    L = NmDef(U[i], V[i], U[i-1], V[i-1])
    print(i, L)
    NmDef_value.append(L)

在这段代码中,foor循环在每一步都将i值递增1。在你的例子中,它是以1递增,你也是以1递增,所以每次迭代,你都是以2递增i。当您到达列表的最后一个元素时,您将拥有i=n,并且您只能使用值为n-1的列表元素,否则您将获得超出范围的索引。您可以这样修复它:

NmDef_value = []
for i in range(n):
    L = NmDef(U[i], V[i], U[i-1], V[i-1])
    print(i, L)
    NmDef_value.append(L)

对于第二个For循环:

for i in range (n):
    U[i]=U[i-1]+dt*(Fa[i]+Fr[i])
    V[i]=V[i-1]-dt*(Fa[i]+Fr[i])
    for i in range (n):
        print(U[i], V[i])

在这一个中,对于i=0,你试图访问u[i-1],所以它是u[-1],它也会超出范围。您可以添加一个可以用1启动for循环,如下所示:for i in range(1,n)

 类似资料:
  • 依旧没有问八股和手撕代码,😂但是就一个项目聊了半小时,面试官表示和他们需要的岗位和匹配,并和我传授了许多人生哲理,受益匪浅,其实还是想去锻炼一下的,之前啥都没找是因为毕业后不想留在北京不想留在互联网上企业,但实习内容与目前项目很相关还是可以考虑的 面试官说下一步联系一下hr看看还要走什么流程,应该技术面就两次吧。 #小米#

  • 本没打算写面经的,但二面面试官水平实在太高,写贴记录(面试在去年11月和12月,现在才发)。 一面是一位小哥,问了常规八股(太久没面了,答得都不太好)和实习内容,并不难,跟找实习难度差不多,但我只能给自己一个勉强及格线的分数。以为要寄了,居然有了二面(70min)。 主要都在忙着实习的任务,依旧没做任何准备就上了,毕竟鼠鼠对秋招也是半放弃的状态了/(ㄒoㄒ)/~~ 上来先问了非技术问题: 对工作的

  • 本文向大家介绍innodb系统表空间维护方法,包括了innodb系统表空间维护方法的使用技巧和注意事项,需要的朋友参考一下 环境说明: 有一个在运行中的mysql环境,由于之前的配置文件设置的过于简单(没有配置innodb_data_file_path变更);造成现在系统表空间已经满了 如果innodb_data_file_path之前没有设置那么它会采用默认值:innodb_data_file_

  • 二面时间 2023-6-26 10:00 - 10:30 30min 面试内容 总览 有没有了解过岗位 jd?和个人发展 怎么样? 有用过哪些 数据库工具?DDL和DML有什么区别 系统运维对哪一块比较了解?有没有用过k8s? 你有哪些优势?还有哪些缺点?不足需要补足短板有哪些? 为什么选择来杭州实习? 有没有收到其他的offer?不满意的地方在哪里? 对公司有没有什么了解?然后给我简单介绍了,有

  • 1.自我介绍 2.docker部署的网络模式有哪些? 3.docker怎么包含最小化的操作系统镜像? 4.使用过tmocat和nginx吗? 5.nginx正向和反向代理 6.dns和https端口多少? 7.redis使用过吗? 8.mysql的部署模式有哪些? 9.rabbitmq和rocketmq区别? 10.Linux 如何过滤包含关键字的文件? 11.prometheus和grafana

  • 整合第三方系统: 该文档正在编写中...