You are on page 1of 19

In [27]:

import numpy as np

Problem 1 Newton's Method for Matrices

Newton's Method Algorithm

In [28]:

#Define Newton's method function for matrix


def NewtonsMethod(x0, epsilon):
#Define f(x)
def f(x):
f = np.array([x[1] * np.sin(x[0]),
np.square(x[0]) + x[1] - x[2],
x[1] + x[2]])
return f
#Define the jacobian matrix
def jf(x):
df = np.array([[x[1] * np.cos(x[0]), np.sin(x[0]), 0],
[2*x[0], 1, -1],
[0, 1, 1]])
return df
#Initialize iteration
iterations = 0
#Compute f(x) and Norm
fx0 = f(x0)
fn = np.linalg.norm(fx0, ord=2)
jx0 = f(x0)
#While root not reached
while np.absolute(fn) > epsilon:
#Newton's Algorithms
x1 = x0 - np.dot(fx0, jx0)
#Update Variables
x0 = x1
#Update Iterations
iterations += 1
#Print statements
print('In iteration ' + str(iterations) +', root is: ' + str(x0))
#Update Variables
fx0 = f(x0)
fn = np.linalg.norm(fx0, ord=2)
jx0 = f(x0)
print('Got the answer in iteration: ' + str(iterations))
print('Answer is: ' + str(x0))
In [29]:

x1 = [0.1, 0.1, 0.1]


NewtonsMethod(x1, 0.001)

In iteration 1, root is: [0.05980033 0.05980033 0.05980033]


