Главная страница

Программирование. Работа. Напишем программу для вычисления корня нелинейного уравнения y(х) х 2 4


Скачать 66.46 Kb.
НазваниеНапишем программу для вычисления корня нелинейного уравнения y(х) х 2 4
АнкорПрограммирование
Дата06.05.2022
Размер66.46 Kb.
Формат файлаdocx
Имя файлаРабота.docx
ТипДокументы
#514435


напишем программу для вычисления корня нелинейного уравнения

y(х) = х^2 – 4

from math import *

a = -10

b = 10

while (b-a) > 10**(-10):

c = (a+b)/2

f_a = a**2-4

f_b = b**2-4

f_c = c**2-4

if f_a*f_c > 0:

a = c

else:

b = c

print ((a+b)/2)


Перепишем программу с помощью функции:
from math import *
def funkcija(x):

f = x**2+4*x+4

return f
a = -4

b = 0

while (b-a) > 10**(-10):

c = (a+b)/2

f_a = funkcija(a)

f_b = funkcija(b)

f_c = funkcija(c)

if f_a*f_c > 0:

a = c

else:

b = c

print ((a+b)/2)


Те же самые инструкции можно переписать в виде функции Bisection, которой

передаются данные из основной программы, и которая возвращается корень уравнения с заданной точностью:

from math import *

def function(x):

f = x**2-4

return f
def Bisection(a, b, e):

while (b-a) > e:

c = (a+b)/2

f_a = function(a)

f_b = function(b)

f_c = function(c)

if f_a*f_c > 0:

a = c

else:

b = c

return ((a+b)/2)
A = -10

B = 10

E = 10**(-15)

print (Bisection(A, B, E))


В Python результатом функции может быть только одно значение. Если необходимо в качестве результата выдать значения сразу нескольких переменных, используют кортеж. Продемонстрируем это, дополнив программу вычислением количества шагов, за которые достигается значения корня с заданной точностью:
from math import *

def function(x):

f = x**2-4

return f
def Bisection(a, b, e):

n = 0

while (b-a) > e:

n = n + 1

c = (a+b)/2

f_a = function(a)

f_b = function(b)

f_c = function(c)

if f_a*f_c > 0:

a = c

else :

b = c

return ((a+b)/2, n)

A = -10

B = 10

E = 10**(-15)

print (Bisection(A, B, E))


# -*- coding: cp1251 -*-
def summa(a,b):

c = a + b

return c
num1 = int (input ('Введите первое число: '))

num2 = int (input ('Введите второе число: '))

print('Сумма = ',summa(num1 , num2))


Задания

1. Реализовать примеры определения функций, листинг которых приведен в
теоретической части.

2. Вычислить значение выражения y(х) в точке х, значение которой ввести с
клавиатуры. Выражение задать функцией. Варианты приведены в таблице 1 (номер варианта согласовать с преподавателем).
# -*- coding: cp1251 -*-

# вариант 15

def f(x):

y = x**3-12*x

return y
x = int (input ('Введите x: '))

print('y = x**3-12*x = ',f(x),' при х = ',x)

3. Вычислить значение выражения y(х,у) в точке (х, у) значение которой ввести с клавиатуры. Выражение задать функцией. Варианты приведены в таблице 2 (номер варианта согласовать с преподавателем).
# -*- coding: cp1251 -*-

# вариант 1

import math

def z1(x,y):

y = -math.cos(x+1)+2*y

return y
def z2(x,y):

y = x+math.sin(y)+0.4

return y
x = float(input ('Введите x: '))

y = float(input ('Введите y: '))

print('z1= -cos(x+1)+2*y = %.3f при х = %.3f и y = %.3f' % (z1(x,y),x,y))

print('z2 = x+sin(y)+0.4 = %.3f при х = %.3f и y = %.3f' % (z2(x,y),x,y))

4. Решить задачу, определив дополнительно функцию. Варианты приведены

таблице 3 (номер варианта согласовать с преподавателем)
Составить программу для нахождения общего количества заданной буквы в трех заданных предложениях. (Определить функцию для расчета количества некоторой буквы в предложении).
# -*- coding: cp1251 -*-

# вариант 15

import math

import random
def num_symbol(x,a):

return x.count(a)
find_symbol='е'

a = 'Составить программу для нахождения общего количества заданной буквы в трех заданных предложениях'

b = 'Определить функцию для расчета количества некоторой буквы в предложении'

c = 'Дан список целых чисел'

print('Имеем предложения')

print(a)

print(b)

print(c)

print()

print('Ищем букву ',find_symbol)

print('Число вхождений = ',num_symbol(a,find_symbol) + num_symbol(a,find_symbol) + num_symbol(a,find_symbol))

5. Дан список целых чисел. Написать функцию, возвращающую... (продолжение условия по варианту в таблице 4). Реализовать двумя способами: 1- функция принимает на вход список, 2- функция принимает на вход переменное число параметров.

Вариант 15

стандартное отклонение и максимальное по модулю значение
# -*- coding: cp1251 -*-

# вариант 15

#import math

import numpy as np

import statistics
def my_func(nums):

my_max=nums[0]

for x in nums:

if abs(x) > abs(my_max):

my_max=x

return (statistics.stdev(a),my_max)

def my_func_1(*args):

m=max(*args, key=lambda i: abs(int(i)))

n=statistics.stdev(*args)

return (n,m)
n=10;

a = np.random.randint(-100, 50,10)

print(a)

print(my_func(a))

print(my_func_1(a))

6. Написать рекурсивную процедуру перевода натурального числа из десятичной системы счисления в (N-ричную. Значение N в основной программе вводится с клавиатуры (2< = N< = 16).

# -*- coding: cp1251 -*-
def conv(n,r):

if n
return "0123456789ABCDEF"[n]

else:

k=n%r

return conv(n//r,r)+"0123456789ABCDEF"[k]
n=255

r=16

print('в ',r,'системе число ',n,'(10) есть ',conv(n,r))

7. Написать рекурсивную функцию, определяющую, является ли заданное натуральное число простым (простым называется натуральное число, большее 1, не имеющее других делителей, кроме единицы и самого себя)

# -*- coding: cp1251 -*-
def isPrime(num, ans = 2):

if num < ans*ans:

return True

if num % ans == 0:

return False

return isPrime(num, ans + 1)

n = int(input("Введите число: "))

if isPrime(n):

print('Число ',n,' простое')

else:

print('Число ',n,' не простое')




8. Дан список вещественных чисел. Используя lambda-функцию и функцию mар выведите список остатков от деления этих чисел на 7.

# -*- coding: cp1251 -*-
import numpy as np
n=10;
a = np.random.randint(1, 20,n)

b = list(map(lambda x: x%7, a))
print('Исходный список чисел')

print(a)

print('Список остатков от деления чисел на 7')

print(b)

9. Дан список имен детей: ['катя', 'маша', 'таня', 'саша']. Сделайте так, чтобы имена начинались с заглавной буквы.
# -*- coding: cp1251 -*-
a = ['катя', 'маша', 'таня', 'саша']

b = list(map(lambda x: x.title(), a))
print('Исходный список')

print(a)

print('Конечный список')

print(b)

10. Попробуйте переписать следующий код через mар и lambda-функцию. Он
принимает список реальных имён и заменяет их прозвищами, используя надёжный метод.
# -*- coding: cp1251 -*-
a = ['Маша', 'Петя', 'Вася','Таня']

b = list(map(lambda x: hash(x), a))

print('Исходный список')

print(a)

print('Конечный список')

print(b)

11. Следующий пример считает, как часто слово «сети» встречается в списке строк:

Перепишите этот же код с использованием reduce и lambda-функции.
# -*- coding: cp1251 -*-
from functools import reduce
sentences = ['научиться плести рыболовные сети',

'обучать нейронные сети',

'паук ловит в сети мух']
print ('число вхождений = ',reduce(lambda a,x: a+x.count('сети'),sentences,0))

12. Дан список натуральных чисел. Вывести список чисел, кратных 7, используя lambda-функцию и filter.
# -*- coding: cp1251 -*-
my_list = [12, 65, 49, 39, 102, 14, 221, 50, 70]

result = list(filter(lambda x: (x % 7 == 0), my_list))

print ('Список чисел, кратных 7 = ',result)

13. Дано три списка: 1- имена абитуриентов, 2 - баллы за ЕГЭ по математике, 3- баллы за ЕГЭ по русскому, 4 - баллы за ЕГЭ по информатике. Составить список в формате: [('Василий Акимович Кузнецов',85,42,65), ('Петр Николаевич Чириков',79,49,78),...].
list_family = ['Василий Акимович Кузнецов', 'Петр Николаевич Чириков','Иван Петрович Судаков','Ирина Николаевна Прохорова']

list_ball_1 = [85,42,65,76]

list_ball_2 = [22,23,24,25]

list_ball_3 = [44,45,46,47]
result = list(zip(list_family, list_ball_1, list_ball_2,list_ball_3))

print(result)

print()

for row in result:

for elem in row:

print(elem)


написать администратору сайта