Программы по курсу "численные методы" написанные на Python
Входные данные:
A = [
["2", "-5", "-4", "3", "1", "-26", "1", "0", "0", "0", "0"],
["4", "3", "1", "-5", "2", "16", "0", "1", "0", "0", "0"],
["-2", "3", "4", "2", "-5", "23", "0", "0", "1", "0", "0"],
["2", "0", "-4", "1", "3", "-13", "0", "0", "0", "1", "0"],
["1", "3", "-5", "-7", "-2", "11", "0", "0", "0", "0", "1"]
]Вывод программы:
Исходная матрица системы:
| 2| -5| -4| 3| 1| -26| 1| 0| 0| 0| 0|
| 4| 3| 1| -5| 2| 16| 0| 1| 0| 0| 0|
| -2| 3| 4| 2| -5| 23| 0| 0| 1| 0| 0|
| 2| 0| -4| 1| 3| -13| 0| 0| 0| 1| 0|
| 1| 3| -5| -7| -2| 11| 0| 0| 0| 0| 1|
--------------------------------------------------------------------------------------------------------------------------
Решение полученное методом
Гауса-Жордана:
| 1| 0| 0| 0| 0| 1| 330/1601| 345/1601| 712/4803| 34/1601| -97/4803|
| 0| 1| 0| 0| 0| 3| -205/1601| 4/1601| 176/1601| 367/1601| 12/1601|
| 0| 0| 1| 0| 0| 2| -12/1601| 133/1601| -55/4803| -205/1601| -404/4803|
| 0| 0| 0| 1| 0| -1| 39/1601| -32/1601| 193/1601| 266/1601| -96/1601|
| 0| 0| 0| 0| 1| -2| -249/1601| -42/1601| -247/1601| 149/1601| -126/1601|
--------------------------------------------------------------------------------------------------------------------------Входные данные:
A = [
[22, 5, 10, -6, 45],
[ 5, 15, 2, -7, -18],
[10, -6, 20, 3, -71],
[ 6, -3, -7, 17, -38]
]
e = 0.000001Вывод программы:
last_x: [0, 0, 0, 0]
last_x: [2.0454545454545454, -1.2, -3.55, -2.235294117647059]
last_x: [3.322192513368984, -2.4516221033868093, -4.597433155080214, -4.630748663101604]
last_x: [3.4294522767784805, -3.855422459893048, -5.251970588235294, -5.73353255740799]
last_x: [3.745255583516829, -4.318536540618517, -5.561322992745956, -6.288633832823359]
last_x: [3.8397322560732725, -4.641604584123716, -5.774893679020465, -6.609200239539895]
last_x: [3.9228071942538123, -4.7942183732736465, -5.870967467342767, -6.787497825997296]
last_x: [3.9525354356278237, -4.89230572123764, -5.931544435209405, -6.883310032749598]
last_x: [3.9762323982629395, -4.938850569131167, -5.961462929272764, -6.936055342585041]
last_x: [3.986025003766965, -4.967374902057631, -5.979363068483063, -6.964952153051793]
last_x: [3.992763285309456, -4.981737596882084, -5.988482149543003, -6.980812718126831]
last_x: [3.995846962321794, -4.99016941028994, -5.993781014000328, -6.989480444076707]
last_x: [3.9978079330451237, -4.994535726143017, -5.996552237636372, -6.994238653106051]
last_x: [3.9987622312928415, -4.997040384113015, -5.998128886399559, -6.996842378832612]
last_x: [3.9993380232529545, -4.998363335699558, -5.998966874055434, -6.998270396758413]
last_x: [3.9996301381137105, -4.999109943030852, -5.999437452822583, -6.999052133235555]
last_x: [3.999800520180308, -4.999509381171484, -5.999690231980778, -6.999480754560759]
last_x: [3.999889304468211, -4.9997324945910195, -5.9998309612574845, -6.999715464027162]
last_x: [3.999939968243954, -4.999852856534414, -5.999907081007336, -6.999844119963806]
last_x: [3.9999668351346633, -4.9999196345967825, -5.99994922308773, -6.999914585065784]
last_x: [3.999981949703023, -4.999955854997223, -5.999972120186499, -6.999953204483084]
last_x: [3.999990056816028, -4.999975862634914, -5.999984750678215, -6.999974359089134]
last_x: [3.9999945757009963, -4.999986753089843, -5.999991633335117, -6.999985951973436]
last_x: [3.999997017589081, -4.99999275170992, -5.999995420981436, -6.999992302754196]
last_x: [3.999998370538126, -4.999996024350794, -5.999997488894387, -6.999995782796136]
решение: [3.999998370538126, -4.999996024350794, -5.999997488894387, -6.999995782796136]Входные данные:
f = lambda x: 40*(x**5)+34*(x**4)-101*(x**3)-71*(x**2)-35*x+28
lim = [0,1]
e = 0.00001Вывод программы:
интервал: [0, 1]
текущий X: 0.5
интервал: [0, 0.5]
текущий X: 0.25
интервал: [0.25, 0.5]
текущий X: 0.375
интервал: [0.375, 0.5]
текущий X: 0.4375
интервал: [0.375, 0.4375]
текущий X: 0.40625
интервал: [0.375, 0.40625]
текущий X: 0.390625
интервал: [0.375, 0.390625]
текущий X: 0.3828125
интервал: [0.375, 0.3828125]
текущий X: 0.37890625
интервал: [0.37890625, 0.3828125]
текущий X: 0.380859375
интервал: [0.37890625, 0.380859375]
текущий X: 0.3798828125
интервал: [0.37890625, 0.3798828125]
текущий X: 0.37939453125
интервал: [0.37939453125, 0.3798828125]
текущий X: 0.379638671875
интервал: [0.37939453125, 0.379638671875]
текущий X: 0.3795166015625
интервал: [0.37939453125, 0.3795166015625]
текущий X: 0.37945556640625
интервал: [0.37939453125, 0.37945556640625]
текущий X: 0.379425048828125
интервал: [0.379425048828125, 0.37945556640625]
текущий X: 0.3794403076171875
интервал: [0.379425048828125, 0.3794403076171875]
текущий X: 0.37943267822265625
интервал: [0.37943267822265625, 0.3794403076171875]
корень -> 0.3794364929199219Входные данные:
f = lambda x: E**x - 2*x -2
df = lambda x: E**x - 2
x0 = 2.4
e = 0.000001Вывод программы:
решение: 1.67834699001572Входные данные:
# Функции системы
f1 = lambda x, y: 2*x**2 - 2*x*y - 3*x - 1
f2 = lambda x, y: 2*x + 3*np.log(x+1) - 5*y**2
# Частные производные
df1x = lambda x, y: 4*x - 2*y - 3
df1y = lambda x, y: -2*x
df2x = lambda x, y: 2 + 3/(x + 1)
df2y = lambda x, y: -10*y
X1 = [3, 1]
X2 = [1, -1]
e = 0.00001Вывод программы:
Решение при X = [3, 1] --> [3.1067148534615936, 1.4457731437829973]Входные данные:
x = [-1.23, 0, 1.23, 2.46, 3.69, 4.92, 6.15, 7.38 ,8.61, 9.84, 11.07]
y = [
-0.6935, -1.2745, -1.6279, -1.7581, -0.2693, 3.1725,
4.7245, 4.8517, 3.9438, 2.8712, 0.9652
]Вывод программы:
на интервале [0,1] -> [-0.6935, -0.5648780487804879, 0.07521977658800982]
на интервале [1,2] -> [-1.2745, -0.37983739837398367, 0.07521977658800977]
на интервале [2,3] -> [-1.6279, -0.19479674796747964, 0.07231145482186518]
на интервале [3,4] -> [-1.7581, -0.016910569105691303, 0.9978187586753918]
на интервале [4,5] -> [-0.2693, 2.4377235772357726, 0.29307951616101513]
на интервале [5,6] -> [3.1725, 3.15869918699187, -1.5422037147200736]
на интервале [6,7] -> [4.7245, -0.6351219512195123, 0.6004362482649221]
на интервале [7,8] -> [4.8517, 0.8419512195121956, -1.2846189437504143]
на интервале [8,9] -> [3.9438, -2.318211382113822, 1.1757551721858688]
на интервале [9,10] -> [2.8712, 0.574146341463416, -1.7266177539824181]Графиики, построенные с помощью иодуля matplotlib. Первый график из точек по заданию, а второй с двумя добавленными:
Входные данные:
f = lambda x: np.sqrt(x**2+3)/(np.sin(x/3)+1) + np.log((x**2 + 1)/(3*x - 1))
lim = [1, 5]
h = 0.2
COUNT = 1000График производных по двум узлам, трем и четырем при 10 точках рассчета:
При увеличении количества точек рассчета графики совпадают:
Входные данные:
# Исходная функция и пределы интегрирования
f = lambda x:(x*np.cos(x) + np.sin(x))/(x+1)**2
lim = [0, 2]
COUNT = 1000Вывод программы:
Значение подученное методом Симпсона -> 0.5122281659137035График исходной функции функции:
Входные данные:
# Исходная функция и область содержащая максимум
f = lambda x: (2*(x**2)*np.cos(x/2)+(x**2)*np.sin(x/4)+3*(x+1))/(x+4)**2
lim1 = [2, 4]
h = 0.15
e = 0.00001Вывод программы:
x> 2 f> 0.4233366833711647 x-h> 1.85 x+h> 2.15 next_x>2
x> 2.332277010503782 f> 0.4308195768839531 x-h> 2.1822770105037823 x+h> 2.482277010503782 next_x>2.332277010503782
x> 2.3186005541175687 f> 0.43083282045043 x-h> 2.168600554117569 x+h> 2.4686005541175686 next_x>2.3186005541175687
x> 2.318573271627137 f> 0.43083281882214625 x-h> 2.168573271627137 x+h> 2.468573271627137 next_x>2.318573271627137
точка максимума: 2.318573236464584Входные данные:
f = lambda args: (2*args[0]**2)*(args[1] + 2) - args[0]**4 + (args[1] - 1)**2*np.cos(2*args[0] + 1) - (args[1] - 2*args[0] + 2)*np.sin(2*args[1] - 1)
dFx = lambda args: -4*args[0]**3 + 2*np.sin(2*args[1] - 1) - 2*(args[1] - 1)**2*np.sin(2*args[0] + 1) + 4*args[0]*(args[1] + 2)
dFy = lambda args: -np.sin(2*args[1] - 1) + 2*args[0]**2 + (-2 + 2*args[1])*np.cos(2*args[0] + 1) + 2*(-2 - args[1] + 2*args[0])*np.cos(2*args[1] - 1)
x_start = -1 # Начальный X
y_start = 0 # Начальный Y
e = 0.000001 # Точность
h = 0.001 # Шаг перебора лямбдыВывод программы:
min f >>>>>> -3.3846592916923894
min f >>>>>> -3.3846592916923672Изображение положения после каждой итерации двумя методами. Лекго заметить что при наискорейшем спуске минимум достигается гораздо меньшим количеством итераций, чем спуск при фиксированном значении l.
Входные данные:
f = lambda args: (args[0]**2*exp(args[0] - 1/args[0]) + args[1])/(args[0]**2)
lim = np.array([1, 9])
h = 0.4
start = np.array([1.367879])Вывод программы:
[1.36787900e+00 2.31503060e+00 3.58156155e+00 5.41213202e+00
8.15081755e+00 1.22990878e+01 1.86024804e+01 2.81777297e+01
4.27015754e+01 6.46928011e+01 9.79343588e+01 1.48105476e+02
2.23728200e+02 3.37584582e+02 5.08838064e+02 7.66208341e+02
1.15272192e+03 1.73281909e+03 2.60298430e+03 3.90764441e+03
5.86294171e+03]Входные данные:
z_ = lambda args: -args[2]/args[0]
y_ = lambda args: args[2]
lim = np.array([1, 5])
h = 0.25
start = np.array([1, 1])Вывод программы:
[1. 1.25 1.4375 1.578125 1.690625 1.784375
1.86473214 1.93504464 1.99754464 2.05379464 2.10493101 2.15180601
2.19507524 2.23525381 2.27275381 2.30791006 2.34099829 2.37224829]