In iteration 2, root is: [0.04547045 0.04547045 0.04547045]
In iteration 3, root is: [0.03719166 0.03719166 0.03719166]
In iteration 4, root is: [0.03165495 0.03165495 0.03165495]
In iteration 5, root is: [0.0276448 0.0276448 0.0276448]
In iteration 6, root is: [0.02458669 0.02458669 0.02458669]
In iteration 7, root is: [0.02216794 0.02216794 0.02216794]
In iteration 8, root is: [0.02020179 0.02020179 0.02020179]
In iteration 9, root is: [0.01856901 0.01856901 0.01856901]
In iteration 10, root is: [0.01718954 0.01718954 0.01718954]
In iteration 11, root is: [0.01600744 0.01600744 0.01600744]
In iteration 12, root is: [0.01498236 0.01498236 0.01498236]
In iteration 13, root is: [0.01408437 0.01408437 0.01408437]
In iteration 14, root is: [0.01329082 0.01329082 0.01329082]
In iteration 15, root is: [0.01258417 0.01258417 0.01258417]
In iteration 16, root is: [0.01195067 0.01195067 0.01195067]
In iteration 17, root is: [0.01137936 0.01137936 0.01137936]
In iteration 18, root is: [0.01086137 0.01086137 0.01086137]
In iteration 19, root is: [0.01038946 0.01038946 0.01038946]
In iteration 20, root is: [0.00995767 0.00995767 0.00995767]
In iteration 21, root is: [0.00956103 0.00956103 0.00956103]
In iteration 22, root is: [0.00919536 0.00919536 0.00919536]
In iteration 23, root is: [0.00885713 0.00885713 0.00885713]
In iteration 24, root is: [0.00854332 0.00854332 0.00854332]
In iteration 25, root is: [0.00825136 0.00825136 0.00825136]
In iteration 26, root is: [0.00797901 0.00797901 0.00797901]
In iteration 27, root is: [0.00772434 0.00772434 0.00772434]
In iteration 28, root is: [0.00748567 0.00748567 0.00748567]
In iteration 29, root is: [0.00726153 0.00726153 0.00726153]
In iteration 30, root is: [0.0070506 0.0070506 0.0070506]
In iteration 31, root is: [0.00685175 0.00685175 0.00685175]
In iteration 32, root is: [0.00666396 0.00666396 0.00666396]
In iteration 33, root is: [0.00648633 0.00648633 0.00648633]
In iteration 34, root is: [0.00631803 0.00631803 0.00631803]
In iteration 35, root is: [0.00615836 0.00615836 0.00615836]
In iteration 36, root is: [0.00600665 0.00600665 0.00600665]
In iteration 37, root is: [0.00586233 0.00586233 0.00586233]
In iteration 38, root is: [0.00572486 0.00572486 0.00572486]
In iteration 39, root is: [0.00559376 0.00559376 0.00559376]
In iteration 40, root is: [0.0054686 0.0054686 0.0054686]
In iteration 41, root is: [0.00534898 0.00534898 0.00534898]
In iteration 42, root is: [0.00523453 0.00523453 0.00523453]
In iteration 43, root is: [0.00512493 0.00512493 0.00512493]
In iteration 44, root is: [0.00501987 0.00501987 0.00501987]
In iteration 45, root is: [0.00491907 0.00491907 0.00491907]
In iteration 46, root is: [0.00482228 0.00482228 0.00482228]
In iteration 47, root is: [0.00472926 0.00472926 0.00472926]
In iteration 48, root is: [0.00463979 0.00463979 0.00463979]
In iteration 49, root is: [0.00455368 0.00455368 0.00455368]
In iteration 50, root is: [0.00447074 0.00447074 0.00447074]
In iteration 51, root is: [0.00439079 0.00439079 0.00439079]
In iteration 52, root is: [0.00431367 0.00431367 0.00431367]
In iteration 53, root is: [0.00423924 0.00423924 0.00423924]
In iteration 54, root is: [0.00416735 0.00416735 0.00416735]
In iteration 55, root is: [0.00409789 0.00409789 0.00409789]
In iteration 56, root is: [0.00403071 0.00403071 0.00403071]
In iteration 57, root is: [0.00396573 0.00396573 0.00396573]
In iteration 58, root is: [0.00390282 0.00390282 0.00390282]
In iteration 59, root is: [0.00384189 0.00384189 0.00384189]
In iteration 60, root is: [0.00378285 0.00378285 0.00378285]
In iteration 61, root is: [0.00372561 0.00372561 0.00372561]
In iteration 62, root is: [0.00367009 0.00367009 0.00367009]
In iteration 63, root is: [0.00361621 0.00361621 0.00361621]
In iteration 64, root is: [0.0035639 0.0035639 0.0035639]
In iteration 65, root is: [0.0035131 0.0035131 0.0035131]
In iteration 66, root is: [0.00346373 0.00346373 0.00346373]
In iteration 67, root is: [0.00341574 0.00341574 0.00341574]
In iteration 68, root is: [0.00336907 0.00336907 0.00336907]
In iteration 69, root is: [0.00332367 0.00332367 0.00332367]
In iteration 70, root is: [0.00327948 0.00327948 0.00327948]
In iteration 71, root is: [0.00323646 0.00323646 0.00323646]
In iteration 72, root is: [0.00319456 0.00319456 0.00319456]
In iteration 73, root is: [0.00315374 0.00315374 0.00315374]
In iteration 74, root is: [0.00311395 0.00311395 0.00311395]
In iteration 75, root is: [0.00307517 0.00307517 0.00307517]
In iteration 76, root is: [0.00303734 0.00303734 0.00303734]
In iteration 77, root is: [0.00300044 0.00300044 0.00300044]
In iteration 78, root is: [0.00296443 0.00296443 0.00296443]
In iteration 79, root is: [0.00292928 0.00292928 0.00292928]
In iteration 80, root is: [0.00289495 0.00289495 0.00289495]
In iteration 81, root is: [0.00286143 0.00286143 0.00286143]
In iteration 82, root is: [0.00282868 0.00282868 0.00282868]
In iteration 83, root is: [0.00279667 0.00279667 0.00279667]
In iteration 84, root is: [0.00276539 0.00276539 0.00276539]
In iteration 85, root is: [0.0027348 0.0027348 0.0027348]
In iteration 86, root is: [0.00270488 0.00270488 0.00270488]
In iteration 87, root is: [0.00267562 0.00267562 0.00267562]
In iteration 88, root is: [0.00264698 0.00264698 0.00264698]
In iteration 89, root is: [0.00261895 0.00261895 0.00261895]
In iteration 90, root is: [0.00259152 0.00259152 0.00259152]
In iteration 91, root is: [0.00256465 0.00256465 0.00256465]
In iteration 92, root is: [0.00253834 0.00253834 0.00253834]
In iteration 93, root is: [0.00251257 0.00251257 0.00251257]
In iteration 94, root is: [0.00248732 0.00248732 0.00248732]
In iteration 95, root is: [0.00246257 0.00246257 0.00246257]
In iteration 96, root is: [0.00243831 0.00243831 0.00243831]
In iteration 97, root is: [0.00241453 0.00241453 0.00241453]
In iteration 98, root is: [0.00239121 0.00239121 0.00239121]
In iteration 99, root is: [0.00236834 0.00236834 0.00236834]
In iteration 100, root is: [0.00234591 0.00234591 0.00234591]
In iteration 101, root is: [0.00232389 0.00232389 0.00232389]
In iteration 102, root is: [0.00230229 0.00230229 0.00230229]
In iteration 103, root is: [0.00228109 0.00228109 0.00228109]
In iteration 104, root is: [0.00226027 0.00226027 0.00226027]
In iteration 105, root is: [0.00223984 0.00223984 0.00223984]
In iteration 106, root is: [0.00221977 0.00221977 0.00221977]
In iteration 107, root is: [0.00220006 0.00220006 0.00220006]
In iteration 108, root is: [0.0021807 0.0021807 0.0021807]
In iteration 109, root is: [0.00216168 0.00216168 0.00216168]
In iteration 110, root is: [0.00214299 0.00214299 0.00214299]
In iteration 111, root is: [0.00212462 0.00212462 0.00212462]
In iteration 112, root is: [0.00210656 0.00210656 0.00210656]
In iteration 113, root is: [0.00208881 0.00208881 0.00208881]
In iteration 114, root is: [0.00207136 0.00207136 0.00207136]
In iteration 115, root is: [0.0020542 0.0020542 0.0020542]
In iteration 116, root is: [0.00203732 0.00203732 0.00203732]
In iteration 117, root is: [0.00202072 0.00202072 0.00202072]
In iteration 118, root is: [0.00200438 0.00200438 0.00200438]
In iteration 119, root is: [0.00198831 0.00198831 0.00198831]
In iteration 120, root is: [0.0019725 0.0019725 0.0019725]
In iteration 121, root is: [0.00195694 0.00195694 0.00195694]
In iteration 122, root is: [0.00194162 0.00194162 0.00194162]
In iteration 123, root is: [0.00192654 0.00192654 0.00192654]
In iteration 124, root is: [0.00191169 0.00191169 0.00191169]
In iteration 125, root is: [0.00189707 0.00189707 0.00189707]
In iteration 126, root is: [0.00188268 0.00188268 0.00188268]
In iteration 127, root is: [0.0018685 0.0018685 0.0018685]
In iteration 128, root is: [0.00185453 0.00185453 0.00185453]
In iteration 129, root is: [0.00184078 0.00184078 0.00184078]
In iteration 130, root is: [0.00182722 0.00182722 0.00182722]
In iteration 131, root is: [0.00181387 0.00181387 0.00181387]
In iteration 132, root is: [0.00180071 0.00180071 0.00180071]
In iteration 133, root is: [0.00178774 0.00178774 0.00178774]
In iteration 134, root is: [0.00177495 0.00177495 0.00177495]
In iteration 135, root is: [0.00176235 0.00176235 0.00176235]
In iteration 136, root is: [0.00174993 0.00174993 0.00174993]
In iteration 137, root is: [0.00173768 0.00173768 0.00173768]
In iteration 138, root is: [0.0017256 0.0017256 0.0017256]
In iteration 139, root is: [0.00171369 0.00171369 0.00171369]
In iteration 140, root is: [0.00170194 0.00170194 0.00170194]
In iteration 141, root is: [0.00169036 0.00169036 0.00169036]
In iteration 142, root is: [0.00167893 0.00167893 0.00167893]
In iteration 143, root is: [0.00166765 0.00166765 0.00166765]
In iteration 144, root is: [0.00165653 0.00165653 0.00165653]
In iteration 145, root is: [0.00164555 0.00164555 0.00164555]
In iteration 146, root is: [0.00163472 0.00163472 0.00163472]
In iteration 147, root is: [0.00162403 0.00162403 0.00162403]
In iteration 148, root is: [0.00161348 0.00161348 0.00161348]
In iteration 149, root is: [0.00160307 0.00160307 0.00160307]
In iteration 150, root is: [0.00159279 0.00159279 0.00159279]
In iteration 151, root is: [0.00158264 0.00158264 0.00158264]
In iteration 152, root is: [0.00157262 0.00157262 0.00157262]
In iteration 153, root is: [0.00156273 0.00156273 0.00156273]
In iteration 154, root is: [0.00155296 0.00155296 0.00155296]
In iteration 155, root is: [0.00154331 0.00154331 0.00154331]
In iteration 156, root is: [0.00153379 0.00153379 0.00153379]
In iteration 157, root is: [0.00152438 0.00152438 0.00152438]
In iteration 158, root is: [0.00151508 0.00151508 0.00151508]
In iteration 159, root is: [0.0015059 0.0015059 0.0015059]
In iteration 160, root is: [0.00149683 0.00149683 0.00149683]
In iteration 161, root is: [0.00148787 0.00148787 0.00148787]
In iteration 162, root is: [0.00147901 0.00147901 0.00147901]
In iteration 163, root is: [0.00147026 0.00147026 0.00147026]
In iteration 164, root is: [0.00146161 0.00146161 0.00146161]
In iteration 165, root is: [0.00145307 0.00145307 0.00145307]
In iteration 166, root is: [0.00144462 0.00144462 0.00144462]
In iteration 167, root is: [0.00143628 0.00143628 0.00143628]
In iteration 168, root is: [0.00142802 0.00142802 0.00142802]
In iteration 169, root is: [0.00141987 0.00141987 0.00141987]
In iteration 170, root is: [0.0014118 0.0014118 0.0014118]
In iteration 171, root is: [0.00140383 0.00140383 0.00140383]
In iteration 172, root is: [0.00139595 0.00139595 0.00139595]
In iteration 173, root is: [0.00138815 0.00138815 0.00138815]
In iteration 174, root is: [0.00138045 0.00138045 0.00138045]
In iteration 175, root is: [0.00137282 0.00137282 0.00137282]
In iteration 176, root is: [0.00136528 0.00136528 0.00136528]
In iteration 177, root is: [0.00135783 0.00135783 0.00135783]
In iteration 178, root is: [0.00135045 0.00135045 0.00135045]
In iteration 179, root is: [0.00134316 0.00134316 0.00134316]
In iteration 180, root is: [0.00133594 0.00133594 0.00133594]
In iteration 181, root is: [0.0013288 0.0013288 0.0013288]
In iteration 182, root is: [0.00132174 0.00132174 0.00132174]
In iteration 183, root is: [0.00131475 0.00131475 0.00131475]
In iteration 184, root is: [0.00130784 0.00130784 0.00130784]
In iteration 185, root is: [0.001301 0.001301 0.001301]
In iteration 186, root is: [0.00129423 0.00129423 0.00129423]
In iteration 187, root is: [0.00128753 0.00128753 0.00128753]
In iteration 188, root is: [0.00128089 0.00128089 0.00128089]
In iteration 189, root is: [0.00127433 0.00127433 0.00127433]
In iteration 190, root is: [0.00126784 0.00126784 0.00126784]
In iteration 191, root is: [0.00126141 0.00126141 0.00126141]
In iteration 192, root is: [0.00125504 0.00125504 0.00125504]
In iteration 193, root is: [0.00124874 0.00124874 0.00124874]
In iteration 194, root is: [0.0012425 0.0012425 0.0012425]
In iteration 195, root is: [0.00123633 0.00123633 0.00123633]
In iteration 196, root is: [0.00123021 0.00123021 0.00123021]
In iteration 197, root is: [0.00122416 0.00122416 0.00122416]
In iteration 198, root is: [0.00121817 0.00121817 0.00121817]
In iteration 199, root is: [0.00121223 0.00121223 0.00121223]
In iteration 200, root is: [0.00120635 0.00120635 0.00120635]
In iteration 201, root is: [0.00120053 0.00120053 0.00120053]
In iteration 202, root is: [0.00119477 0.00119477 0.00119477]
In iteration 203, root is: [0.00118906 0.00118906 0.00118906]
In iteration 204, root is: [0.0011834 0.0011834 0.0011834]
In iteration 205, root is: [0.0011778 0.0011778 0.0011778]
In iteration 206, root is: [0.00117225 0.00117225 0.00117225]
In iteration 207, root is: [0.00116675 0.00116675 0.00116675]
In iteration 208, root is: [0.00116131 0.00116131 0.00116131]
In iteration 209, root is: [0.00115591 0.00115591 0.00115591]
In iteration 210, root is: [0.00115057 0.00115057 0.00115057]
In iteration 211, root is: [0.00114527 0.00114527 0.00114527]
In iteration 212, root is: [0.00114003 0.00114003 0.00114003]
In iteration 213, root is: [0.00113483 0.00113483 0.00113483]
In iteration 214, root is: [0.00112968 0.00112968 0.00112968]
In iteration 215, root is: [0.00112457 0.00112457 0.00112457]
In iteration 216, root is: [0.00111951 0.00111951 0.00111951]
In iteration 217, root is: [0.0011145 0.0011145 0.0011145]
In iteration 218, root is: [0.00110953 0.00110953 0.00110953]
In iteration 219, root is: [0.00110461 0.00110461 0.00110461]
In iteration 220, root is: [0.00109973 0.00109973 0.00109973]
In iteration 221, root is: [0.00109489 0.00109489 0.00109489]
In iteration 222, root is: [0.0010901 0.0010901 0.0010901]
In iteration 223, root is: [0.00108534 0.00108534 0.00108534]
In iteration 224, root is: [0.00108063 0.00108063 0.00108063]
In iteration 225, root is: [0.00107596 0.00107596 0.00107596]
In iteration 226, root is: [0.00107133 0.00107133 0.00107133]
In iteration 227, root is: [0.00106674 0.00106674 0.00106674]
In iteration 228, root is: [0.00106219 0.00106219 0.00106219]
In iteration 229, root is: [0.00105767 0.00105767 0.00105767]
In iteration 230, root is: [0.0010532 0.0010532 0.0010532]
In iteration 231, root is: [0.00104876 0.00104876 0.00104876]
In iteration 232, root is: [0.00104436 0.00104436 0.00104436]
In iteration 233, root is: [0.00104 0.00104 0.00104]
In iteration 234, root is: [0.00103567 0.00103567 0.00103567]
In iteration 235, root is: [0.00103138 0.00103138 0.00103138]
In iteration 236, root is: [0.00102713 0.00102713 0.00102713]
In iteration 237, root is: [0.00102291 0.00102291 0.00102291]
In iteration 238, root is: [0.00101872 0.00101872 0.00101872]
In iteration 239, root is: [0.00101457 0.00101457 0.00101457]
In iteration 240, root is: [0.00101045 0.00101045 0.00101045]
In iteration 241, root is: [0.00100637 0.00100637 0.00100637]
In iteration 242, root is: [0.00100232 0.00100232 0.00100232]
In iteration 243, root is: [0.0009983 0.0009983 0.0009983]
In iteration 244, root is: [0.00099431 0.00099431 0.00099431]
In iteration 245, root is: [0.00099036 0.00099036 0.00099036]
In iteration 246, root is: [0.00098643 0.00098643 0.00098643]
In iteration 247, root is: [0.00098254 0.00098254 0.00098254]
In iteration 248, root is: [0.00097868 0.00097868 0.00097868]
In iteration 249, root is: [0.00097485 0.00097485 0.00097485]
In iteration 250, root is: [0.00097105 0.00097105 0.00097105]
In iteration 251, root is: [0.00096728 0.00096728 0.00096728]
In iteration 252, root is: [0.00096353 0.00096353 0.00096353]
In iteration 253, root is: [0.00095982 0.00095982 0.00095982]
In iteration 254, root is: [0.00095614 0.00095614 0.00095614]
In iteration 255, root is: [0.00095248 0.00095248 0.00095248]
In iteration 256, root is: [0.00094885 0.00094885 0.00094885]
In iteration 257, root is: [0.00094525 0.00094525 0.00094525]
In iteration 258, root is: [0.00094167 0.00094167 0.00094167]
In iteration 259, root is: [0.00093813 0.00093813 0.00093813]
In iteration 260, root is: [0.00093461 0.00093461 0.00093461]
In iteration 261, root is: [0.00093111 0.00093111 0.00093111]
In iteration 262, root is: [0.00092765 0.00092765 0.00092765]
In iteration 263, root is: [0.0009242 0.0009242 0.0009242]
In iteration 264, root is: [0.00092079 0.00092079 0.00092079]
In iteration 265, root is: [0.0009174 0.0009174 0.0009174]
In iteration 266, root is: [0.00091403 0.00091403 0.00091403]
In iteration 267, root is: [0.00091069 0.00091069 0.00091069]
In iteration 268, root is: [0.00090737 0.00090737 0.00090737]
In iteration 269, root is: [0.00090408 0.00090408 0.00090408]
In iteration 270, root is: [0.00090081 0.00090081 0.00090081]
In iteration 271, root is: [0.00089756 0.00089756 0.00089756]
In iteration 272, root is: [0.00089434 0.00089434 0.00089434]
In iteration 273, root is: [0.00089114 0.00089114 0.00089114]
In iteration 274, root is: [0.00088796 0.00088796 0.00088796]
In iteration 275, root is: [0.00088481 0.00088481 0.00088481]
In iteration 276, root is: [0.00088168 0.00088168 0.00088168]
In iteration 277, root is: [0.00087857 0.00087857 0.00087857]
In iteration 278, root is: [0.00087548 0.00087548 0.00087548]
In iteration 279, root is: [0.00087241 0.00087241 0.00087241]
In iteration 280, root is: [0.00086937 0.00086937 0.00086937]
In iteration 281, root is: [0.00086635 0.00086635 0.00086635]
In iteration 282, root is: [0.00086334 0.00086334 0.00086334]
In iteration 283, root is: [0.00086036 0.00086036 0.00086036]
In iteration 284, root is: [0.0008574 0.0008574 0.0008574]
In iteration 285, root is: [0.00085446 0.00085446 0.00085446]
In iteration 286, root is: [0.00085154 0.00085154 0.00085154]
In iteration 287, root is: [0.00084864 0.00084864 0.00084864]
In iteration 288, root is: [0.00084576 0.00084576 0.00084576]
In iteration 289, root is: [0.0008429 0.0008429 0.0008429]
In iteration 290, root is: [0.00084006 0.00084006 0.00084006]
In iteration 291, root is: [0.00083723 0.00083723 0.00083723]
In iteration 292, root is: [0.00083443 0.00083443 0.00083443]
In iteration 293, root is: [0.00083165 0.00083165 0.00083165]
In iteration 294, root is: [0.00082888 0.00082888 0.00082888]
In iteration 295, root is: [0.00082613 0.00082613 0.00082613]
In iteration 296, root is: [0.0008234 0.0008234 0.0008234]
In iteration 297, root is: [0.00082069 0.00082069 0.00082069]
In iteration 298, root is: [0.00081799 0.00081799 0.00081799]
In iteration 299, root is: [0.00081532 0.00081532 0.00081532]
In iteration 300, root is: [0.00081266 0.00081266 0.00081266]
In iteration 301, root is: [0.00081002 0.00081002 0.00081002]
In iteration 302, root is: [0.00080739 0.00080739 0.00080739]
In iteration 303, root is: [0.00080479 0.00080479 0.00080479]
In iteration 304, root is: [0.00080219 0.00080219 0.00080219]
In iteration 305, root is: [0.00079962 0.00079962 0.00079962]
In iteration 306, root is: [0.00079706 0.00079706 0.00079706]
In iteration 307, root is: [0.00079452 0.00079452 0.00079452]
In iteration 308, root is: [0.000792 0.000792 0.000792]
In iteration 309, root is: [0.00078949 0.00078949 0.00078949]
In iteration 310, root is: [0.00078699 0.00078699 0.00078699]
In iteration 311, root is: [0.00078452 0.00078452 0.00078452]
In iteration 312, root is: [0.00078206 0.00078206 0.00078206]
In iteration 313, root is: [0.00077961 0.00077961 0.00077961]
In iteration 314, root is: [0.00077718 0.00077718 0.00077718]
In iteration 315, root is: [0.00077476 0.00077476 0.00077476]
In iteration 316, root is: [0.00077236 0.00077236 0.00077236]
In iteration 317, root is: [0.00076997 0.00076997 0.00076997]
In iteration 318, root is: [0.0007676 0.0007676 0.0007676]
In iteration 319, root is: [0.00076525 0.00076525 0.00076525]
In iteration 320, root is: [0.0007629 0.0007629 0.0007629]
In iteration 321, root is: [0.00076058 0.00076058 0.00076058]
In iteration 322, root is: [0.00075826 0.00075826 0.00075826]
In iteration 323, root is: [0.00075596 0.00075596 0.00075596]
In iteration 324, root is: [0.00075368 0.00075368 0.00075368]
In iteration 325, root is: [0.0007514 0.0007514 0.0007514]
In iteration 326, root is: [0.00074915 0.00074915 0.00074915]
In iteration 327, root is: [0.0007469 0.0007469 0.0007469]
In iteration 328, root is: [0.00074467 0.00074467 0.00074467]
In iteration 329, root is: [0.00074245 0.00074245 0.00074245]
In iteration 330, root is: [0.00074025 0.00074025 0.00074025]
In iteration 331, root is: [0.00073805 0.00073805 0.00073805]
In iteration 332, root is: [0.00073588 0.00073588 0.00073588]
In iteration 333, root is: [0.00073371 0.00073371 0.00073371]
In iteration 334, root is: [0.00073156 0.00073156 0.00073156]
In iteration 335, root is: [0.00072942 0.00072942 0.00072942]
In iteration 336, root is: [0.00072729 0.00072729 0.00072729]
In iteration 337, root is: [0.00072517 0.00072517 0.00072517]
In iteration 338, root is: [0.00072307 0.00072307 0.00072307]
In iteration 339, root is: [0.00072098 0.00072098 0.00072098]
In iteration 340, root is: [0.0007189 0.0007189 0.0007189]
In iteration 341, root is: [0.00071683 0.00071683 0.00071683]
In iteration 342, root is: [0.00071477 0.00071477 0.00071477]
In iteration 343, root is: [0.00071273 0.00071273 0.00071273]
In iteration 344, root is: [0.0007107 0.0007107 0.0007107]
In iteration 345, root is: [0.00070868 0.00070868 0.00070868]
In iteration 346, root is: [0.00070667 0.00070667 0.00070667]
In iteration 347, root is: [0.00070467 0.00070467 0.00070467]
In iteration 348, root is: [0.00070269 0.00070269 0.00070269]
In iteration 349, root is: [0.00070071 0.00070071 0.00070071]
In iteration 350, root is: [0.00069875 0.00069875 0.00069875]
In iteration 351, root is: [0.00069679 0.00069679 0.00069679]
In iteration 352, root is: [0.00069485 0.00069485 0.00069485]
In iteration 353, root is: [0.00069292 0.00069292 0.00069292]
In iteration 354, root is: [0.000691 0.000691 0.000691]
In iteration 355, root is: [0.00068909 0.00068909 0.00068909]
In iteration 356, root is: [0.00068719 0.00068719 0.00068719]
In iteration 357, root is: [0.0006853 0.0006853 0.0006853]
In iteration 358, root is: [0.00068342 0.00068342 0.00068342]
In iteration 359, root is: [0.00068155 0.00068155 0.00068155]
In iteration 360, root is: [0.0006797 0.0006797 0.0006797]
In iteration 361, root is: [0.00067785 0.00067785 0.00067785]
In iteration 362, root is: [0.00067601 0.00067601 0.00067601]
In iteration 363, root is: [0.00067418 0.00067418 0.00067418]
In iteration 364, root is: [0.00067236 0.00067236 0.00067236]
In iteration 365, root is: [0.00067056 0.00067056 0.00067056]
In iteration 366, root is: [0.00066876 0.00066876 0.00066876]
In iteration 367, root is: [0.00066697 0.00066697 0.00066697]
In iteration 368, root is: [0.00066519 0.00066519 0.00066519]
In iteration 369, root is: [0.00066342 0.00066342 0.00066342]
In iteration 370, root is: [0.00066166 0.00066166 0.00066166]
In iteration 371, root is: [0.00065991 0.00065991 0.00065991]
In iteration 372, root is: [0.00065817 0.00065817 0.00065817]
In iteration 373, root is: [0.00065643 0.00065643 0.00065643]
In iteration 374, root is: [0.00065471 0.00065471 0.00065471]
In iteration 375, root is: [0.000653 0.000653 0.000653]
In iteration 376, root is: [0.00065129 0.00065129 0.00065129]
In iteration 377, root is: [0.00064959 0.00064959 0.00064959]
In iteration 378, root is: [0.00064791 0.00064791 0.00064791]
In iteration 379, root is: [0.00064623 0.00064623 0.00064623]
In iteration 380, root is: [0.00064456 0.00064456 0.00064456]
In iteration 381, root is: [0.00064289 0.00064289 0.00064289]
In iteration 382, root is: [0.00064124 0.00064124 0.00064124]
In iteration 383, root is: [0.0006396 0.0006396 0.0006396]
In iteration 384, root is: [0.00063796 0.00063796 0.00063796]
In iteration 385, root is: [0.00063633 0.00063633 0.00063633]
In iteration 386, root is: [0.00063471 0.00063471 0.00063471]
In iteration 387, root is: [0.0006331 0.0006331 0.0006331]
In iteration 388, root is: [0.0006315 0.0006315 0.0006315]
In iteration 389, root is: [0.0006299 0.0006299 0.0006299]
In iteration 390, root is: [0.00062831 0.00062831 0.00062831]
In iteration 391, root is: [0.00062674 0.00062674 0.00062674]
In iteration 392, root is: [0.00062516 0.00062516 0.00062516]
In iteration 393, root is: [0.0006236 0.0006236 0.0006236]
In iteration 394, root is: [0.00062205 0.00062205 0.00062205]
In iteration 395, root is: [0.0006205 0.0006205 0.0006205]
In iteration 396, root is: [0.00061896 0.00061896 0.00061896]
In iteration 397, root is: [0.00061743 0.00061743 0.00061743]
In iteration 398, root is: [0.0006159 0.0006159 0.0006159]
In iteration 399, root is: [0.00061438 0.00061438 0.00061438]
In iteration 400, root is: [0.00061287 0.00061287 0.00061287]
In iteration 401, root is: [0.00061137 0.00061137 0.00061137]
In iteration 402, root is: [0.00060988 0.00060988 0.00060988]
In iteration 403, root is: [0.00060839 0.00060839 0.00060839]
In iteration 404, root is: [0.00060691 0.00060691 0.00060691]
In iteration 405, root is: [0.00060543 0.00060543 0.00060543]
In iteration 406, root is: [0.00060397 0.00060397 0.00060397]
In iteration 407, root is: [0.00060251 0.00060251 0.00060251]
In iteration 408, root is: [0.00060106 0.00060106 0.00060106]
In iteration 409, root is: [0.00059961 0.00059961 0.00059961]
In iteration 410, root is: [0.00059817 0.00059817 0.00059817]
In iteration 411, root is: [0.00059674 0.00059674 0.00059674]
In iteration 412, root is: [0.00059532 0.00059532 0.00059532]
In iteration 413, root is: [0.0005939 0.0005939 0.0005939]
In iteration 414, root is: [0.00059249 0.00059249 0.00059249]
In iteration 415, root is: [0.00059109 0.00059109 0.00059109]
In iteration 416, root is: [0.00058969 0.00058969 0.00058969]
In iteration 417, root is: [0.0005883 0.0005883 0.0005883]
In iteration 418, root is: [0.00058691 0.00058691 0.00058691]
In iteration 419, root is: [0.00058553 0.00058553 0.00058553]
In iteration 420, root is: [0.00058416 0.00058416 0.00058416]
In iteration 421, root is: [0.0005828 0.0005828 0.0005828]
In iteration 422, root is: [0.00058144 0.00058144 0.00058144]
In iteration 423, root is: [0.00058009 0.00058009 0.00058009]
In iteration 424, root is: [0.00057874 0.00057874 0.00057874]
In iteration 425, root is: [0.0005774 0.0005774 0.0005774]
In iteration 426, root is: [0.00057607 0.00057607 0.00057607]
In iteration 427, root is: [0.00057474 0.00057474 0.00057474]
In iteration 428, root is: [0.00057342 0.00057342 0.00057342]
In iteration 429, root is: [0.0005721 0.0005721 0.0005721]
In iteration 430, root is: [0.00057079 0.00057079 0.00057079]
In iteration 431, root is: [0.00056949 0.00056949 0.00056949]
In iteration 432, root is: [0.00056819 0.00056819 0.00056819]
In iteration 433, root is: [0.0005669 0.0005669 0.0005669]
In iteration 434, root is: [0.00056562 0.00056562 0.00056562]
In iteration 435, root is: [0.00056434 0.00056434 0.00056434]
In iteration 436, root is: [0.00056306 0.00056306 0.00056306]
In iteration 437, root is: [0.0005618 0.0005618 0.0005618]
In iteration 438, root is: [0.00056053 0.00056053 0.00056053]
In iteration 439, root is: [0.00055928 0.00055928 0.00055928]
In iteration 440, root is: [0.00055803 0.00055803 0.00055803]
In iteration 441, root is: [0.00055678 0.00055678 0.00055678]
In iteration 442, root is: [0.00055554 0.00055554 0.00055554]
In iteration 443, root is: [0.00055431 0.00055431 0.00055431]
In iteration 444, root is: [0.00055308 0.00055308 0.00055308]
In iteration 445, root is: [0.00055185 0.00055185 0.00055185]
In iteration 446, root is: [0.00055063 0.00055063 0.00055063]
In iteration 447, root is: [0.00054942 0.00054942 0.00054942]
In iteration 448, root is: [0.00054821 0.00054821 0.00054821]
In iteration 449, root is: [0.00054701 0.00054701 0.00054701]
In iteration 450, root is: [0.00054581 0.00054581 0.00054581]
In iteration 451, root is: [0.00054462 0.00054462 0.00054462]
In iteration 452, root is: [0.00054344 0.00054344 0.00054344]
In iteration 453, root is: [0.00054226 0.00054226 0.00054226]
In iteration 454, root is: [0.00054108 0.00054108 0.00054108]
In iteration 455, root is: [0.00053991 0.00053991 0.00053991]
In iteration 456, root is: [0.00053874 0.00053874 0.00053874]
In iteration 457, root is: [0.00053758 0.00053758 0.00053758]
In iteration 458, root is: [0.00053643 0.00053643 0.00053643]
In iteration 459, root is: [0.00053527 0.00053527 0.00053527]
In iteration 460, root is: [0.00053413 0.00053413 0.00053413]
In iteration 461, root is: [0.00053299 0.00053299 0.00053299]
In iteration 462, root is: [0.00053185 0.00053185 0.00053185]
In iteration 463, root is: [0.00053072 0.00053072 0.00053072]
In iteration 464, root is: [0.00052959 0.00052959 0.00052959]
In iteration 465, root is: [0.00052847 0.00052847 0.00052847]
In iteration 466, root is: [0.00052735 0.00052735 0.00052735]
In iteration 467, root is: [0.00052624 0.00052624 0.00052624]
In iteration 468, root is: [0.00052513 0.00052513 0.00052513]
In iteration 469, root is: [0.00052403 0.00052403 0.00052403]
In iteration 470, root is: [0.00052293 0.00052293 0.00052293]
In iteration 471, root is: [0.00052184 0.00052184 0.00052184]
In iteration 472, root is: [0.00052075 0.00052075 0.00052075]
In iteration 473, root is: [0.00051966 0.00051966 0.00051966]
In iteration 474, root is: [0.00051858 0.00051858 0.00051858]
In iteration 475, root is: [0.00051751 0.00051751 0.00051751]
In iteration 476, root is: [0.00051644 0.00051644 0.00051644]
In iteration 477, root is: [0.00051537 0.00051537 0.00051537]
In iteration 478, root is: [0.00051431 0.00051431 0.00051431]
In iteration 479, root is: [0.00051325 0.00051325 0.00051325]
In iteration 480, root is: [0.0005122 0.0005122 0.0005122]
In iteration 481, root is: [0.00051115 0.00051115 0.00051115]
In iteration 482, root is: [0.0005101 0.0005101 0.0005101]
In iteration 483, root is: [0.00050906 0.00050906 0.00050906]
In iteration 484, root is: [0.00050802 0.00050802 0.00050802]
In iteration 485, root is: [0.00050699 0.00050699 0.00050699]
In iteration 486, root is: [0.00050596 0.00050596 0.00050596]
In iteration 487, root is: [0.00050494 0.00050494 0.00050494]
In iteration 488, root is: [0.00050392 0.00050392 0.00050392]
In iteration 489, root is: [0.0005029 0.0005029 0.0005029]
In iteration 490, root is: [0.00050189 0.00050189 0.00050189]
In iteration 491, root is: [0.00050088 0.00050088 0.00050088]
In iteration 492, root is: [0.00049988 0.00049988 0.00049988]
Got the answer in iteration: 492
Answer is: [0.00049988 0.00049988 0.00049988]

Improved Newton's Method


In [32]:

#Define Newton's method function for matrix that calculates the error with l2 no
rm
def NewtonsMethodFirstFixedPoint(x0, epsilon):
#Define f(x)
def f(x):
f = np.array([x[1] * np.sin(x[0]),
np.square(x[0]) + x[1] - x[2],
x[1] + x[2]])
return f
#Define the jacobian matrix
def jf(x):
df = np.array([[x[1] * np.cos(x[0]), np.sin(x[0]), 0],
[2*x[0], 1, -1],
[0, 1, 1]])
return df
#Initialize iteration
iterations = 0
#Initialize empty list for error
error_list1 = []
#Compute f(x) and Norm
fx0 = f(x0)
fn = np.linalg.norm(fx0, ord=2)
#While root not reached
while np.absolute(fn) > epsilon:
#It is computationally taxing to solve the Newton's Iteration Literally
#Can rewrite the equation into Ax = b form
solve = np.linalg.solve(jf(x0), -fx0)
x0 = x0 + solve
fx0 = f(x0)
fn = np.linalg.norm(fx0, ord=2)
#Update Iterations
iterations += 1
#Calculate error with respect to the first root
e = np.linalg.norm(x0 - np.array([0, 0, 0]), ord=1)
#Add to error list
error_list1.append(e)
#Print statements
print('In iteration ' + str(iterations) +', root is: ' + str(x0))
print('Error for iteration ' + str(iterations) + ' is:' + str(e))
print('Got the answer in iteration: ' + str(iterations))
print('Answer is: ' + str(x0))
return error_list1

In [33]:

x1 = [0.1, 0.1, 0.1]


NewtonsMethodFirstFixedPoint(x1, 0.0000001)
In iteration 1, root is: [ 0.10557622 -0.00555762 0.00555762]
Error for iteration 1 is:0.11669146641349601
In iteration 2, root is: [ 0.07030776 -0.00184966 0.00184966]
Error for iteration 2 is:0.07400707995839853
In iteration 3, root is: [ 0.04471463 -0.0006722 0.0006722 ]
Error for iteration 3 is:0.0460590224353548
In iteration 4, root is: [ 0.0279798 -0.00025141 0.00025141]
Error for iteration 4 is:0.02848260969179668
In iteration 5, root is: [ 1.73898264e-02 -9.51293075e-05 9.5129307
5e-05]
Error for iteration 5 is:0.01758008498739306
In iteration 6, root is: [ 1.07754265e-02 -3.61797659e-05 3.6179765
9e-05]
Error for iteration 6 is:0.010847786069145087
In iteration 7, root is: [ 6.66764620e-03 -1.37918233e-05 1.3791823
3e-05]
Error for iteration 7 is:0.006695229850316273
In iteration 8, root is: [ 4.12317089e-03 -5.26309178e-06 5.2630917
8e-06]
Error for iteration 8 is:0.004133697072816685
In iteration 9, root is: [ 2.54893932e-03 -2.00944333e-06 2.0094433
3e-06]
Error for iteration 9 is:0.0025529582116494125
In iteration 10, root is: [ 1.57552883e-03 -7.67381545e-07 7.673815
45e-07]
Error for iteration 10 is:0.0015770635906698445
In iteration 11, root is: [ 9.73787918e-04 -2.93085394e-07 2.930853
94e-07]
Error for iteration 11 is:0.0009743740889230849
In iteration 12, root is: [ 6.01850795e-04 -1.11943578e-07 1.119435
78e-07]
Error for iteration 12 is:0.0006020746821576281
In iteration 13, root is: [ 3.71969132e-04 -4.27577282e-08 4.275772
82e-08]
Error for iteration 13 is:0.0003720546476876564
Got the answer in iteration: 13
Answer is: [ 3.71969132e-04 -4.27577282e-08 4.27577282e-08]

Out[33]:

[0.11669146641349601,
0.07400707995839853,
0.0460590224353548,
0.02848260969179668,
0.01758008498739306,
0.010847786069145087,
0.006695229850316273,
0.004133697072816685,
0.0025529582116494125,
0.0015770635906698445,
0.0009743740889230849,
0.0006020746821576281,
0.0003720546476876564]
In [35]:

#Copied error list from above


error_list1=[0.11669146641349601,
0.07400707995839853,
0.0460590224353548,
0.02848260969179668,
0.01758008498739306,
0.010847786069145087,
0.006695229850316273,
0.004133697072816685,
0.0025529582116494125,
0.0015770635906698445,
0.0009743740889230849,
0.0006020746821576281,
0.0003720546476876564]
#Calculate the rate of convergence with formula rearranged from the text book
rate = [np.log(error_list1[n+1]/error_list1[n])/np.log(error_list1[n]/error_list
1[n-1])
for n in range(1, len(error_list1)-1, 1)]
rate

Out[35]:

[1.041426389145041,
1.0134803085988338,
1.0039469711145301,
1.0005776425391815,
0.9995028719133637,
0.9992901040952773,
0.9993701735778056,
0.9995201003379071,
0.9996604990039033,
0.9997699083734802,
0.9998482346503845]

Rate of convergence approaches 1


In [36]:

#Define Newton's method function for matrix


def NewtonsMethodSecondFixedPoint(x0, epsilon):
#Define f(x)
def f(x):
f = np.array([x[1] * np.sin(x[0]),
np.square(x[0]) + x[1] - x[2],
x[1] + x[2]])
return f
#Define the jacobian matrix
def jf(x):
df = np.array([[x[1] * np.cos(x[0]), np.sin(x[0]), 0],
[2*x[0], 1, -1],
[0, 1, 1]])
return df
#Initialize iteration
iterations = 0
#Initialize empty error list
error_list2 = []
#Compute f(x) and Norm
fx0 = f(x0)
fn = np.linalg.norm(fx0, ord=2)
#While root not reached
while np.absolute(fn) > epsilon:
#It is computationally taxing to solve the Newton's Iteration Literally
#Can rewrite the equation into Ax = b form
solve = np.linalg.solve(jf(x0), -fx0)
x0 = x0 + solve
fx0 = f(x0)
fn = np.linalg.norm(fx0, ord=2)
iterations += 1
#Calculate error with respect to the second root
e = np.linalg.norm(x0 - np.array([np.pi, -np.square(np.pi)/2, np.square(
np.pi)/2]), ord=2)
#List append
error_list2.append(e)
print('In iteration ' + str(iterations) +', root is: ' + str(x0))
print('Error for iteration ' + str(iterations) + ' is:' + str(e))
print('Got the answer in iteration: ' + str(iterations))
print('Answer is: ' + str(x0))
return error_list2
In [37]:

x2 = [3, -3, 3]
NewtonsMethodSecondFixedPoint(x2, 0.000001)

In iteration 1, root is: [ 3.24936609 -5.24809827 5.24809827]


Error for iteration 1 is:0.4559868000778841
In iteration 2, root is: [ 3.14736526 -4.94775194 4.94775194]
Error for iteration 2 is:0.01920194172363646
In iteration 3, root is: [ 3.14160766 -4.93483278 4.93483278]
Error for iteration 3 is:4.577350895583193e-05
In iteration 4, root is: [ 3.14159265 -4.9348022 4.9348022 ]
Error for iteration 4 is:2.7038521955124045e-10
Got the answer in iteration: 4
Answer is: [ 3.14159265 -4.9348022 4.9348022 ]

Out[37]:

[0.4559868000778841,
0.01920194172363646,
4.577350895583193e-05,
2.7038521955124045e-10]

In [38]:

#Copied error list from above


error_list2=[0.4559868000778841,
0.01920194172363646,
4.577350895583193e-05,
2.7038521955124045e-10]
#Calculate the rate of convergence with formula rearranged from the text book
rate = [np.log(error_list2[n+1]/error_list2[n])/np.log(error_list2[n]/error_list
2[n-1])
for n in range(1, len(error_list2)-1, 1)]
rate

Out[38]:

[1.9065988362906567, 1.9935827869937885]

Rate of convergence approaches to 2

Problem 5 LU Factorization without Pivoting


In [39]:

def LUDecomp(A):
#Initialize empty matrices
lower = np.eye(4)
upper = np.zeros((4,4))

#Size of n = 4
for i in range(4):

#Calculating values for the upper triangular matrix


for k in range(i, 4):
su = 0
for j in range(i):
su += (lower[i][j] * upper[j][k])
upper[i][k] = A[i][k] - su

#Calculating values for the lower triangular matrix


for k in range(i, 4):
sl = 0
for j in range(i):
sl += (lower[k][j] * upper[j][i])
lower[k][i] = (A[k][i] - sl) / upper[i][i]
print('L :', lower)
print('U :', upper)

In [40]:

A = [[1.0,2.0,3.0,4.0],
[2.0,9.0,12.0,15.0],
[3.0,26.0,41.0,49.0],
[5.0,40.0,107.0,135.0]]
LUDecomp(A)

L : [[1. 0. 0. 0.]
[2. 1. 0. 0.]
[3. 4. 1. 0.]
[5. 6. 7. 1.]]
U : [[ 1. 2. 3. 4.]
[ 0. 5. 6. 7.]
[ 0. 0. 8. 9.]
[ 0. 0. 0. 10.]]
In [41]:

#Generalize matrix to size n


def LUDecompn(A, n):
#Initialize empty matrices for lower triangle
lower = np.eye(n)
#Initialize empty matrices for upper triangle
upper = np.zeros((n,n))
for i in range(n):
#Calculating values for the upper triangular matrix
for k in range(i, n):
#Initialize sumation
su = 0
for j in range(i):
#Sum
su += (lower[i][j] * upper[j][k])
#Algorithm in textbook:
upper[i][k] = A[i][k] - su
#Calculating values for the lower triangular matrix
for k in range(i, n):
#Initialize summation
sl = 0
for j in range(i):
#Sum
sl += (lower[k][j] * upper[j][i])
#Algorithm in textbook
#Check if value is way too small
if upper[i][i] > 0.00000001:
lower[k][i] = (A[k][i] - sl) / upper[i][i]
#Raise exception if too small, cannot do division
else: raise Exception('Divide by ~0')
print('L :', lower)
print('U :', upper)

In [42]:

A = [[1.0,2.0,3.0,4.0],
[2.0,9.0,12.0,15.0],
[3.0,26.0,41.0,49.0],
[5.0,40.0,107.0,135.0]]
LUDecompn(A,4)

L : [[1. 0. 0. 0.]
[2. 1. 0. 0.]
[3. 4. 1. 0.]
[5. 6. 7. 1.]]
U : [[ 1. 2. 3. 4.]
[ 0. 5. 6. 7.]
[ 0. 0. 8. 9.]
[ 0. 0. 0. 10.]]
Problem 6 Backward Substitution
In [43]:

def BackSub(A, b):


#Get the size of b
nb = b.size
#Get the size of A
A = np.array(A)
na = A.shape
#Check if dimensions of inputs are compatible
if nb == na[0] == na[1]:
#Initialize
x = np.zeros(nb)
for k in range(nb-1, -1, -1):
#backward substitution
x[k] = (b[k] - np.dot(A[k, k+1:nb],x[k+1:nb])) / A[k,k]
else:
#stop algorithm and raise exception if dimensions do not fit
raise Exception("Incompatible Dimensions")
return x

In [44]:

U = np.array([[1, 2, 6, -1],
[0, 3, 1, 0],
[0, 0, 4, -1],
[0, 0, 0, 2]])
b = np.array([-1, -3, -2, 4])
BackSub(U, b)

Out[44]:

array([ 3., -1., 0., 2.])

You might also like