Как решать уравнения с помощью python
Перейти к содержимому

Как решать уравнения с помощью python

  • автор:

Найти корни квадратного уравнения

Таким образом, программа для нахождения корней квадратного уравнения должна иметь три ветви условного оператора.

Функция float преобразует переданный ей аргумент в вещественное число.

import math print("Введите коэффициенты для уравнения") print("ax^2 + bx + c = 0:") a = float(input("a = ")) b = float(input("b = ")) c = float(input("c = ")) discr = b ** 2 - 4 * a * c print("Дискриминант D = %.2f" % discr) if discr > 0: x1 = (-b + math.sqrt(discr)) / (2 * a) x2 = (-b - math.sqrt(discr)) / (2 * a) print("x1 = %.2f \nx2 = %.2f" % (x1, x2)) elif discr == 0: x = -b / (2 * a) print("x = %.2f" % x) else: print("Корней нет")

Примеры выполнения кода:

Введите коэффициенты для уравнения ax^2 + bx + c = 0: a = 2 b = 4 c = 2 Дискриминант D = 0.00 x = -1.00
Введите коэффициенты для уравнения ax^2 + bx + c = 0: a = 3.2 b = -7.8 c = 1 Дискриминант D = 48.04 x1 = 2.30 x2 = 0.14
Введите коэффициенты для уравнения ax^2 + bx + c = 0: a = 8 b = 4 c = 2 Дискриминант D = -48.00 Корней нет

Обратите внимание, что для данной программы коэффициент a не должен быть равен нулю. Иначе в теле условного оператора будет происходить попытка деления на 0, что приведет к аварийному завершению программы.

Если a = 0, то квадратное уравнение превращается в линейное, которое решается иным способом. Оно всегда имеет один корень.

X Скрыть Наверх

Решение задач на Python

Решение уравнений методом перебора

Напишите программу, которая находит все решения заданного вам уравнения на интервале [-5; 5]. Программа должна выполнить следующие действия:
Определяет и выводит на экран интервалы, на которых расположены корни уравнения.
На каждом интервале, используя метод перебора, ищет решение с точностью 0,001 и выводит полученные решения на экран.
Вычисление функции, стоящей в левой части уравнения, оформите в виде подпрограммы.
Уровень B. Составить две программы (можно одну), одна из которых выделяет все интервалы, на которых находятся корни, а вторая запрашивает левую границу очередного интервала и выводит найденный корень уравнения.

ГЛАВНОЕ, ЧТОБЫ РАБОТАЛО СЛЕДУЮЩИЕ:
*Программа может быть не универсальной, можно не вводить уравнение, а уже работать с этим!
*

Уровнение:
x * x * x + 2 * x * x — 8 * x + 1 + 2 * math.sin(x) + 15 * math.cos(x)
Корни:
-3.123 1.493 2.638

Я смог сделать только это, но и то корни выводит неверно.

Python:
import math

def f(x):
return x * x * x + 2 * x * x — 8 * x + 1 + 2 * math.sin(x) + 15 * math.cos(x)

a = -5
b = 5
delta = 0.001
h = 0.05
x = a
while x if f(x) * f(x * delta) print(x + delta / 2)
x += h

Как решить простое уравнение Python

Если нужен только результат, т.е. найти значение переменной x , но не показывать шаги решения, то это легко делается при помощи модуля SymPy:

from sympy import symbols, solve, parse_expr, simplify from sympy.parsing.sympy_parser import standard_transformations, implicit_multiplication_application transformations = (standard_transformations + (implicit_multiplication_application,)) formula = "x(4x+22)-(3x+44)^2=0" def map_operations(formula_str): return formula_str.replace("^", "**").replace("=", "-") f = parse_expr(map_operations(formula), transformations=transformations) roots = solve(f) #  
[-121/5 - 11*sqrt(41)/5, -121/5 + 11*sqrt(41)/5] 

также модуль SymPy умеет аналитически упрощать выражения:

In [7]: simplify(f) Out[7]: -5*x**2 - 242*x - 1936 In [8]: simplify(parse_expr("(x-1) * (x+1)")) Out[8]: x**2 - 1 

Как решить систему уравнений в Python (3 примера)

Чтобы решить систему уравнений в Python, мы можем использовать функции из библиотеки NumPy .

В следующих примерах показано, как использовать NumPy для решения нескольких различных систем уравнений в Python.

Пример 1. Решение системы уравнений с двумя переменными

Предположим, у нас есть следующая система уравнений, и мы хотели бы найти значения x и y:

В следующем коде показано, как использовать NumPy для поиска значений x и y:

import numpy as np #define left-hand side of equation left_side = np.array([[5, 4], [2, 6]]) #define right-hand side of equation right_side = np.array([35, 36]) #solve for x and y np.linalg.inv (left_side). dot (right_side) array([3., 5.]) 

Это говорит нам о том, что значение x равно 3 , а значение y равно 5 .

Пример 2. Решение системы уравнений с тремя переменными

Предположим, у нас есть следующая система уравнений, и мы хотели бы найти значения x, y и z:

В следующем коде показано, как использовать NumPy для определения значений x, y и z:

import numpy as np #define left-hand side of equation left_side = np.array([[4, 2, 1], [3, 5, -2], [2, 2, 4]]) #define right-hand side of equation right_side = np.array([34, 41, 30]) #solve for x, y, and z np.linalg.inv (left_side). dot (right_side) array([5., 6., 2.]) 

Это говорит нам о том, что значение x равно 5 , значение y равно 6 , а значение z равно 2 .

Пример 3. Решение системы уравнений с четырьмя переменными

Предположим, у нас есть следующая система уравнений, и мы хотели бы найти значения w, x, y и z:

6ш + 2х + 2у + 1з = 37

2ш + 1х + 1у + 0з = 14

3ш + 2х + 2у + 4з = 28

2ш + 0х + 5у + 5з = 28

В следующем коде показано, как использовать NumPy для определения значений w, x, y и z:

import numpy as np #define left-hand side of equation left_side = np.array([[6, 2, 2, 1], [2, 1, 1, 0], [3, 2, 2, 4], [2, 0, 5, 5]]) #define right-hand side of equation right_side = np.array([37, 14, 28, 28]) #solve for w, x, y, and z np.linalg.inv (left_side). dot (right_side) array([4., 3., 3., 1.]) 

Это говорит нам о том, что значение w равно 4 , x равно 3 , y равно 3 и z равно 1 .

Дополнительные ресурсы

В следующих руководствах объясняется, как решить систему уравнений с помощью другого статистического программного обеспечения:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *