Python для биоинформатики: расчет по правилу Крамера
Расчет по правилу Крамера
У нас есть домашнее задание по алгебре, которое включает в себя использование правила Крамера для решения не только систем 2 x 2, но и 3 x 3. Это кажется глупым, так как этот метод является излишним для 2 x 2 и никогда не будет использоваться для 4 x 4 или больше.
(Обратите внимание на статью в Википедии, начните примерно с середины, где написано «Явные формулы для малых систем».) правило, довольно простое. Речь идет о том, чтобы усложнить простую задачу, впихнув в нее много арифметических операций. И для меня это симптом больших трудностей с математическим образованием, поскольку я сталкиваюсь с этим через своего сына. Компьютеры гораздо лучше умеют считать, чем люди. Просто глупо мучить студентов арифметикой. Если вы хотите сделать что-то сложное, почему бы не вывести правило Крамера?
Итак, я решил написать решатель для систем 3 x 3 на Python. Я бы не сказал, что он еще полностью отлажен, поэтому дайте мне знать, если у вас возникнут проблемы. В показанном примере я получил тот же ответ, что и этот онлайн-калькулятор.
Первый сегмент кода содержит уравнения, явно введенные в виде массива. Я уверен, что вы знаете, как изменить его для чтения ввода из файла.
test.py
импортировать numpy как np |
Вывод выглядит следующим образом:
1
> Python test.py
решить
[[ 2 3 0 5]
[ 1 1 1 3]
[ 2 -1 3 7]]вычислить 3 x 3 det
[[ 2 3 0]
[ 1 1 1]
[ 2 - 1 3]]
D = 5вычислить 3 x 3 det из
[[ 5 3 0]
[ 3 1 1]
[ 7 -1 3]]
Dx = 14вычислить 3 x 3 det из
[[2 5 0]
[1 3 1]
[2 7 3]]
Dy = -1вычислить 3 x 3 det от
[[ 2 3 5]
[ 1 1 3]
[ 2 -1 7]]
Dz = 2решение
x = 2,8
y = -0,2
z = 0,4проверка
ряд 0 = [2 3 0 5]
2,0*2,8 + 3,0*-0,2 + 0,0*0,4 = 5,0ряд 1 = [1 1 1 3] 1
1
*2,8 + 1,0*-0,2 + 1,0*0,4 = 3,0ряд 2 = [2 -1 3 7]
2,0*2,8 + -1,0*-0,2 + 3,0*0,4 = 7,0
6 . py
import numpy as np |