Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 12

Траектория лыжника

31.05.2010, 21:42. Показов 1890. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста разобраться в ошибках. Я пишу программу которая бы моделировала траекторию скольжения лыжника по заданной функции, случай когда лыжник может оторваться от поверхности и лететь не рассматриваем. Программу надо написать с использованием классов.
Класс:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/python
# -*- coding:utf8 -*-
 
import numpy as num
import math
 
 
class klass:
    def __init__(self,x,y,vx,vy,k,tr,m):
        self.x=float(x)
        self.y=float(y)
        self.vx=float(vx)
        self.vy=float(vy)
        self.k=float(k)
        self.tr=float(tr)
        self.m=float(m)
        self.t=0
        self.X=[]
        self.Y=[]
        self.dv=True
 
        def f(x):
            return -x+10   #функция рельефа
        
    def K(z):  
        return pow(((((f(z+2*0.01)-2*f(z+0.01)+f(z))/0.0001)/(1+pow(f(z+0.01)-f(z)/0.01,2))),1.5)) #функция обратная радиусу кривизны
              
        def der(z):
            return (f(z+0.01)-f(z))/0.01 #функция первой производной, для расчета угла
 
        def shift(self,dt,f): 
            if K(self.x)>0:
            self.N=-self.m*((self.vx*self.vx+self.vy*self.vy)*K(self.x)-9.8*math.cos(math.pi/2-math.atan(der(self.x))))
            self.ax=(self.N*math.cos(math.pi/2-math.atan(der(self.x)))-self.tr*self.N*math.sin(math.pi/2-math.atan(der(self.x)))-self.k*self.vx)/self.m
            self.ay=(self.N*math.cos(math.pi/2-math.atan(der(self.x)))*tr+math.sin(math.pi/2-math.atan(der(self.x)))+self.k*self.vy-self.m*9.8)/self.m
            self.vx=self.vx+self.ax*dt
            self.vy=self.vy+self.ay*dt
                self.x=self.vx*dt+self.ax*dt*dt/2
            self.y=self.vy*dt+self.ay*dt*dt/2       
        elif K(self.x)<0:
                self.N=self.m*((self.vx*self.vx+self.vy*self.vy)*K(self.x)+9.8*math.sin(math.atan(der(self.x))))
            self.ax=(self.N*math.cos(math.pi/2-math.atan(der(self.x)))-self.N*self.tr*math.sin(math.pi/2-math.atan(der(self.x)))-self.k*self.vx)/self.m
            self.ay=(self.N*math.sin(math.pi/2-math.atan(der(self.x)))-self.m*9.8+self.tr*self.N*math.cos(math.pi/2-math.atan(der(self.x)))+self.vy*self.k)/self.m
            self.vx=self.vx+self.ax*dt
                self.vy=self.vy+self.ay*dt
            self.x=self.vx*dt+self.ax*dt*dt/2
            self.y=self.vy*dt+self.ay*dt*dt/2
            elif K(self.x)==0:
                self.N=9.8*self.m*math.sin(math.pi/2-math.atan(der(self.x)))
            self.ax=(self.N*math.cos(math.pi/2-math.atan(der(self.x)))-self.N*self.tr*math.sin(math.pi/2-math.atan(der(self.x)))-self.k*self.vx)/self.m
            self.ay=(self.N*math.sin(math.pi/2-math.atan(der(self.x)))+self.tr*self.N*math.cos(math.pi/2-math.atan(der(self.x)))-self.m*9.8+self.vy*self.k)/self.m
            self.vx=self.vx+self.ax*dt
                self.vy=self.vy+self.ay*dt
            self.x=self.vx*dt+self.ax*dt*dt/2
            self.y=self.vy*dt+self.ay*dt*dt/2
                
            if self.y<=0:
            self.dv=False
        else: 
            self.X.append(self.x)
            self.Y.append(self.y)
            self.t=self.t+dt
 
Сама программа:
#!usr/bin/python
# -*- coding:utf8 -*-
import math
import numpy as num
import matplotlib.pyplot as pyp
from klass import *
 
def f(x):
 return -x+10
    
dt=0.01
ski=klass(0,10,2,-4,0.01,0.1,70)
t=0
while ski.dv:
 ski.shift(dt,f)
print ski.X
print
print ski.Y
pyp.figure(1)
pyp.subplot(111) 
pyp.plot(ski.X,ski.Y,'black')
pyp.show()
 
На данный момент программа выдает ошибку:
 if K(self.x)>0:
NameError: global name 'K' is not defined
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2010, 21:42
Ответы с готовыми решениями:

Траектория прыжка
Рассмотрим пример иллюстрирующий математическую модель описывающий траекторию кошачьего прыжка. Из второго закона Ньютона, предполагая...

Определить пробег лыжника за n-й день тренировок
Начав тренировки, лыжник в первый день пробежал 10 километров. Каждый следующий день он увеличивал пробег на 10% от пробега предыдущего...

Определить в какой день суммарный пробег лыжника за все дни превысит 100 км.
Написать программу.Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал длину пробега на 10% от...

1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
01.06.2010, 03:14
Цитата Сообщение от shishkin
Python
1
NameError: global name 'K' is not defined
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> class A():
...     def prn(self, x):
...         print(x)
...     def prn3(self):
...         if self.i == 3:
...             for i in (1, 2, 3):
...                 self.prn(self.i * i)
...
>>> obj = A()
>>> obj.i = 3
>>> obj.prn(1)
1
>>> obj.prn3()
3
6
9
>>> obj.i = 2
>>> obj.prn3()
>>>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2010, 03:14
Помогаю со студенческими работами здесь

Про лыжника
Начав тренировки, лыжник в первый день пробегал 10 км. Каждый следующий день он увеличивал длину пробега на 10% от предыдущего дня....

Про лыжника
Люди помогите решить задачьку по паскалю :Лыжник в первый день прошел 10КМ.КАждый следующий день он проходил на 10% больше, чем в первый....

Задача про лыжника
Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину пробега на P процентов от...

Анимация лыжника из картинок
Здравствуйте! Мне надо сделать анимацию из картинок, как лыжник прыгает с трамплина. Изображения у меня есть, но я не понимаю как их...

Суммарный пробег лыжника
1.2. Циклические программы. Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru