Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76

Вычислить функцию

01.06.2015, 00:28. Показов 3390. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задания и моя концепция (код к ним), которая не работает/не знаю где можно поправить. Все решения видели три человека, их исправления, по возможности, учтены, поэтому неверный перевод из математического представления формул в запись ЯП маловероятно.
1. Вычислить функцию. https://www.cyberforum.ru/cgi-bin/latex.cgi?y=\begin{cases} & \text{ if } x^2\leq t       6.3^{tx}+ cos^{3,3}(tx^2)  \\  & \text{ if } x^2 >t        \frac{ln\left(\left|t+x \right| \right)-1.4}{sqrt(5e^{-3x})}  \end{cases} 0.4<=x<=6; h=0.4; 3<=t<=9.
Решение:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import math 
 
print "Input x - [ 0.4, 6 ], t => 3<=t<=9 and step ( h = 0.4 )" 
xn = float(input( "xn = " )) 
xk = float(input( "xk = " )) 
h = float(input( "step = " )) 
t = float(input( "t = " )) 
x = xn 
while x <= xk : 
    if (x*x)<=t : 
        y =(6.3**(t*x))+math.cos(x*x*t)**3.3 
        print ('%.8f' %y, '%.8f' %x) 
    elif (math.log(abs(t+x)))!=0 : 
        y =(math.log(abs(t+x))-1.4)/math.sqrt(5*math.exp(3*x)) 
        print ('%.8f' %y, '%.8f' %x) 
    x+=h 
#print "y = ", y 
input("Press enter!")
Результат:
Input x - [ 0.4, 6 ], t => 3<=t<=9 and step ( h = 0.4 )
xn = 0.4
xk = 6.
step = 0.5
t = 8
('361.33433634', '0.40000000')
('569183.98447500', '0.90000000')
Traceback (most recent call last):
y =(6.3**(t*x))+math.cos(x*x*t)**3.3
ValueError: negative number cannot be raised to a fractional power
Откуда берётся это отрицательное число, как его обойти? Во второй ветке предупреждены все нули.
2. https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{k=1}^{^infinity} \frac{(-1)^k}{(2k)!}{(\frac{x}{3})}^{4k} Нашли формулу начального значения при n=1: https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{(-1)}^{n}}{(2n)!}{(\frac{x}{3})}^{n}
И рекуррентную формулу для вычисления суммы ряда: https://www.cyberforum.ru/cgi-bin/latex.cgi?{\frac{(-1)^{n+1}}{(2(n+1)!)}} {(\frac{x}{3})}^{4(n+1)}
Код:


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import math 
s = 0. 
k = 1 
x =float( input("Input x: ")) 
E =float( input("Input E: ")) 
a = ((-1./2.)*((x/3)**4)) 
a1=0. 
print "a = ", a 
while abs( a1-a ) > E : 
    a1=a 
    s += a 
    a *=(-1)/((2*k+1)*(2*k+2))*(x/3)**4 
    k += 1 
print "Addition = ", s 
print "Kilkist = ", k
Результат:
она не заходит в цикл. Пробовал a1=a объявить до цикла - тогда не заходит.
3. Для одномерного массива А(n) найти произведение последних членов этого массива, сумма которых не превышает число С, введённое с клавиатуры. Обязательно использование оператора for при решении задачи. 0<=n<=40. Код:
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
import random 
 
c =(input("Input C: ")) 
n =40 
i =(n-1) 
s =0 
ns =(n-1) 
p =1. 
a =[] 
 
for x in xrange(n) : 
    a.append(x) 
print a 
print "Length of array a = ", len(a) 
while s <= c : 
    s += a[i] 
    i-=1 
print "Sum equally: ", s 
ns = i 
while i < n : 
    if not a[i]==0 : 
        p *= a 
    i+=1 
print "Addition equally: ", p
Результат:
Input C:
c = 4
Traceback (most recent call last):
p *= a
TypeError: can't multiply sequence by non-int of type 'float'
Range здесь явно не подходит, но другое пока не работает.
4. Решить, используя подпрограммы: в основной функции ввести с клавиатуры или вычислить с помощью генератора случайных чисел, в дополнительной функции вычислить скалярную величину: https://www.cyberforum.ru/cgi-bin/latex.cgi?g=\sum_{i=1}^{n}({x}_{i}+\prod_{k=1}^{n} {x}_{n+1-k}) Код:
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
import math
import random
 
n=(input("Enter the count of elements in array: "))
a=[]
s=0.
p=1
for x in xrange(n) :
    a.append(x)
print "Array is: ", a
def proizv( ) :
    k=1
    while k<=a:
        if not (x[n+1-k])==0 :
            p*=x[n+1-k]
    print "Multiplication is: ", p
    return p
def sum( ):
    i=0
    while i<a:
        s+=x[i]+p
    print "Summa: ",s
    return s
print "G = ",s
Результат:
Enter the count of elements in array: 15
Array is: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
G = 0.0
Почему не находит произведение не ясно. Вот здесь вместо xrange пишу random и он не работает. Что и говорить о предыдущем задании.
5. Значения элементов массива вычислить по формуле:https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{ij}=e^i sinj . Размер массива 7*7. Сформировать вектор из наиболее отдалённого от четвёртого столбца, причём величина расстояния задаётся формулой: https://www.cyberforum.ru/cgi-bin/latex.cgi?{d}_{j}=\sum_{i=1}^{n}\left|{a}_{ij} \right|+\left|{a}_{i,4} \right|
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import math
i=7
j=7
a=()
a=(math.exp(i)*math.sin(j)) #задаём элементы кортежа
print 'a= ', a
i=1
n=49
dj=0
while i<n :
    dj+=math.log(abs(a[i][j]))+math.log(abs(a[i][4]))
    i+=1
a1=[a[i][4]+=dj]
print 'Results are: ', a1
Говорит, кодировка не подходит. В этом задании я меньше всего уверен. Как-то очень просто получилось.
6. Дана строка символов, состоящяя из отдельных слов, отделённых пробелом. Найти слова, которые совпадают с конечным отрезком латинского алфавита (z, yz, xyz). Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
s=(input("input ryadok: "))
i=0
n=len(s)
print n
while i<n :
    if (s[i]=='z')and (s[i+1]==' ') :
        if s[i-1]=='y' :
            if s[i-2]=='x' :
                if s[i-3]==' ' :
                    print (s[i], s[i-1], s[i-2])
            elif s[i-2]==' ' :
                print (s[i], s[i-1])
        elif s[i-1]==' ' :
            print (s[i])
    i+=1
Выбивает ошибку.
7. Сведения про услуги почтовой связи: номер по порядку, вид отправлений, стоимость оплаты за пересылку наземным, воздушным транспортом, время доставки. Распечатать данные про вид отправлений «пересылка». Решить, используя подпрограммы, кортежи (структуры). Запускается, но не работает. Вынес код из функций для отладки, но тогда она зацикливается на вопросе или вообще ничего не делает.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def create():
    d={}
    k=1
    ask=1
    while not ask==0 :
        for key in d:
            s=(input("input value to key:"))
            d.update(k="s")
            print ("Do you want to append anything else? Input 1 if yes, 0 = no.")
            ask=int(input("answer: "))
    k+=1
    for key, value in d.items:
        print (key, value)
def find():
    find=(input("input key to find: "))
    print (d.get("find", 0.0))
Админ, поправьте: в первом задании должен быть только один знак "равно". В редакторе формул отображает правильно, а тут знаков "равно" прибавилось.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2015, 00:28
Ответы с готовыми решениями:

Вычислить функцию
Доброго времени суток! Помогите разобраться и написать код для решения следующей функции:

Вычислить функцию
Привет, кто поможет написать функцию?

Вычислить функцию
Вычислить функцию f=min^2(x+y/2+z/2.2x+2y-z,x*y*z)+1

11
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
01.06.2015, 01:27
1. math.cos(x*x*t) = -0.9996090532986837
https://www.cyberforum.ru/cgi-bin/latex.cgi?{n}^{3,3} = {n}^{3 + 0,3} = {n}^{3} \times {n}^{3 \times 0,1} =
https://www.cyberforum.ru/cgi-bin/latex.cgi?{n}^{3} \times  {(\sqrt[10]{n})}^{3}
, а n отрицательный…
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
01.06.2015, 12:25  [ТС]
Она должна докрутить цикл до конца. Во второй ветке учтены нули(будет их пропускать) и должны быть всё время числа. Может ли это быть ошибка в переводе из математической записи?

Добавлено через 4 минуты
Как написать, чтобы он возводил в отрицательную степень?
0
26 / 26 / 6
Регистрация: 19.10.2012
Сообщений: 131
02.06.2015, 18:01
Цитата Сообщение от Salah_Addin Посмотреть сообщение
Как написать, чтобы он возводил в отрицательную степень?
a-n = 1 \ an
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
02.06.2015, 18:16
Salah_Addin, Дело не в отрицательной степени, а отрицательном основании
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
02.06.2015, 21:43  [ТС]
Я написал задание 1 на С++ и всё идеально работает, а на python - нет. Вот код:
C++
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
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
int main()
{
    float xn, xk, step, t, y;
    cout<<"Input xn:";
    cin>>xn;
    cout<<"Input xk:";
    cin>>xk;
    cout<<"Input h(step):";
    cin>>step;
    cout<<"Input t:";
    cin>>t;
    float x=xn;
    while (x<=xk)
    {
        if (x*x<=t)
 
            y=(pow(6.3, t*x)+ pow(cos(t*pow(x,2)),3.3));
 
        else
        {
            if ((log(fabs(t+x))!=0)&&((sqrt(5*exp(-3*x)))!=0))
 
                y=(log(fabs(t+x))-1.4)/(sqrt(5*exp(-3*x)));
 
        }
        x+=step;
        printf("x= %8.8f,  z= %8.4f\n", x,y );
    }
    cout<<"raschet okonchen."<<endl;
    return 0;
}
И здесь от не жалуется на возведение в отрицательную степень. Результат:
Input xn:0.4
Input xk:6
Input h(step):0.4
Input t:9
x= 0.80000001, z= 754.4436
x= 1.20000005, z= 569184.0000
x= 1.60000002, z= 429415872.0000
x= 2.00000000, z= -nan
x= 2.40000010, z= -nan
x= 2.80000019, z= -nan
x= 3.20000029, z= 139117723009660485632.0000
x= 3.60000038, z= 59.8533
x= 4.00000048, z= 112.2541
x= 4.40000057, z= 210.1790
x= 4.80000067, z= 392.9338
x= 5.20000076, z= 733.5913
x= 5.60000086, z= 1367.8782
x= 6.00000095, z= 2547.6848
raschet okonchen.

Добавлено через 2 минуты
В чём тогда ошибка, если то же самое уравнение другой язык выполняет без нареканий?

Добавлено через 1 час 30 минут
Чуть покрутил №2, но пока она ничего не считает. Кто может сказать почему?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
E = 0.00001
s = 0.
k = 1
x =float( input("Input x: "))
a = ((-1/2.)*((x/3)**4))
a1=a
print "a = ", a
while abs( a1-a ) > E :
    s += a
    a *=(-1)/((2*k+1)*(2*k+2))*(x/3)**4
    k += 1
print "Addition = ", s
print "Kilkist = ", k
Добавлено через 1 минуту
Результат:
Input x: 9
a = -40.5
Addition = 0.0
Kilkist = 1


или
Input x: 8
a = -25.2839506173
Addition = 0.0
Kilkist = 1

Добавлено через 15 минут
В то же самое время №2 на С++. Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
#define E 0.00001
using namespace std;
int main()
{
    double l; float x, a, a1, c; int k;
    cout<<"Iput x:";
    cin>>x;
    a=((-1./2)*(pow(x/3, 4)));
    cout<<"a="<<c<<endl;
    a1=a;
    do
    {
        l+=a;
        a*=((-1)/((2*k+1)*(2*k+2)*(pow(x/3, 4))));
        k++;
    }
    while (fabs(a1-a)>E);
    cout<<"Addition: "<<l<<endl;
    cout<<"Kolichestvo: "<<k<<endl;
    return 0;
}
Результат:
Iput x:6
a=1.18935e-11
Addition: -7.7513
Kolichestvo: 3
Каким образом это выходит?

Добавлено через 1 минуту
Но это простые. Буду рад, если поможете с последними тремя.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
03.06.2015, 00:27
Цитата Сообщение от Salah_Addin Посмотреть сообщение
y=(pow(6.3, t*x)+ pow(cos(t*pow(x,2)),3.3));
Почему в Python’e так не написали?
Цитата Сообщение от Salah_Addin Посмотреть сообщение
y =(6.3**(t*x))+math.cos(x*x*t)**3.3
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
03.06.2015, 15:55  [ТС]
В python действительно есть подобная запись возведения в степень, как в С++. Но когда я её предложил, сделали замечание, что число, которое возводят и число в которое возводят то ли меняются местами, то ли нет - ясного ответа я не получил. ** - тоже обозначают возведение в степень и в этой команде всё однозначно.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
03.06.2015, 18:37
Цитата Сообщение от Salah_Addin Посмотреть сообщение
сного ответа я не получил
Доку открыть прочитать слабо?
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
03.06.2015, 23:40  [ТС]
Никогда не был противником заглянуть в документацию. Но здесь другая ситуация. Я был на паре. Время прошло. Время, которое могло быть потраченным на ту же документацию (а не сидеть по ночам), раз уж приходится всё самому (всё физически успеть не возможно). Что я оттуда вынес? Один рабочий способ возведения в степень. Для небольшой экономии ограниченного времени я им воспользовался, а иначе зачем ходить на пары? Сейчас посмотрел pow(), подкорректировал, но ошибка остаётся.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import math
print "Input x - [ 0.4, 6 ], t => 3<=t<=9 and step ( h = 0.4 )"
xn = float(input( "xn = " ))
xk = float(input( "xk = " ))
h = float(input( "step = " ))
t = float(input( "t = " ))
x = xn
while x <= xk :
    if (x*x<=t) :
        y =pow(6.3, t*x)+pow(math.cos(x*x*t),3.3)
        print ('%.8f' %y, '%.5f' %x)
    elif (math.log(abs(t+x)))!=0 :
        y =(math.log(abs(t+x))-1.4)/math.sqrt(5*math.exp(3*x))
        print ('%.8f' %y, '%.5f' %x)
    x+=h
Как сюда прикрутить 1\pow(a,n) пока не знаю, т.к. по условию не требуется возводить в отрицательную степень, она возникает только в процессе вычислений.

Добавлено через 18 минут
Не понимаю, почему она зацикливается на вводе значения к ключу, ведь должна переходить к следующему ключу только по команде пользователя:
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
def poisk() :
    p=str(input("input key to find: "))
    print (d.get(poisk, 0.0))
def create() :
    if ask>0 :
        while ask!=0 :
           # s.append(input("input value to key:"))
          # l=s
        #for key in d:
            d.update(k=s.append(input("input value to key:")))
        for x in s :
            s.pop()
            k+=1
    else :
        print "The end."
d={}
k=1
ask=1
s=[]
print ("Do you want to append anything else? Input 1 if yes, 0 = no.")
ask=int(input("answer: "))
print (create())
print (d.items)
ask2=0
print "Do you want to find something? Input 1=yes, 0=no."
ask2=int(input("input 1=yes, 0=no: "))
if ask2>0 :
    print "What do you want to find?"
    print (poisk())
else :
    print "The end."
Добавлено через 44 секунды
Это задание 7.
0
5 / 5 / 1
Регистрация: 03.10.2014
Сообщений: 76
05.06.2015, 18:12  [ТС]
Спрашивал ещё несколько человек по поводу задания 1 - никто не знает почему он не возводит в отрицательную дробную степень. Может ошибка разработчиков? Можно выводить значения по модулю, но тогда это будет не то.
В последнем задании не знаю, как остановить цикл. Переопределение переменной не помогает. Остальные задания пока в разработке.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
05.06.2015, 18:20
Цитата Сообщение от Salah_Addin Посмотреть сообщение
в отрицательную дробную степень
372 китайский: не отрицательную степень, а отрицательное основание в дробную степень
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2015, 18:20
Помогаю со студенческими работами здесь

Вычислить, вводя соответствующую функцию
Вычислить, вводя соответствующую функцию y = Tg(Tg(x))-Ctg(Ctg(x))

Вычислить функцию с исп. подпрограмм
Задание такое: в основной программе ввести с клавиатуры 10 элементов массива действительного типа, в подпрограммах - найти сумму и...

Вычислить кусочно-заданную функцию
Никак не могу решить эту задачу! Помогите пожалуйста! Срочно нужно!

Вычислить функцию y=f(x) с использованием оператора Case: перевод на Python
Задание: вычислить функцию y=f(x) с использованием оператора кейс. Проблема: не знаю как исп. оператор case в Python. Сделал на плюсах. ...

Вычислить число сочетаний из n по m, используя функцию, для вычисления факториала
Прилагаю сюда скрин. Значения m и n задаются с клавиатуры. n = int(input('Введите первое число: ')) m = int(input('Введите второе...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru