├── README.md ├── project 1 ├── 1 │ └── Q-1.ipynb ├── 2 │ ├── 2 - ‫‪Bisection‬‬ │ │ ├── Bisection‬‬ -Version - 1.ipynb │ │ └── Bisection‬‬-Version - 2.ipynb │ ├── 2 - ‫‪Position‬‬ ‫‪False‬‬ │ │ ├── Position‬‬ False‬‬-Version - 2.ipynb │ │ └── Position‬‬ ‫‪False‬‬-Version - 1.ipynb │ └── 2 - ‫‪Secant‬‬ │ │ ├── ‫‪Secant‬‬ - Version - 1.ipynb │ │ └── ‫‪Secant‬‬ - version - 2.ipynb ├── project(Fa).pdf └── report.docx └── project 2 ├── 1.ipynb ├── 2.ipynb └── 3.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # project-of-numerical-analysis 2 | -------------------------------------------------------------------------------- /project 1/1/Q-1.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyO/rnu2YUJlShM03dgk40/p"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"id":"NFojQrUw4JFE","executionInfo":{"status":"ok","timestamp":1671411631400,"user_tz":-210,"elapsed":13,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"outputs":[],"source":["#import library\n","import random #To create numbers and select digits from the allowed list, for example, for base 2, only digits 0 and 1 are allowed and must be used.\n","import re #To clean the number and calculate its value"]},{"cell_type":"code","source":["#Here we give the list of allowed numbers and say choose randomly from it and we do this action for times.\n","def bulid_number_temp(list_of_number : list, k):\n"," result = \"\" #Define an empty string to add the selected digits to the end each time\n"," for repeat in range(0, k): #Do this operation for times so that the length of the number is correct\n"," result += random.choice(list_of_number)\n"," \n"," return str(result) #return it"],"metadata":{"id":"X84_3UR-N6kn","executionInfo":{"status":"ok","timestamp":1671411633487,"user_tz":-210,"elapsed":10,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["#In this function we normalize the numbers with floating point conditions\n","#I will explain step by step\n","def build_number(base, k):\n"," Allowed_number = range(0, base) #Store the numbers allowed to be used in a list using the (range) function.\n"," Allowed_numbers = [str(element) for element in Allowed_number] #Convert them to characters for use in the functions you defined\n","\n"," numbers = [] #Define an empty list to store the obtained digits in the normal floating point system\n","\n"," while True: #A loop is always correctly defined, and its stopping condition is written at the end, which means the number of bottles produced\n","\n"," number_temp = bulid_number_temp(Allowed_numbers, k) #Use the above function to generate the number\n"," if (number_temp[0] == \"0\") or (number_temp in numbers): #The bet is checked, if the first digit is zero or the generated number is in the list of numbers, then the ring will do one more round\n"," continue\n"," \n"," numbers.append(number_temp) #Otherwise, the loop continues and is stored in our list of numbers\n","\n"," if len(numbers) == ((base - 1) * (base ** (k - 1))): #The condition of our stop is that the produced arahm is equal to the formula we have from the lesson\n"," break\n"," #Note: Multiplication by 2 is not taken into account because positive and negative are not important for us at the moment\n"," return numbers #return it"],"metadata":{"id":"B7LStp3p4ro9","executionInfo":{"status":"ok","timestamp":1671411636364,"user_tz":-210,"elapsed":550,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["#Creating complete numbers (decimal and exponents)\n","#Inputs of the function: the output of the upper / base function and (lower) and (upper)\n","def build_power(numbers : list, base, lower, upper):\n"," number_fainal = [] #Define an empty list to store the final numbers\n","\n"," for number in numbers: #We do a in the list of numbers output from the above function\n"," for power in range(lower, upper + 1): #For each number, the number of powers that we have created according to the inputs of the function\n"," number_fainal.append(f\"(0/{number}) * {base}^{power}\") #We make them in standard form with \n"," \n","\n"," return number_fainal #return it"],"metadata":{"id":"CnOQQdAv49q4","executionInfo":{"status":"ok","timestamp":1671411638504,"user_tz":-210,"elapsed":5,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["#This function is for separating the numerical and decimal part\n","def clean_num(number : str): #The input to each function is the number to be cleaned\n"," num , pow = number.split(\"^\") #The function divides the desired string into two parts and the basis of that division is the input of the function\n"," number_usefull , temp = num.split(\"*\")\n"," temp, number_usefull = number_usefull.split(\"/\")\n"," del temp\n"," number_usefull = re.sub('\\)', '', number_usefull)\n","\n"," result = [number_usefull[:-1], pow]\n","\n"," return (result) #return it"],"metadata":{"id":"Bu4AnMt_HiAz","executionInfo":{"status":"ok","timestamp":1671411642177,"user_tz":-210,"elapsed":343,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["#This function is used to calculate the amount of generated digits\n","#The inputs of the function are the generated list of numbers and its base\n","def calcute_value(numbers : list, base):\n"," result = [] #Define an empty list to store the value\n"," for element in numbers: #One has in her list of numbers\n"," temp = clean_num(element) #Using the function, define the number into the main number part and its power\n"," #Separation of digit and power digit\n"," number = temp[0] \n"," pow = temp[1] \n","\n"," sum = 0 #Define a variable to calculate the sum\n","\n","\n"," #In the list of number one >> and calculated its value using the >> function by means of indexes\n","\n"," for index , digit in enumerate(number):\n"," sum += int(digit) * (base ** (-(index + 1))) \n","\n"," #The amount of my power has also multiplied\n"," fainal = sum * (base ** int(pow)) \n"," result.append(f\" +/- {element} <----------------------> value : +/- {fainal}\") #Save the number along with their value\n"," \n","\n"," return result #return it"],"metadata":{"id":"nOAbhanpD3Qn","executionInfo":{"status":"ok","timestamp":1671411645228,"user_tz":-210,"elapsed":316,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["#for show\n","def show(numbers : list):\n"," for index, element in enumerate(numbers):\n"," print(f\"{index + 1}) {element}\")\n"," print(\"*********************\")"],"metadata":{"id":"gugPev3eSPwa","executionInfo":{"status":"ok","timestamp":1671411648334,"user_tz":-210,"elapsed":421,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":["#To organize these functions, another function called
has been defined\n","def main(base, k, lower, upper):\n"," numbers = build_number(base, k) #Building numbers (without decimal form and without powers)\n"," numbers = build_power(numbers, base, lower, upper)#Storage with power\n"," numbers = calcute_value(numbers , base)#Calculate their value and save them in the final form\n"," show(numbers)##the show"],"metadata":{"id":"1N6oFWd6Daos","executionInfo":{"status":"ok","timestamp":1671411652398,"user_tz":-210,"elapsed":311,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":8,"outputs":[]},{"cell_type":"code","source":["#see result\n","main(2, 5 ,-5, 5)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"l4QHTNsGTBNI","executionInfo":{"status":"ok","timestamp":1671411654986,"user_tz":-210,"elapsed":486,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"75df27b8-753d-4ec8-b010-6e4014cc1697"},"execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["1) +/- (0/11010) * 2^-5 <----------------------> value : +/- 0.025390625\n","*********************\n","2) +/- (0/11010) * 2^-4 <----------------------> value : +/- 0.05078125\n","*********************\n","3) +/- (0/11010) * 2^-3 <----------------------> value : +/- 0.1015625\n","*********************\n","4) +/- (0/11010) * 2^-2 <----------------------> value : +/- 0.203125\n","*********************\n","5) +/- (0/11010) * 2^-1 <----------------------> value : +/- 0.40625\n","*********************\n","6) +/- (0/11010) * 2^0 <----------------------> value : +/- 0.8125\n","*********************\n","7) +/- (0/11010) * 2^1 <----------------------> value : +/- 1.625\n","*********************\n","8) +/- (0/11010) * 2^2 <----------------------> value : +/- 3.25\n","*********************\n","9) +/- (0/11010) * 2^3 <----------------------> value : +/- 6.5\n","*********************\n","10) +/- (0/11010) * 2^4 <----------------------> value : +/- 13.0\n","*********************\n","11) +/- (0/11010) * 2^5 <----------------------> value : +/- 26.0\n","*********************\n","12) +/- (0/11011) * 2^-5 <----------------------> value : +/- 0.0263671875\n","*********************\n","13) +/- (0/11011) * 2^-4 <----------------------> value : +/- 0.052734375\n","*********************\n","14) +/- (0/11011) * 2^-3 <----------------------> value : +/- 0.10546875\n","*********************\n","15) +/- (0/11011) * 2^-2 <----------------------> value : +/- 0.2109375\n","*********************\n","16) +/- (0/11011) * 2^-1 <----------------------> value : +/- 0.421875\n","*********************\n","17) +/- (0/11011) * 2^0 <----------------------> value : +/- 0.84375\n","*********************\n","18) +/- (0/11011) * 2^1 <----------------------> value : +/- 1.6875\n","*********************\n","19) +/- (0/11011) * 2^2 <----------------------> value : +/- 3.375\n","*********************\n","20) +/- (0/11011) * 2^3 <----------------------> value : +/- 6.75\n","*********************\n","21) +/- (0/11011) * 2^4 <----------------------> value : +/- 13.5\n","*********************\n","22) +/- (0/11011) * 2^5 <----------------------> value : +/- 27.0\n","*********************\n","23) +/- (0/11000) * 2^-5 <----------------------> value : +/- 0.0234375\n","*********************\n","24) +/- (0/11000) * 2^-4 <----------------------> value : +/- 0.046875\n","*********************\n","25) +/- (0/11000) * 2^-3 <----------------------> value : +/- 0.09375\n","*********************\n","26) +/- (0/11000) * 2^-2 <----------------------> value : +/- 0.1875\n","*********************\n","27) +/- (0/11000) * 2^-1 <----------------------> value : +/- 0.375\n","*********************\n","28) +/- (0/11000) * 2^0 <----------------------> value : +/- 0.75\n","*********************\n","29) +/- (0/11000) * 2^1 <----------------------> value : +/- 1.5\n","*********************\n","30) +/- (0/11000) * 2^2 <----------------------> value : +/- 3.0\n","*********************\n","31) +/- (0/11000) * 2^3 <----------------------> value : +/- 6.0\n","*********************\n","32) +/- (0/11000) * 2^4 <----------------------> value : +/- 12.0\n","*********************\n","33) +/- (0/11000) * 2^5 <----------------------> value : +/- 24.0\n","*********************\n","34) +/- (0/10111) * 2^-5 <----------------------> value : +/- 0.0224609375\n","*********************\n","35) +/- (0/10111) * 2^-4 <----------------------> value : +/- 0.044921875\n","*********************\n","36) +/- (0/10111) * 2^-3 <----------------------> value : +/- 0.08984375\n","*********************\n","37) +/- (0/10111) * 2^-2 <----------------------> value : +/- 0.1796875\n","*********************\n","38) +/- (0/10111) * 2^-1 <----------------------> value : +/- 0.359375\n","*********************\n","39) +/- (0/10111) * 2^0 <----------------------> value : +/- 0.71875\n","*********************\n","40) +/- (0/10111) * 2^1 <----------------------> value : +/- 1.4375\n","*********************\n","41) +/- (0/10111) * 2^2 <----------------------> value : +/- 2.875\n","*********************\n","42) +/- (0/10111) * 2^3 <----------------------> value : +/- 5.75\n","*********************\n","43) +/- (0/10111) * 2^4 <----------------------> value : +/- 11.5\n","*********************\n","44) +/- (0/10111) * 2^5 <----------------------> value : +/- 23.0\n","*********************\n","45) +/- (0/11110) * 2^-5 <----------------------> value : +/- 0.029296875\n","*********************\n","46) +/- (0/11110) * 2^-4 <----------------------> value : +/- 0.05859375\n","*********************\n","47) +/- (0/11110) * 2^-3 <----------------------> value : +/- 0.1171875\n","*********************\n","48) +/- (0/11110) * 2^-2 <----------------------> value : +/- 0.234375\n","*********************\n","49) +/- (0/11110) * 2^-1 <----------------------> value : +/- 0.46875\n","*********************\n","50) +/- (0/11110) * 2^0 <----------------------> value : +/- 0.9375\n","*********************\n","51) +/- (0/11110) * 2^1 <----------------------> value : +/- 1.875\n","*********************\n","52) +/- (0/11110) * 2^2 <----------------------> value : +/- 3.75\n","*********************\n","53) +/- (0/11110) * 2^3 <----------------------> value : +/- 7.5\n","*********************\n","54) +/- (0/11110) * 2^4 <----------------------> value : +/- 15.0\n","*********************\n","55) +/- (0/11110) * 2^5 <----------------------> value : +/- 30.0\n","*********************\n","56) +/- (0/11001) * 2^-5 <----------------------> value : +/- 0.0244140625\n","*********************\n","57) +/- (0/11001) * 2^-4 <----------------------> value : +/- 0.048828125\n","*********************\n","58) +/- (0/11001) * 2^-3 <----------------------> value : +/- 0.09765625\n","*********************\n","59) +/- (0/11001) * 2^-2 <----------------------> value : +/- 0.1953125\n","*********************\n","60) +/- (0/11001) * 2^-1 <----------------------> value : +/- 0.390625\n","*********************\n","61) +/- (0/11001) * 2^0 <----------------------> value : +/- 0.78125\n","*********************\n","62) +/- (0/11001) * 2^1 <----------------------> value : +/- 1.5625\n","*********************\n","63) +/- (0/11001) * 2^2 <----------------------> value : +/- 3.125\n","*********************\n","64) +/- (0/11001) * 2^3 <----------------------> value : +/- 6.25\n","*********************\n","65) +/- (0/11001) * 2^4 <----------------------> value : +/- 12.5\n","*********************\n","66) +/- (0/11001) * 2^5 <----------------------> value : +/- 25.0\n","*********************\n","67) +/- (0/10110) * 2^-5 <----------------------> value : +/- 0.021484375\n","*********************\n","68) +/- (0/10110) * 2^-4 <----------------------> value : +/- 0.04296875\n","*********************\n","69) +/- (0/10110) * 2^-3 <----------------------> value : +/- 0.0859375\n","*********************\n","70) +/- (0/10110) * 2^-2 <----------------------> value : +/- 0.171875\n","*********************\n","71) +/- (0/10110) * 2^-1 <----------------------> value : +/- 0.34375\n","*********************\n","72) +/- (0/10110) * 2^0 <----------------------> value : +/- 0.6875\n","*********************\n","73) +/- (0/10110) * 2^1 <----------------------> value : +/- 1.375\n","*********************\n","74) +/- (0/10110) * 2^2 <----------------------> value : +/- 2.75\n","*********************\n","75) +/- (0/10110) * 2^3 <----------------------> value : +/- 5.5\n","*********************\n","76) +/- (0/10110) * 2^4 <----------------------> value : +/- 11.0\n","*********************\n","77) +/- (0/10110) * 2^5 <----------------------> value : +/- 22.0\n","*********************\n","78) +/- (0/11100) * 2^-5 <----------------------> value : +/- 0.02734375\n","*********************\n","79) +/- (0/11100) * 2^-4 <----------------------> value : +/- 0.0546875\n","*********************\n","80) +/- (0/11100) * 2^-3 <----------------------> value : +/- 0.109375\n","*********************\n","81) +/- (0/11100) * 2^-2 <----------------------> value : +/- 0.21875\n","*********************\n","82) +/- (0/11100) * 2^-1 <----------------------> value : +/- 0.4375\n","*********************\n","83) +/- (0/11100) * 2^0 <----------------------> value : +/- 0.875\n","*********************\n","84) +/- (0/11100) * 2^1 <----------------------> value : +/- 1.75\n","*********************\n","85) +/- (0/11100) * 2^2 <----------------------> value : +/- 3.5\n","*********************\n","86) +/- (0/11100) * 2^3 <----------------------> value : +/- 7.0\n","*********************\n","87) +/- (0/11100) * 2^4 <----------------------> value : +/- 14.0\n","*********************\n","88) +/- (0/11100) * 2^5 <----------------------> value : +/- 28.0\n","*********************\n","89) +/- (0/11101) * 2^-5 <----------------------> value : +/- 0.0283203125\n","*********************\n","90) +/- (0/11101) * 2^-4 <----------------------> value : +/- 0.056640625\n","*********************\n","91) +/- (0/11101) * 2^-3 <----------------------> value : +/- 0.11328125\n","*********************\n","92) +/- (0/11101) * 2^-2 <----------------------> value : +/- 0.2265625\n","*********************\n","93) +/- (0/11101) * 2^-1 <----------------------> value : +/- 0.453125\n","*********************\n","94) +/- (0/11101) * 2^0 <----------------------> value : +/- 0.90625\n","*********************\n","95) +/- (0/11101) * 2^1 <----------------------> value : +/- 1.8125\n","*********************\n","96) +/- (0/11101) * 2^2 <----------------------> value : +/- 3.625\n","*********************\n","97) +/- (0/11101) * 2^3 <----------------------> value : +/- 7.25\n","*********************\n","98) +/- (0/11101) * 2^4 <----------------------> value : +/- 14.5\n","*********************\n","99) +/- (0/11101) * 2^5 <----------------------> value : +/- 29.0\n","*********************\n","100) +/- (0/10010) * 2^-5 <----------------------> value : +/- 0.017578125\n","*********************\n","101) +/- (0/10010) * 2^-4 <----------------------> value : +/- 0.03515625\n","*********************\n","102) +/- (0/10010) * 2^-3 <----------------------> value : +/- 0.0703125\n","*********************\n","103) +/- (0/10010) * 2^-2 <----------------------> value : +/- 0.140625\n","*********************\n","104) +/- (0/10010) * 2^-1 <----------------------> value : +/- 0.28125\n","*********************\n","105) +/- (0/10010) * 2^0 <----------------------> value : +/- 0.5625\n","*********************\n","106) +/- (0/10010) * 2^1 <----------------------> value : +/- 1.125\n","*********************\n","107) +/- (0/10010) * 2^2 <----------------------> value : +/- 2.25\n","*********************\n","108) +/- (0/10010) * 2^3 <----------------------> value : +/- 4.5\n","*********************\n","109) +/- (0/10010) * 2^4 <----------------------> value : +/- 9.0\n","*********************\n","110) +/- (0/10010) * 2^5 <----------------------> value : +/- 18.0\n","*********************\n","111) +/- (0/10000) * 2^-5 <----------------------> value : +/- 0.015625\n","*********************\n","112) +/- (0/10000) * 2^-4 <----------------------> value : +/- 0.03125\n","*********************\n","113) +/- (0/10000) * 2^-3 <----------------------> value : +/- 0.0625\n","*********************\n","114) +/- (0/10000) * 2^-2 <----------------------> value : +/- 0.125\n","*********************\n","115) +/- (0/10000) * 2^-1 <----------------------> value : +/- 0.25\n","*********************\n","116) +/- (0/10000) * 2^0 <----------------------> value : +/- 0.5\n","*********************\n","117) +/- (0/10000) * 2^1 <----------------------> value : +/- 1.0\n","*********************\n","118) +/- (0/10000) * 2^2 <----------------------> value : +/- 2.0\n","*********************\n","119) +/- (0/10000) * 2^3 <----------------------> value : +/- 4.0\n","*********************\n","120) +/- (0/10000) * 2^4 <----------------------> value : +/- 8.0\n","*********************\n","121) +/- (0/10000) * 2^5 <----------------------> value : +/- 16.0\n","*********************\n","122) +/- (0/10101) * 2^-5 <----------------------> value : +/- 0.0205078125\n","*********************\n","123) +/- (0/10101) * 2^-4 <----------------------> value : +/- 0.041015625\n","*********************\n","124) +/- (0/10101) * 2^-3 <----------------------> value : +/- 0.08203125\n","*********************\n","125) +/- (0/10101) * 2^-2 <----------------------> value : +/- 0.1640625\n","*********************\n","126) +/- (0/10101) * 2^-1 <----------------------> value : +/- 0.328125\n","*********************\n","127) +/- (0/10101) * 2^0 <----------------------> value : +/- 0.65625\n","*********************\n","128) +/- (0/10101) * 2^1 <----------------------> value : +/- 1.3125\n","*********************\n","129) +/- (0/10101) * 2^2 <----------------------> value : +/- 2.625\n","*********************\n","130) +/- (0/10101) * 2^3 <----------------------> value : +/- 5.25\n","*********************\n","131) +/- (0/10101) * 2^4 <----------------------> value : +/- 10.5\n","*********************\n","132) +/- (0/10101) * 2^5 <----------------------> value : +/- 21.0\n","*********************\n","133) +/- (0/11111) * 2^-5 <----------------------> value : +/- 0.0302734375\n","*********************\n","134) +/- (0/11111) * 2^-4 <----------------------> value : +/- 0.060546875\n","*********************\n","135) +/- (0/11111) * 2^-3 <----------------------> value : +/- 0.12109375\n","*********************\n","136) +/- (0/11111) * 2^-2 <----------------------> value : +/- 0.2421875\n","*********************\n","137) +/- (0/11111) * 2^-1 <----------------------> value : +/- 0.484375\n","*********************\n","138) +/- (0/11111) * 2^0 <----------------------> value : +/- 0.96875\n","*********************\n","139) +/- (0/11111) * 2^1 <----------------------> value : +/- 1.9375\n","*********************\n","140) +/- (0/11111) * 2^2 <----------------------> value : +/- 3.875\n","*********************\n","141) +/- (0/11111) * 2^3 <----------------------> value : +/- 7.75\n","*********************\n","142) +/- (0/11111) * 2^4 <----------------------> value : +/- 15.5\n","*********************\n","143) +/- (0/11111) * 2^5 <----------------------> value : +/- 31.0\n","*********************\n","144) +/- (0/10001) * 2^-5 <----------------------> value : +/- 0.0166015625\n","*********************\n","145) +/- (0/10001) * 2^-4 <----------------------> value : +/- 0.033203125\n","*********************\n","146) +/- (0/10001) * 2^-3 <----------------------> value : +/- 0.06640625\n","*********************\n","147) +/- (0/10001) * 2^-2 <----------------------> value : +/- 0.1328125\n","*********************\n","148) +/- (0/10001) * 2^-1 <----------------------> value : +/- 0.265625\n","*********************\n","149) +/- (0/10001) * 2^0 <----------------------> value : +/- 0.53125\n","*********************\n","150) +/- (0/10001) * 2^1 <----------------------> value : +/- 1.0625\n","*********************\n","151) +/- (0/10001) * 2^2 <----------------------> value : +/- 2.125\n","*********************\n","152) +/- (0/10001) * 2^3 <----------------------> value : +/- 4.25\n","*********************\n","153) +/- (0/10001) * 2^4 <----------------------> value : +/- 8.5\n","*********************\n","154) +/- (0/10001) * 2^5 <----------------------> value : +/- 17.0\n","*********************\n","155) +/- (0/10011) * 2^-5 <----------------------> value : +/- 0.0185546875\n","*********************\n","156) +/- (0/10011) * 2^-4 <----------------------> value : +/- 0.037109375\n","*********************\n","157) +/- (0/10011) * 2^-3 <----------------------> value : +/- 0.07421875\n","*********************\n","158) +/- (0/10011) * 2^-2 <----------------------> value : +/- 0.1484375\n","*********************\n","159) +/- (0/10011) * 2^-1 <----------------------> value : +/- 0.296875\n","*********************\n","160) +/- (0/10011) * 2^0 <----------------------> value : +/- 0.59375\n","*********************\n","161) +/- (0/10011) * 2^1 <----------------------> value : +/- 1.1875\n","*********************\n","162) +/- (0/10011) * 2^2 <----------------------> value : +/- 2.375\n","*********************\n","163) +/- (0/10011) * 2^3 <----------------------> value : +/- 4.75\n","*********************\n","164) +/- (0/10011) * 2^4 <----------------------> value : +/- 9.5\n","*********************\n","165) +/- (0/10011) * 2^5 <----------------------> value : +/- 19.0\n","*********************\n","166) +/- (0/10100) * 2^-5 <----------------------> value : +/- 0.01953125\n","*********************\n","167) +/- (0/10100) * 2^-4 <----------------------> value : +/- 0.0390625\n","*********************\n","168) +/- (0/10100) * 2^-3 <----------------------> value : +/- 0.078125\n","*********************\n","169) +/- (0/10100) * 2^-2 <----------------------> value : +/- 0.15625\n","*********************\n","170) +/- (0/10100) * 2^-1 <----------------------> value : +/- 0.3125\n","*********************\n","171) +/- (0/10100) * 2^0 <----------------------> value : +/- 0.625\n","*********************\n","172) +/- (0/10100) * 2^1 <----------------------> value : +/- 1.25\n","*********************\n","173) +/- (0/10100) * 2^2 <----------------------> value : +/- 2.5\n","*********************\n","174) +/- (0/10100) * 2^3 <----------------------> value : +/- 5.0\n","*********************\n","175) +/- (0/10100) * 2^4 <----------------------> value : +/- 10.0\n","*********************\n","176) +/- (0/10100) * 2^5 <----------------------> value : +/- 20.0\n","*********************\n"]}]}]} -------------------------------------------------------------------------------- /project 1/2/2 - ‫‪Bisection‬‬/Bisection‬‬ -Version - 1.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyPCFvPRfV9vqUNFQxAvmeVe"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["Execute the code with the error : \n","\n","![Screenshot from 2022-12-19 02-01-57.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAAAvCAAAAADh3fYSAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfmDBIWIScCF19gAAAAAW9yTlQBz6J3mgAAAjJJREFUWMNj+D/QgGGgHTDqglEXjLpg1AWjLhh1AaYLzp6hvsFEmwl2gbc79V1AtJl0dsHXAXbBzUwj/C74R7TxRKjEdMF+X0azNcgCf9Fc8CuR1e///92yXgQNJ0olmgt+LTZkCT+GHB7RQjyiE1Fc0DKvj+HyJbnSiQRdQJRKFBe8a5cWrniMLH2UJ+Pp/+/vUFzw+/8Lhn6jUxhG/fgMB98gIrhU4nLB3Wxu7ZnfUGTfSGfAmCgpUYVrOaZR8QxwoA8XxKoSlwviWeegy7Yzn3n8+PFHDBeEyWAx6uF5OLgBF8SqEgpeoLvgmBtL8EFUNfq8ykCwAN0FlyQY3v4nCuBRecYpCt0F//9fSWI3mP8DSYCzGM5EcsErvS0Mm0CMQ9P/PJ14CI8DYCqxKKwvs43GdMH//y/rRMVqn8F4/zgKMV2ws99w1V+B2Bcx/2dVCk1IyeD4gct+uEpsCn//z8bqgv//v8/SYo0+DeU4yr/8//8RqgtSmTr//y9lULz0/+d/kej/J1l/43IBXCVC4YXTYPAaJI3LBUCfb3PRgDKvanFqKoX+Q3HBe1De/P/kJ5C4y3D3/1RjnHGAUAlX6G0NBpvxuwAIHsBZL579wUgHcLBI+f//kLz/hAFWhXhdgAVgc0E60Az5JUe+EdSMVWFKOBku8EMt4XUm///vpF5LuPrBonBXPA934kZMMwm4AAv4/ZFIA4hWSKoL6AdGXTDqglEXjLpg1AWjLhhcLgAAcfetz0LAs2AAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMTItMThUMjI6MzM6MTMrMDA6MDDJD3AuAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTEyLTE4VDIyOjMzOjEzKzAwOjAwuFLIkgAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAASUVORK5CYII=) ‬ \n"],"metadata":{"id":"91ALd97TSXs4"}},{"cell_type":"code","source":["#Define the objective function\n","def founction(x):\n"," return (x ** 3) - x - 2"],"metadata":{"id":"Hh1RK9e7SYJo","executionInfo":{"status":"ok","timestamp":1671401454433,"user_tz":-210,"elapsed":13,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":1,"outputs":[]},{"cell_type":"code","source":["#Definition of the function for theorem ‫‪\n","\n","#Function inputs that include the start and end of the range and x(n - 1) from the previous steps and error value and steps\n","def Bisection(a, b, x_before = None, error = 1e-3, step = 0):\n"," #Checking the Bolzano theorem\n"," if founction(a) * founction(b) >= 0: \n"," return False #return false\n"," \n"," else:\n"," #In the best case, maybe the middle point is our root\n"," if founction((a + b) / 2) == 0:\n"," return f\"The root of the function is: {(a + b) / 2} and number of step {step + 1}\" # Because a move was made but not counted\n","\n","\n"," #Here the interval is divided into two parts (a, (a + b) / 2) and ((a + b) / 2, b)\n"," else:\n","\n"," if founction(a) * founction((a + b) / 2) < 0: #Examining Bolzano's theorem for the first interval means: << (a, (a + b) / 2) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs((a + b) / 2 - x_before) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {(a + b) / 2} and number of step {step + 1}\" # Because a move was made but not counted\n"," else:\n"," return Bisection(a , (a + b) / 2, (a + b) / 2 , error, step + 1) #The error condition is not met and the next step is taken\n"," else: #It is the first step and must be produced x (n - 1)\n"," return Bisection(a, (a + b) / 2, (a + b) / 2, error, step + 1) #The interval has changed and saved this (a + b) / 2 to the previous << x_bofore >>\n"," \n"," elif founction((a + b) / 2) * founction(b) < 0: #Examining Bolzano's theorem for the first interval means: << ((a + b) / 2, b) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs((a + b) / 2 - x_before) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {(a + b) / 2} and number of step {step + 1}\" # Because a move was made but not counted\n"," else:\n"," return Bisection((a + b) / 2 , b, (a + b) / 2 , error, step + 1) #The error condition is not met and the next step is taken\n"," else: #It is the first step and must be produced x (n - 1)\n"," return Bisection((a + b) / 2, b, (a + b) / 2, error, step + 1) #The interval has changed and saved this (a + b) / 2 to the previous << x_bofore >>"],"metadata":{"id":"3lcBdu9nEJF1","executionInfo":{"status":"ok","timestamp":1671402503265,"user_tz":-210,"elapsed":6,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["Bisection(1, 2, None, 1e-10, 0)"],"metadata":{"id":"C6Py7Z0e76Ug","colab":{"base_uri":"https://localhost:8080/","height":36},"executionInfo":{"status":"ok","timestamp":1671402510834,"user_tz":-210,"elapsed":55,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"23ba0907-b8c5-4271-956e-4425a00399ed"},"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'The root of the function is: 1.5213797068572603 and number of step 34'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":4}]}]} -------------------------------------------------------------------------------- /project 1/2/2 - ‫‪Bisection‬‬/Bisection‬‬-Version - 2.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyM8JwynWT5/ll9O/hq9lzh6"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["Execute the code with the error : \n","\n","![Screenshot from 2022-12-19 02-01-57 (1).png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF4AAAAgCAAAAAC+kZADAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfmDBIWKiB/hxMIAAAAAW9yTlQBz6J3mgAAArJJREFUSMdj+E9TwDBq/Kjxo8aPGo9p/NkzMP69bds/Qlj372NRfv05jIXQQth4b3cI73NgUh7DdRDrTazFKSzKd+nlfv2PooUU40O9//+f/w/IeKlR8Rer+p9xll9wG/8Vr/FXGVZBhd0Ccbnnj0kSLuNvZhrhNT6f4SVEdCvjTQjjH5bwYbyA1fj9voxma5AF/qIafyGEhVFe/jSYbw4W/pXI6vf//25ZL2Rd/yQzMY3/tdiQJfwYsk+ihXhEJyIb//O9cPT79yA7f7KXgoVb5vUxXL4kVzoRxZkRsujGv2uXFq54jKzmKE/G0//f36EEzm2GaRDJCwxzwPTv/y8Y+o3QU1A9w1sU4+9mc2vP/Iai5I10BmbYL2SApuXtDOthClW4lqMH/iSGqyjGx7POQVfSznzm8ePHH1GNT+f4BZFdz7AVpjBMBiNuZ4BdgTD+mBtL8EFUJfq8ykCwANV4XUuo7C6G1VDWJQlwSKCAPoYbaGF/JYndYP4PJCWcxf8xAucjUz4s2hmgkflKbwvDJhDj0PQ/TycegggWM335j55yXtaJitU+g/H+cRRiGr+TYRlU8C9fGoja2W+46q9A7IuY/7MqhSakZHBAHOih+f8/Zrr/PkuLNfo0lOMoD8xAj1CNr2e4A1MbrQQiU5k6//8vZVC89P/nf5Ho/ydZf4NEv/FUYTMe6OZtLhpQ5lUtTk2l0H8oxruJw1WeYtgLJN+/A7Gf/AQSdxnu/p9qDJaby/4Yu/FA8ADOevHsD2rg/OBORqhL1v+Oom+R8v//IXkg1luplv84jccACOPnsV1DCH/z9HiHrCw9+v9/+SVHvv1/ZJL4l2Tj/by+OstvRRb/3ae7C4mrM/n/fyf12n+L9BZARfy8iDceWM4+RZf5+wVN4DcwF34ixkwsxtMIAAD64se+rorKggAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0xMi0xOFQyMjo0MjoxOCswMDowMA3xWmkAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMTItMThUMjI6NDI6MTgrMDA6MDB8rOLVAAAAGXRFWHRTb2Z0d2FyZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAAABJRU5ErkJggg==)"],"metadata":{"id":"gyk58vsRZeyg"}},{"cell_type":"code","source":["#Define the objective function\n","def founction(x):\n"," return (x ** 3) - x - 2"],"metadata":{"id":"4fPdk0AdZ4YY","executionInfo":{"status":"ok","timestamp":1671403377502,"user_tz":-210,"elapsed":9,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["#Definition of the function for theorem ‫‪\n","\n","#Function inputs that include the start and end of the range and x(n - 1) from the previous steps and error value and steps\n","def Bisection(a, b, x_before = None, error = 1e-10, step = 0):\n"," #Checking the Bolzano theorem\n"," if founction(a) * founction(b) >= 0:\n"," return False #return false\n"," \n"," else:\n"," #In the best case, maybe the middle point is our root\n"," if founction((a + b) / 2) == 0:\n"," return f\"The root of the function is: {(a + b) / 2} and number of step {step + 1}\" # Because a move was made but not counted\n"," \n"," \n"," \n"," #Here the interval is divided into two parts (a, (a + b) / 2) and ((a + b) / 2, b)\n"," else:\n"," if founction(a) * founction((a + b) / 2) < 0: #Examining Bolzano's theorem for the first interval means: << (a, (a + b) / 2) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs(founction((a + b)) / 2) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {(a + b) / 2} and number of step {step + 1} \" # Because a move was made but not counted\n"," else:\n"," return Bisection(a , (a + b) / 2, (a + b) / 2 , error, step + 1) #The error condition is not met and the next step is taken\n"," else: #It is the first step and must be produced x (n - 1)\n"," return Bisection(a, (a + b) / 2, (a + b) / 2, error, step + 1) #The interval has changed and saved this (a + b) / 2 to the previous << x_bofore >>\n"," \n"," elif founction((a + b) / 2) * founction(b) < 0: #Examining Bolzano's theorem for the first interval means: << (a, (a + b) / 2) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs(founction((a + b) / 2)) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {(a + b) / 2} and number of step {step + 1}\" # Because a move was made but not counted \n"," else:\n"," return Bisection((a + b) / 2 , b, (a + b) / 2 , error, step + 1)#The error condition is not met and the next step is taken\n"," else: #It is the first step and must be produced x (n - 1)\n"," return Bisection((a + b) / 2, b, (a + b) / 2, error, step + 1) #The interval has changed and saved this (a + b) / 2 to the previous << x_bofore >>"],"metadata":{"id":"SIW4r1x1p8M8","executionInfo":{"status":"ok","timestamp":1671403382855,"user_tz":-210,"elapsed":8,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["Bisection(1, 2, None, 1e-10, 0)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":36},"id":"WAzGD6BqqP6v","executionInfo":{"status":"ok","timestamp":1671403386342,"user_tz":-210,"elapsed":384,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"b0740810-408d-4eb6-c356-0b23da4c0e1d"},"execution_count":6,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'The root of the function is: 1.5213797067990527 and number of step 33'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":6}]}]} -------------------------------------------------------------------------------- /project 1/2/2 - ‫‪Position‬‬ ‫‪False‬‬/Position‬‬ False‬‬-Version - 2.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyOX8KkbllE+MjgV47ZerD+k"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["Execute the code with the error : \n","\n","![Screenshot from 2022-12-19 02-01-57 (1).png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF4AAAAgCAAAAAC+kZADAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfmDBIWKiB/hxMIAAAAAW9yTlQBz6J3mgAAArJJREFUSMdj+E9TwDBq/Kjxo8aPGo9p/NkzMP69bds/Qlj372NRfv05jIXQQth4b3cI73NgUh7DdRDrTazFKSzKd+nlfv2PooUU40O9//+f/w/IeKlR8Rer+p9xll9wG/8Vr/FXGVZBhd0Ccbnnj0kSLuNvZhrhNT6f4SVEdCvjTQjjH5bwYbyA1fj9voxma5AF/qIafyGEhVFe/jSYbw4W/pXI6vf//25ZL2Rd/yQzMY3/tdiQJfwYsk+ihXhEJyIb//O9cPT79yA7f7KXgoVb5vUxXL4kVzoRxZkRsujGv2uXFq54jKzmKE/G0//f36EEzm2GaRDJCwxzwPTv/y8Y+o3QU1A9w1sU4+9mc2vP/Iai5I10BmbYL2SApuXtDOthClW4lqMH/iSGqyjGx7POQVfSznzm8ePHH1GNT+f4BZFdz7AVpjBMBiNuZ4BdgTD+mBtL8EFUJfq8ykCwANV4XUuo7C6G1VDWJQlwSKCAPoYbaGF/JYndYP4PJCWcxf8xAucjUz4s2hmgkflKbwvDJhDj0PQ/TycegggWM335j55yXtaJitU+g/H+cRRiGr+TYRlU8C9fGoja2W+46q9A7IuY/7MqhSakZHBAHOih+f8/Zrr/PkuLNfo0lOMoD8xAj1CNr2e4A1MbrQQiU5k6//8vZVC89P/nf5Ho/ydZf4NEv/FUYTMe6OZtLhpQ5lUtTk2l0H8oxruJw1WeYtgLJN+/A7Gf/AQSdxnu/p9qDJaby/4Yu/FA8ADOevHsD2rg/OBORqhL1v+Oom+R8v//IXkg1luplv84jccACOPnsV1DCH/z9HiHrCw9+v9/+SVHvv1/ZJL4l2Tj/by+OstvRRb/3ae7C4mrM/n/fyf12n+L9BZARfy8iDceWM4+RZf5+wVN4DcwF34ixkwsxtMIAAD64se+rorKggAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0xMi0xOFQyMjo0MjoxOCswMDowMA3xWmkAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMTItMThUMjI6NDI6MTgrMDA6MDB8rOLVAAAAGXRFWHRTb2Z0d2FyZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAAABJRU5ErkJggg==)"],"metadata":{"id":"fvo9swSHfpZI"}},{"cell_type":"code","source":["#Define the objective function\n","def founction(x):\n"," return (x ** 3) - x - 2"],"metadata":{"id":"Kh0s2EXtftDh","executionInfo":{"status":"ok","timestamp":1671404931325,"user_tz":-210,"elapsed":23,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":1,"outputs":[]},{"cell_type":"code","source":["#Implementation of the part formula: position false\n","def position_false_calcute_x(a ,b):\n"," return ((a * founction(b)) - (b * founction(a))) / (founction(b) - founction(a))"],"metadata":{"id":"HCgSTERUsdOm","executionInfo":{"status":"ok","timestamp":1671405559042,"user_tz":-210,"elapsed":436,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["#Function inputs : The two ends of the interval and the value X the step of the arrow and the number of steps\n","def position_false(a , b, x_before = None, error=1e-10, step = 0):\n"," if founction(a) * founction(b) > 0: #Checking the Bolzano theorem\n"," return False #return a false\n"," else:\n"," x = position_false_calcute_x(a, b) #Calculation of X based on N's formula\n"," if founction(x) == 0: #If the value of the function becomes zero at the same point, then we have reached our goal and the root has been found\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # Because a move was made but not counted\n","\n"," #Here the interval is divided into two parts (a, x) and (x, b)\n"," elif founction(a) * founction(x) < 0: #Examining Bolzano's theorem for the first interval means: << (a, x) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs(founction(x)) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # Because a move was made but not counted\n"," else:\n"," return position_false(a ,x ,x ,error, step + 1) #The error condition is not met and the next step is taken\n"," else: #It is the first step and must be produced x (n - 1)\n"," return position_false(a ,x ,x ,error, step + 1) #The interval has changed and saved this x to the previous << x_bofore >>\n"," \n"," \n"," elif founction(x) * founction(b) < 0: #Examining Bolzano's theorem for the first interval means: << (x, b) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs(founction(x)) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # Because a move was made but not counted\n"," else:\n"," return position_false(x ,b ,x ,error, step + 1) #The error condition is not met and the next step is taken \n"," else: #It is the first step and must be produced x (n - 1)\n"," return position_false(x ,b ,x ,error, step + 1) #The interval has changed and saved this x to the previous << x_bofore >>"],"metadata":{"id":"zQJPasAzf3Fw","executionInfo":{"status":"ok","timestamp":1671404989784,"user_tz":-210,"elapsed":533,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["position_false(1, 2, None, 1e-10)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":36},"id":"-DfyQvbGseQt","executionInfo":{"status":"ok","timestamp":1671404998547,"user_tz":-210,"elapsed":33,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"e8006d15-b5c2-4736-e012-a82ae31d261c"},"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'The root of the function is: 1.5213797067927124 and number of step 20'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":4}]}]} -------------------------------------------------------------------------------- /project 1/2/2 - ‫‪Position‬‬ ‫‪False‬‬/Position‬‬ ‫‪False‬‬-Version - 1.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyMkg18BNEJkt3+G93JDQVEt"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["Execute the code with the error : \n","\n","![Screenshot from 2022-12-19 02-01-57.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAAAvCAAAAADh3fYSAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfmDBIWIScCF19gAAAAAW9yTlQBz6J3mgAAAjJJREFUWMNj+D/QgGGgHTDqglEXjLpg1AWjLhh1AaYLzp6hvsFEmwl2gbc79V1AtJl0dsHXAXbBzUwj/C74R7TxRKjEdMF+X0azNcgCf9Fc8CuR1e///92yXgQNJ0olmgt+LTZkCT+GHB7RQjyiE1Fc0DKvj+HyJbnSiQRdQJRKFBe8a5cWrniMLH2UJ+Pp/+/vUFzw+/8Lhn6jUxhG/fgMB98gIrhU4nLB3Wxu7ZnfUGTfSGfAmCgpUYVrOaZR8QxwoA8XxKoSlwviWeegy7Yzn3n8+PFHDBeEyWAx6uF5OLgBF8SqEgpeoLvgmBtL8EFUNfq8ykCwAN0FlyQY3v4nCuBRecYpCt0F//9fSWI3mP8DSYCzGM5EcsErvS0Mm0CMQ9P/PJ14CI8DYCqxKKwvs43GdMH//y/rRMVqn8F4/zgKMV2ws99w1V+B2Bcx/2dVCk1IyeD4gct+uEpsCn//z8bqgv//v8/SYo0+DeU4yr/8//8RqgtSmTr//y9lULz0/+d/kej/J1l/43IBXCVC4YXTYPAaJI3LBUCfb3PRgDKvanFqKoX+Q3HBe1De/P/kJ5C4y3D3/1RjnHGAUAlX6G0NBpvxuwAIHsBZL579wUgHcLBI+f//kLz/hAFWhXhdgAVgc0E60Az5JUe+EdSMVWFKOBku8EMt4XUm///vpF5LuPrBonBXPA934kZMMwm4AAv4/ZFIA4hWSKoL6AdGXTDqglEXjLpg1AWjLhhcLgAAcfetz0LAs2AAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMTItMThUMjI6MzM6MTMrMDA6MDDJD3AuAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTEyLTE4VDIyOjMzOjEzKzAwOjAwuFLIkgAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAASUVORK5CYII=) ‬ \n"],"metadata":{"id":"xwNc0I8CaHsE"}},{"cell_type":"code","source":["#Define the objective function\n","def founction(x):\n"," return (x ** 3) - x - 2"],"metadata":{"id":"0e7ciBnIaKPF","executionInfo":{"status":"ok","timestamp":1671403536459,"user_tz":-210,"elapsed":564,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["#Implementation of the part formula: position false\n","def position_false_calcute_x(a ,b):\n"," return ((a * founction(b)) - (b * founction(a))) / (founction(b) - founction(a))"],"metadata":{"id":"AVIzZK8k4u5c","executionInfo":{"status":"ok","timestamp":1671404089643,"user_tz":-210,"elapsed":577,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":9,"outputs":[]},{"cell_type":"code","source":["#Function inputs : The two ends of the interval and the value X the step of the arrow and the number of steps\n","def position_false(a , b, x_before = None, error=1e-10, step = 0):\n"," if founction(a) * founction(b) > 0: #Checking the Bolzano theorem\n"," return False #return a false\n"," else:\n"," x = position_false_calcute_x(a, b) #Calculation of X based on N's formula\n"," if founction(x) == 0: #If the value of the function becomes zero at the same point, then we have reached our goal and the root has been found\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # Because a move was made but not counted\n","\n"," #Here the interval is divided into two parts (a, x) and (x, b)\n"," elif founction(a) * founction(x) < 0: #Examining Bolzano's theorem for the first interval means: << (a, x) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs(x - x_before) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # Because a move was made but not counted\n"," else:\n"," return position_false(a ,x ,x ,error, step + 1) #The error condition is not met and the next step is taken\n"," else: #It is the first step and must be produced x (n - 1)\n"," return position_false(a ,x ,x ,error, step + 1) #The interval has changed and saved this x to the previous << x_bofore >>\n"," \n"," \n"," elif founction(x) * founction(b) < 0: #Examining Bolzano's theorem for the first interval means: << (x, b) >>\n"," if x_before != None: #In the sense that it is not our first step\n"," if abs(x - x_before) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # Because a move was made but not counted\n"," else:\n"," return position_false(x ,b ,x ,error, step + 1) #The error condition is not met and the next step is taken \n"," else: #It is the first step and must be produced x (n - 1)\n"," return position_false(x ,b ,x ,error, step + 1) #The interval has changed and saved this x to the previous << x_bofore >>"],"metadata":{"id":"kqLGrEAY4vAw","executionInfo":{"status":"ok","timestamp":1671403540226,"user_tz":-210,"elapsed":593,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":["position_false(1, 2, None, 1e-10, 0)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":36},"id":"RBpJ0Ad44vKw","executionInfo":{"status":"ok","timestamp":1671403542500,"user_tz":-210,"elapsed":18,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"1da395e0-69ce-41bd-c1ef-d52591caf0e7"},"execution_count":8,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'The root of the function is: 1.5213797067927124 and number of step 20'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":8}]}]} -------------------------------------------------------------------------------- /project 1/2/2 - ‫‪Secant‬‬/ ‫‪Secant‬‬ - Version - 1.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyPe0vK4Jf1WncjHpvX+dsDA"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["Execute the code with the error : \n","\n","![Screenshot from 2022-12-19 02-01-57.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIEAAAAvCAAAAADh3fYSAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfmDBIWIScCF19gAAAAAW9yTlQBz6J3mgAAAjJJREFUWMNj+D/QgGGgHTDqglEXjLpg1AWjLhh1AaYLzp6hvsFEmwl2gbc79V1AtJl0dsHXAXbBzUwj/C74R7TxRKjEdMF+X0azNcgCf9Fc8CuR1e///92yXgQNJ0olmgt+LTZkCT+GHB7RQjyiE1Fc0DKvj+HyJbnSiQRdQJRKFBe8a5cWrniMLH2UJ+Pp/+/vUFzw+/8Lhn6jUxhG/fgMB98gIrhU4nLB3Wxu7ZnfUGTfSGfAmCgpUYVrOaZR8QxwoA8XxKoSlwviWeegy7Yzn3n8+PFHDBeEyWAx6uF5OLgBF8SqEgpeoLvgmBtL8EFUNfq8ykCwAN0FlyQY3v4nCuBRecYpCt0F//9fSWI3mP8DSYCzGM5EcsErvS0Mm0CMQ9P/PJ14CI8DYCqxKKwvs43GdMH//y/rRMVqn8F4/zgKMV2ws99w1V+B2Bcx/2dVCk1IyeD4gct+uEpsCn//z8bqgv//v8/SYo0+DeU4yr/8//8RqgtSmTr//y9lULz0/+d/kej/J1l/43IBXCVC4YXTYPAaJI3LBUCfb3PRgDKvanFqKoX+Q3HBe1De/P/kJ5C4y3D3/1RjnHGAUAlX6G0NBpvxuwAIHsBZL579wUgHcLBI+f//kLz/hAFWhXhdgAVgc0E60Az5JUe+EdSMVWFKOBku8EMt4XUm///vpF5LuPrBonBXPA934kZMMwm4AAv4/ZFIA4hWSKoL6AdGXTDqglEXjLpg1AWjLhhcLgAAcfetz0LAs2AAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMTItMThUMjI6MzM6MTMrMDA6MDDJD3AuAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTEyLTE4VDIyOjMzOjEzKzAwOjAwuFLIkgAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAASUVORK5CYII=) ‬ "],"metadata":{"id":"pKX895ksgV53"}},{"cell_type":"code","source":["#Define the objective function\n","def founction(x):\n"," return (x ** 3) - x - 2"],"metadata":{"id":"_Lo2hPlhgZSC"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["#Implementation of the part formula: ‫‪Secant‬‬\n","def seacent_calcute_x(x_n_1, x_n_2):\n"," return ((x_n_1 * founction(x_n_2)) - (x_n_2 * founction(x_n_1))) / (founction(x_n_2) - founction(x_n_1))"],"metadata":{"id":"obev4cp8iu2s"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["#Function input : 2 initial guess and error and steps\n","def seacent(x_n_1, x_n_2, error = 1e-10, step = 0):\n"," x = seacent_calcute_x(x_n_1, x_n_2) # Calculate x(n) with the function we defined ourselves\n","\n"," if abs(x - x_n_1) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # Because a move was made but not counted\n"," else:\n"," return seacent(x, x_n_1, 1e-10, step + 1) #go to next step\n"],"metadata":{"id":"MyS2QB6lrO8i"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["seacent(1, 2, 1e-10, 0)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":36},"id":"-E_BOqRksTEH","executionInfo":{"status":"ok","timestamp":1671408885237,"user_tz":-210,"elapsed":23,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"8ae91217-d31d-4894-acc1-a56a71a83b8d"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'The root of the function is: 1.5213797068045676 and number of step 8'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":47}]}]} -------------------------------------------------------------------------------- /project 1/2/2 - ‫‪Secant‬‬/ ‫‪Secant‬‬ - version - 2.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyNIc/IcMWZTdvK466TsMViC"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":["Execute the code with the error : \n","\n","![Screenshot from 2022-12-19 02-01-57 (1).png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF4AAAAgCAAAAAC+kZADAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfmDBIWKiB/hxMIAAAAAW9yTlQBz6J3mgAAArJJREFUSMdj+E9TwDBq/Kjxo8aPGo9p/NkzMP69bds/Qlj372NRfv05jIXQQth4b3cI73NgUh7DdRDrTazFKSzKd+nlfv2PooUU40O9//+f/w/IeKlR8Rer+p9xll9wG/8Vr/FXGVZBhd0Ccbnnj0kSLuNvZhrhNT6f4SVEdCvjTQjjH5bwYbyA1fj9voxma5AF/qIafyGEhVFe/jSYbw4W/pXI6vf//25ZL2Rd/yQzMY3/tdiQJfwYsk+ihXhEJyIb//O9cPT79yA7f7KXgoVb5vUxXL4kVzoRxZkRsujGv2uXFq54jKzmKE/G0//f36EEzm2GaRDJCwxzwPTv/y8Y+o3QU1A9w1sU4+9mc2vP/Iai5I10BmbYL2SApuXtDOthClW4lqMH/iSGqyjGx7POQVfSznzm8ePHH1GNT+f4BZFdz7AVpjBMBiNuZ4BdgTD+mBtL8EFUJfq8ykCwANV4XUuo7C6G1VDWJQlwSKCAPoYbaGF/JYndYP4PJCWcxf8xAucjUz4s2hmgkflKbwvDJhDj0PQ/TycegggWM335j55yXtaJitU+g/H+cRRiGr+TYRlU8C9fGoja2W+46q9A7IuY/7MqhSakZHBAHOih+f8/Zrr/PkuLNfo0lOMoD8xAj1CNr2e4A1MbrQQiU5k6//8vZVC89P/nf5Ho/ydZf4NEv/FUYTMe6OZtLhpQ5lUtTk2l0H8oxruJw1WeYtgLJN+/A7Gf/AQSdxnu/p9qDJaby/4Yu/FA8ADOevHsD2rg/OBORqhL1v+Oom+R8v//IXkg1luplv84jccACOPnsV1DCH/z9HiHrCw9+v9/+SVHvv1/ZJL4l2Tj/by+OstvRRb/3ae7C4mrM/n/fyf12n+L9BZARfy8iDceWM4+RZf5+wVN4DcwF34ixkwsxtMIAAD64se+rorKggAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0xMi0xOFQyMjo0MjoxOCswMDowMA3xWmkAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMTItMThUMjI6NDI6MTgrMDA6MDB8rOLVAAAAGXRFWHRTb2Z0d2FyZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAAABJRU5ErkJggg==)"],"metadata":{"id":"08s8d7eIv5_C"}},{"cell_type":"code","source":["#Define the objective function\n","def founction(x):\n"," return (x ** 3) - x - 2"],"metadata":{"id":"zAfizLWZwGj8"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["#Implementation of the part formula: ‫‪Secant‬‬\n","def seacent_calcute_x(x_n_1, x_n_2):\n"," return ((x_n_1 * founction(x_n_2)) - (x_n_2 * founction(x_n_1))) / (founction(x_n_2) - founction(x_n_1))"],"metadata":{"id":"rZHdW4guwNIY"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["#Function input : 2 initial guess and error and steps\n","def seacent(x_n_1, x_n_2, error = 1e-10, step = 0):\n"," x = seacent_calcute_x(x_n_1, x_n_2) # Calculate x(n) with the function we defined ourselves\n","\n"," if abs(founction(x)) < error: # If the error condition is met, you should not continue and end of work\n"," return f\"The root of the function is: {x} and number of step {step + 1}\" # # Because a move was made but not counted\n"," else:\n"," return seacent(x, x_n_1, 1e-10, step + 1) #go to next step"],"metadata":{"id":"qS4kcoAQwR6z"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["seacent(1, 2, 1e-10, 0)"],"metadata":{"id":"jKgntGwcwaXr","executionInfo":{"status":"ok","timestamp":1671409283777,"user_tz":-210,"elapsed":365,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"690d9192-4109-4138-990e-39ce0f1c15dc","colab":{"base_uri":"https://localhost:8080/","height":36}},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'The root of the function is: 1.5213797068040895 and number of step 7'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":4}]}]} -------------------------------------------------------------------------------- /project 1/project(Fa).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/notesparvvaresh/project-of-numerical-analysis/77f50d92ab6e635b384a98f74dacec9c99ea8c52/project 1/project(Fa).pdf -------------------------------------------------------------------------------- /project 1/report.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/notesparvvaresh/project-of-numerical-analysis/77f50d92ab6e635b384a98f74dacec9c99ea8c52/project 1/report.docx -------------------------------------------------------------------------------- /project 2/1.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyOpnxfthQaFqiD6+/Jw3pda"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"id":"EZtbwdOHnxTp","executionInfo":{"status":"ok","timestamp":1674264088583,"user_tz":-210,"elapsed":17,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"outputs":[],"source":["import numpy as np\n","import matplotlib.pyplot as plt"]},{"cell_type":"code","source":["def founction(x):\n"," return 1 / (1 + (x ** 2))"],"metadata":{"id":"T1_VGRLmn2gr","executionInfo":{"status":"ok","timestamp":1674264095779,"user_tz":-210,"elapsed":619,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["#Generate an arbitrary number of points between intervals\n","def make_points(start, end, number_of_points):\n"," h = abs(start - end) / (number_of_points - 1)\n"," result = []\n"," for i in range(0, number_of_points):\n"," result.append(start + (i * h))\n"," return result"],"metadata":{"id":"mVDq_uP_n5sH","executionInfo":{"status":"ok","timestamp":1674264274712,"user_tz":-210,"elapsed":7,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["#Implementation of function L\n","def l(i, points, x, number_of_points):\n"," result = 1\n"," x_i = points[i]\n"," for j in range(0, number_of_points):\n"," if(i != j):\n"," result *= (x - points[j]) / (x_i - points[j])\n"," return result * founction(x)"],"metadata":{"id":"52Qg46T7n7no","executionInfo":{"status":"ok","timestamp":1674264273352,"user_tz":-210,"elapsed":10,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["def calcute_y_main(points):\n"," result = []\n"," for element in points:\n"," result.append(founction(element))\n"," return result"],"metadata":{"id":"aRZNVlzFn9yE","executionInfo":{"status":"ok","timestamp":1674264271829,"user_tz":-210,"elapsed":7,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["def laqrage(number_of_points : int, start = -5, end = 5):\n"," points = make_points(start, end, number_of_points)\n"," test_point = test = list(np.linspace(start, end, 1000))\n"," y_main = calcute_y_main(test_point)\n"," y_approximation = []\n"," for x in test_point:\n"," sum = 0\n"," for i in range(0, number_of_points):\n"," sum += l(i, points, x, number_of_points) \n"," y_approximation.append(sum) \n"," \n"," plt.plot(test_point, y_main, color=\"red\")\n"," plt.show()\n"," plt.plot(test_point, y_approximation, color=\"blue\")\n"," plt.show()"],"metadata":{"id":"qF6uMkcYoAfU","executionInfo":{"status":"ok","timestamp":1674264270020,"user_tz":-210,"elapsed":404,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["laqrage(25)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":513},"id":"IbT_VeLM7X6O","executionInfo":{"status":"ok","timestamp":1674264314577,"user_tz":-210,"elapsed":1680,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"cea6b5b4-2add-48b4-8a79-0b6fecd6defc"},"execution_count":7,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":["laqrage(50)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":513},"id":"H5N8ts9v7i-C","executionInfo":{"status":"ok","timestamp":1674264343853,"user_tz":-210,"elapsed":2254,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"4745eb60-6e39-4580-8a88-50b1071e5e0e"},"execution_count":8,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":["laqrage(60)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":513},"id":"feyJ37Nf7jA9","executionInfo":{"status":"ok","timestamp":1674264356921,"user_tz":-210,"elapsed":2106,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"f2567a17-a7d8-42fa-c5d6-e7c342aa0333"},"execution_count":9,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXiU5b3/8fcXEBRFLbJU2YKICyqIRgQNVgUVEEFrXVDbWj1iq7b11Pbo+bVVjz3tVevRth61Fltb60+luIKKtRI2iYoEEJRNEUXAhaAiyiIE7vPHN1NjDGRIZuaeeebzuq65Jpl5mOc7mnxyz/3ci4UQEBGRwtcsdgEiIpIZCnQRkYRQoIuIJIQCXUQkIRToIiIJ0SLWidu1axdKSkpinV5EpCDNnj17TQihfX3PRQv0kpISKisrY51eRKQgmdny7T2nLhcRkYRQoIuIJIQCXUQkIRToIiIJoUAXEUmIBgPdzO4xs9Vm9up2njczu83MlprZfDM7MvNliohIQ9Jpof8VGLKD54cCPWtuo4E/NL0sERHZWQ2OQw8hTDezkh0cMhL4W/B1eF80s73NbN8QwrsZqlEkN6qr4ckn4ZVXoHdvGD4cmjePXZVI2jIxsagTsKLW9ytrHvtSoJvZaLwVT9euXTNwapEMWbUKzjgDak92KyuDRx6BDh3i1SWyE3J6UTSEMCaEUBpCKG3fvt6ZqyK5t24dnHIKLF4M998P69fDX/4Cs2fDaafBhg2xKxRJSyYCfRXQpdb3nWseEykMP/gBLFkC48fD+edD69Zw0UUwdqyH+jXXxK5QJC2ZCPQJwLdqRrv0Bz5W/7kUjKlT4d57PbRPOumLz40YAVdcAXfc8cWuGJE8ZQ3tKWpmDwInAO2A94HrgV0AQgh3mZkBt+MjYTYA3wkhNPjTX1paGrQ4l0QVgveTv/02vPYa7Lbbl49Ztw723x/69YOJE3Nfo0gdZjY7hFBa33PpjHIZ1cDzAbiikbWJxDNpEjz/PNx5Z/1hDrDnnvCTn8C118LMmXDMMbmtUWQnaKaoFK+bb4ZOneDii3d83BVXwD77+PEieUyBLsVp2TJ49lkYPRpatdrxsXvs4aH/+OPwzju5qU+kERToUpzuvhuaNWu4dZ5y2WWwdSv86U/ZrUukCRToUny2bPFx5sOHQ+fO6f2bHj3g5JP93zUwkEAkFgW6FJ9nn4X334dLLtm5f3fBBfDWW35xVCQPKdCl+Dz0EOy1F5x66s79uzPO8P72sWOzU5dIEynQpbhs3uwXN0eObPhiaF177QXDhsG4cd6fLpJnFOhSXCZNgrVr4ZxzGvfvR42Cd9+F557LbF0iGaBAl+KS6m45+eTG/fuhQ71l/8QTma1LJAMU6FI8tm3z6fvDhkHLlo17jT32gBNP9HXTRfKMAl2Kx5w5sHq1B3pTDB/ua7+89lpm6hLJEAW6FI+JE8Fs50e31HXaaX7/1FNNr0kkgxToUjyeesoX12rq5iolJXDYYep2kbyjQJfisHo1zJrV9O6WlOHDYfp0+PjjzLyeSAYo0KU4PPOMT9nPVKAPGeKbSk+blpnXE8kABboUh0mToF076Ns3M6/Xv7+voV5enpnXE8kABbokXwgwebJvMdcsQz/yrVrBwIH+h0IkTyjQJfmWLoWVK7+8Z2hTDRoECxf6zFGRPKBAl+SbPNnvMx3ogwd/8fVFIlOgS/JNnuzrnh9wQGZf94gjoG1bdbtI3lCgS7Jt2wZTpnjr3Cyzr92smS8DUF6uTS8kLyjQJdkWLICqKg/ebBg0CFas8H56kcgU6JJsqf7tbAV6ql9+6tTsvL7ITlCgS7JNnuz7gXbrlp3XP/BA6NBB66NLXlCgS3Jt2+YzObPVOgfvlx840JcBEIlMgS7JtWCBr7Vy/PHZPc/AgbB8ufeli0SkQJfkmjHD7487LrvnSf3BULeLRKZAl+SqqIB994Xu3bN7nt69Yc891e0i0SnQJblmzPDWeabHn9fVvLmfRy10iUyBLsm0cqX3a5eV5eZ8Awf6ui5r1uTmfCL1UKBLMlVU+H2uAj3Vj57qtxeJQIEuyTRjBuy+O/Tpk5vzlZbCrruqH12iSivQzWyImS0xs6Vmdm09z3c1sylmNtfM5ptZhraFEWmkigrfhKJFi9ycr1Ur369U/egSUYOBbmbNgTuAoUAvYJSZ9apz2M+AcSGEvsB5wJ2ZLlQkbevWwbx52R+uWNfAgTB3LnzySW7PK1IjnRZ6P2BpCGFZCGEzMBYYWeeYAOxZ8/VewDuZK1FkJ734os8SzVX/ecrAgbB1K8ycmdvzitRIJ9A7AbWnwK2seay2G4ALzWwlMBH4fn0vZGajzazSzCqrqqoaUa5IGioqfGnb/v1ze97+/f28ujAqkWTqougo4K8hhM7AMOA+M/vSa4cQxoQQSkMIpe3bt8/QqUXqmDHDL4a2aZPb8+65p59XgS6RpBPoq4Autb7vXPNYbZcA4wBCCC8AuwLtMlGgyE7ZssW7PHLd3ZJSVuZdPlu2xDm/FLV0An0W0NPMuptZS/yi54Q6x7wNDAIws0PwQFefiuTevHmwfn3uL4imlJX5+efNi3N+KWoNBnoIoRq4EngGWISPZllgZjea2Yiaw64GLjWzecCDwEUhaE8uiSBXC3JtT+q86naRCNIapBtCmIhf7Kz92HW1vl4IRPoNEqmlogJKSnxT6Bg6dfLFwJ57Dq66Kk4NUrQ0U1SSI4TPF+SKqazM69CHVMkxBbokx5tvwnvvxbsgmjJwIKxerY2jJecU6JIcqX7r2IGeOr/60SXHFOiSHDNmwN57Q6+6K1Pk2MEHwz77KNAl5xTokhwVFXDssT5bMyYz78dXoEuOKdAlGT780DeYiH1BNKWsDF57zfvSRXJEgS7J8Pzzfh+7/zwlVUdqow2RHFCgSzJUVMAuu8DRR8euxB15pG94oW4XySEFuiTDjBkeorvtFrsS16oV9OunQJecUqBL4fvsM5g1K3/6z1PKymDOHF/bRSQHFOhS+ObM8VDPx0CvroaXXopdiRQJBboUvtgLcm3PgAE+hFH7jEqOKNCl8FVUwAEHQMeOsSv5or33hsMPVz+65IwCXQpbCD5kMd9a5yllZfDCC971IpJlCnQpbK+/DlVV+R3on34K8+fHrkSKgAJdClu+LMi1PVqoS3JIgS6FraIC2raFgw6KXUn9unSBbt0U6JITCnQpbPmyINeOaMMLyZE8/i0QaUBVFSxZkr/95yllZfDuu74Bh0gWKdClcOXbglzbo350yREFuhSuigpo2RJKS2NXsmO9evmYdAW6ZJkCXQpXRQUcdZSvapjPmjXThheSEwp0KUybNkFlZf73n6eUlcGiRbBmTexKJMEU6FKYKith8+b87z9P0YYXkgMKdClMqQWvjj02bh3pKi31/n51u0gWKdClME2b5hcb27ePXUl6dt3Vd1NSoEsWKdCl8FRXe9fF174Wu5KdU1YGs2fDhg2xK5GEUqBL4Zk71xe8KsRA37LFd1cSyQIFuhSeadP8/vjj49axs1L9/ep2kSxRoEvhmTYNevaEffeNXcnOadsWDj1UgS5Zo0CXwrJ1q49wKbTulpSyMl+yYOvW2JVIAinQpbC88gp8/HFhB/q6dfDqq7ErkQRKK9DNbIiZLTGzpWZ27XaOOcfMFprZAjN7ILNlitQo1P7zlIED/V7dLpIFDQa6mTUH7gCGAr2AUWbWq84xPYH/BI4LIRwKXJWFWkVg+nQoKYGuXWNX0jhdu0Lnzgp0yYp0Wuj9gKUhhGUhhM3AWGBknWMuBe4IIXwEEEJYndkyRfANIqZPL9zuFgAz73Z57jlteCEZl06gdwJW1Pp+Zc1jtR0IHGhmFWb2opkNqe+FzGy0mVWaWWVVVVXjKpbitXChL25VyIEOHuirVsHy5bErkYTJ1EXRFkBP4ARgFHC3me1d96AQwpgQQmkIobR9oUzZlvxR6P3nKamFuqZPj1uHJE46gb4K6FLr+841j9W2EpgQQtgSQngTeA0PeJHMKS/3DZf33z92JU1z+OGwzz4weXLsSiRh0gn0WUBPM+tuZi2B84AJdY55HG+dY2bt8C6YZRmsU4rd1q0wZQoMGuT90IWsWTM46SSYNEn96JJRDQZ6CKEauBJ4BlgEjAshLDCzG81sRM1hzwAfmNlCYArwkxDCB9kqWorQ3Lnw0Uce6EkwaJD3o7/2WuxKJEFapHNQCGEiMLHOY9fV+joAP6q5iWReebnfJyXQBw/2+0mT4KCD4tYiiaGZolIYysvhsMOgY8fYlWTG/vv79YDUHyqRDFCgS/7btMnHbSeldQ5+HWDwYL8uoHVdJEMU6JL/XnjBQz3VTZEUgwfD2rUwZ07sSiQhFOiS/8rLoXnzwh9/XtdJJ/n9pElx65DEUKBL/isvh379YM89Y1eSWR06QO/e6keXjFGgS377+GN46aXkdbekDBrkC3Vt3Bi7EkkABbrkt/Jy2LYtuYE+eDB89plvei3SRAp0yW9PP+1dLQMGxK4kO44/HnbZBf75z9iVSAIo0CV/heCBfvLJHnpJtMceHuoTJzZ8rEgDFOiSv1591afHDx0au5LsGjYMFiyAt9+OXYkUOAW65K+nn/b7IfUur58cqT9Yqfcr0kgKdMlfTz/tw/o61d1PJWEOPti31VO3izSRAl3y07p1Ppwv6d0t4MsADBvmI3o++yx2NVLAFOiSn8rLobq6OAId/H2uX+9r1og0kgJd8lNquOKxx8auJDdOPBFatVK3izSJAl3yT2q44uDByR2uWNfuu8MJJyjQpUkU6JJ/5syBlSvh9NNjV5JbQ4fCkiXwxhuxK5ECpUCX/DN+vO+7OXx47Epya0TNjo6PPx63DilYCnTJP48/DmVl0K5d7Epyq3t36NNHgS6NpkCX/LJsGbzyCowcGbuSOM480xfqev/92JVIAVKgS34ZP97viznQQ4AJE2JXIgVIgS75Zfx43wy6R4/YlcRx+OHe9aJuF2kEBbrkjzVrfGJNsbbOwWeNnnmmb0u3bl3saqTAKNAlfzzxhG9mccYZsSuJ68wzYfNmLdYlO02BLvlj3DhfpOqoo2JXEteAAdC+vbpdZKcp0CU/fPCBdzOcc453OxSz5s39U8qTT2qvUdkpCnTJD4895otxnXtu7Eryw7nnwqefwlNPxa5ECogCXfLD3/8OBxwAffvGriQ/nHACdOwIY8fGrkQKiAJd4quqgsmT1d1SW/Pm/t/jySc12kXSpkCX+B55xEe3qLvli847zze8SE22EmmAAl3iGzsWDjrIJ9XI5wYMgG7d4MEHY1ciBUKBLnEtXw7TpsEFF6i7pS4z/9Ty7LM+6UqkAWkFupkNMbMlZrbUzK7dwXFnmVkws9LMlSiJdt99fv/Nb8atI1+NGuWjf8aNi12JFIAGA93MmgN3AEOBXsAoM+tVz3FtgB8CMzNdpCRUCPC3v/mIjpKS2NXkpz59oHdv+MtfYlciBSCdFno/YGkIYVkIYTMwFqhvsY1fADcBmzJYnyTZiy/C66/Dt74Vu5L8ZQYXXQSVlfDqq7GrkTyXTqB3AlbU+n5lzWP/YmZHAl1CCJoFIem7915o3Rq+8Y3YleS3Cy+EFi3gr3+NXYnkuSZfFDWzZsCtwNVpHDvazCrNrLKqqqqpp5ZCtmmTTyb6+tehTZvY1eS39u19O7777oMtW2JXI3ksnUBfBXSp9X3nmsdS2gCHAVPN7C2gPzChvgujIYQxIYTSEEJp+/btG1+1FL7HHoO1a+Hb345dSWH4zndg9WqtwCg7lE6gzwJ6mll3M2sJnAf8azuVEMLHIYR2IYSSEEIJ8CIwIoRQmZWKJRnuuss3sTjppNiVFIahQ6FDB7jnntiVSB5rMNBDCNXAlcAzwCJgXAhhgZndaGYjsl2gJNDChTB9Olx2GTTTVIi07LKLt9KffBJWroxdjeSptH6bQggTQwgHhhB6hBB+WfPYdSGEL218GEI4Qa1z2aExY6BlSx+9Iem77DJfImHMmNiVSJ5S80hya8MGH91y1ll+sU/S1707DBsGd9/tOxqJ1KFAl9waN84vhn73u7ErKUyXXw7vvecXlUXqUKBL7oQAt98OhxwCAwfGrqYwDRniLfU774xdieQhBbrkznPPwezZcNVVWoirsZo1g+99zy8qz58fuxrJMwp0yZ1bb4V99tFCXE11ySWw++5wyy2xK5E8o0CX3Hj9dZgwwfuAd9stdjWFrW1bD/UHHtAQRvkCBbrkxu9+52OpL788diXJcNVVPoTxtttiVyJ5RIEu2bdmjS8sdcEF8NWvxq4mGbp3h7PPhj/+UXuOyr8o0CX7fvtb2LgRfvzj2JUky09+4mGuiUZSQ4Eu2fXRR/C//+tL5Pb60r4o0hRHHQWDBvnF0Y0bY1cjeUCBLtl1223wySfws5/FriSZrrvOJxrddVfsSiQPKNAle9at84uhI0f6NmqSeccf7ytW3nSTL6sgRU2BLtlz220+zf/nP49dSbLdcAO8/75fIJWipkCX7PjgA7j5Zhgxwvt6JXsGDvS+9JtugvXrY1cjESnQJTt+9Sv49FO/l+z7xS+8la7Zo0VNgS6Zt3y5L8J10UVw6KGxqykOAwb4ksS/+Y1fJJWipECXzLvuOl9864YbYldSXH79a/jsM7j++tiVSCQKdMmsykrfnf4HP4AuXRo+XjLngAPgiivgT3+CBQtiVyMRKNAlc7Ztgyuv9M2MNe48jp//HNq08Vm5IcSuRnJMgS6Zc++9MHOmj7bYc8/Y1RSnffbxLpd//EO7GhUhC5H+ipeWlobKSu0lnRgffwwHHgj77w8VFb4Rg8RRXQ2lpb4o2qJF3mKXxDCz2SGE0vqe02+dZMa110JVlY9uUZjH1aKFLwXwzju6MF1k9JsnTTdtmgfID3+oSUT5on9/uPRS+P3v4eWXY1cjOaIuF2maDRugTx+/IDp/vm+NJvnhww99Q+7OneHFF32DESl46nKR7Ln+eli6FO6+W2Geb9q29U9Oc+bAf/937GokBxTo0ngVFb7x8+jRvuKf5J8zz/RNuX/5S5g1K3Y1kmXqcpHG+egjOOIIvwA3d66GKeaztWvh8MNhjz28ta5Nuguaulwks0KAyy7zURQPPqgwz3d77w333AOLF8O//3vsaiSLFOiy8+65Bx56yPtl+/WLXY2k4+ST4ZprfM30+++PXY1kibpcZOfMnQvHHgvHHQf//KfGnBeS6mq/1jFnjvenH3JI7IqkEdTlIpmxZo1fZGvXDh54QGFeaFq0gLFjoXVr37T7k09iVyQZpt9ISU91NZxzjq+1/dhjvgCXFJ799vPrHkuWwPnnw9atsSuSDFKgS8NC8ItpU6bAmDG+TogUrkGDfL/XJ5/0fnVJjLQC3cyGmNkSM1tqZtfW8/yPzGyhmc03s3Iz65b5UiWa//kfX6Pl6qvhW9+KXY1kwuWX+9rpt9zi66dLIjQY6GbWHLgDGAr0AkaZWa86h80FSkMIvYGHgd9kulCJ5IEH4D/+A84917c3k+T43e/glFPgu9+F8eNjVyMZkE4LvR+wNISwLISwGRgLjKx9QAhhSghhQ823LwKdM1umRPHss74v6Ne+5mud6yJosrRoAQ8/7AuqnXuud6lJQUvnN7QTsKLW9ytrHtueS4Cn63vCzEabWaWZVVZVVaVfpeTe5MkwYoQPbXv8cWjVKnZFkg1t2sDTT/v2dSNGaHmAApfRJpeZXQiUAjfX93wIYUwIoTSEUNq+fftMnloyado0GD7cf8knTfKZhpJcbdv6nIL27b0L5qWXYlckjZROoK8Cau/227nmsS8ws8HAT4ERIYTPMlOe5NzUqXDaadC9O5SX+y+5JN9++3mXS9u2MHgwzJgRuyJphHQCfRbQ08y6m1lL4DxgQu0DzKwv8Ec8zFdnvkzJiUcfhVNPhW7dPMw11ry4dOsG06d7uJ96qn86k4LSYKCHEKqBK4FngEXAuBDCAjO70cxG1Bx2M7AH8JCZvWxmE7bzcpKvxoyBs8/2C2TPPQdf/WrsiiSGTp28y61HD/+kpnVfCkqLdA4KIUwEJtZ57LpaXw/OcF2SK9u2wXXX+XrZw4b5olutW8euSmLq2NFD/etfhwsvhDffhJ/+FMxiVyYN0Di0YvbJJ/5L+8tfwiWX+GgWhbkAfOUr8MwzvjnGz38OF18MmzbFrkoakFYLXRLojTdg5EhfI/u22+DKK9UCky9q2dLnH/ToATfc4HvGPvywXzCXvKQWejF66CHvK3/nHW+Fff/7CnOpn5nvGzt+vDcCjjrKx61LXlKgF5MNG3ynoXPOgYMPhspKX6hJpCEjRsDs2dC1q18s/fGP1QWThxToxWLWLDj6aB/Ncs01PpJl//1jVyWFpEcPeP55bxTccov/PM2bF7sqqUWBnnQbN/riWv37+2bBzzwDv/417LJL7MqkELVuDX/4Azz1lG94cvTRvhXh5s2xKxMU6Mk2dSr07g033+yjWBYu9KndIk01bBi88gqccYaPgjniCJ+UJFEp0JNo+XJfPe/EE32ceXm5d7XstVfsyiRJ2rWDceN8o4yNG31Vzosvhvffj11Z0VKgJ8n69T4i4eCD4Ykn4L/+y1tRJ50UuzJJstNOgwUL/NrMfff5om433ug/j5JTCvQk2LQJfv97v8h5443+MXjxYp8BqolCkgutW/u1mQULvFvv+uuhZ0/fDam6OnZ1RUOBXsg2b4a77vIW0VVXwWGH+SiEBx/04WUiuXbggfDII75aY0kJXHqpP3b33bpwmgMK9EK0di3cdJPP2Pve9z5fHbG8HAYMiF2dCBx3HFRUwIQJ3tc+erQ3PG6/XV0xWaRALyTLl8OPfgRdusC110KvXvCPf3hrSP3kkm/M4PTTYeZM/znt2tVnJXfp4kNply+PXWHiKNDzXXW1T7seNsxb5Lfd5rP25szxPT9PPVXT9iW/mfnP6XPPeeNj8GC49Va/5nPWWf5zvG1b7CoTQYtz5avXX/cRA3/+s6+5st9+8LOfwb/9m/rHpTCZeVfMccfBihVw550+nPbRR/1n+tvf9k3JNYO50SyEEOXEpaWlobKyMsq589a778Lf/w4PPOBT9c1gyBCfan3aab5Lu0iSbNrk/ez33OP7mobg49nPPdeXdu7YMXaFecfMZocQSut9ToEe2fLlPmb8scd8Zue2bXDkkXD++f5D3blz7ApFcmPFCvjb3/yT6ZIl0KyZh/vZZyvca1Gg55MQYO5c7xefMAFeftkfP+ggD/BRo3xikEixCsHHs48b50s9L17sn1aPOcavJQ0bBn37euAXIQV6bG+/7RvupoYWvv++/zAee6xvMnH66R7oIvJFqXB/9FFfEGzWLH+sY0cYOtQnMZ1wAuy7b+xKc0aBnmsrVvgEn6lTPciXLvXHO3b09cdPOcVbGe3bRy1TpOCsXu0rhk6c6EMh1671xw86yIP9hBO8mybBAa9Az6bNm73b5PnnP7+tWuXPtWnjP1yDB3uQH3qohhiKZEp1tf/uTZ3qt+nTfZ9c8ElMxxzz+a1PH2jVKma1GaNAz5SNG32xq7lzP7/Nn//5zi3dunk3yoABft+7t9YdF8mVVMBPmeINq5kzfeQY+P6offtCv34+6KBPH5+YV4Ahr0DfWVu3wltvwaJFfps/38N78WJ/Dnwp2r59/YdjwAC/deoUtWwRqSUEWLnSg/2ll/y+stK3YgRo3twHIPTp442vPn3g8MN9zkcef5JWoG/P+vWwbJkHdSq8Fy3yIVO190vcbz8P79q3kpK8/p8uIvXYutUn7c2f79vnzZvnX69Y8fkxe+zhC4odfLD3zR90kH/ds2derF5avIG+bRu8956H9htv+H3tr+suxF9S4h/DDjnki7evfCW7dYpIXB9+6MG+cKE36BYv9vu668106eJLcNR322+/nAylTGaghwBVVf6RKnVbseLLX3/22ef/plkz/x+y//5fvKX+CufBX18RySMbNniLPhXyr78Ob77pt3fe+eKxLVv6dbSSEp8QWPvWqZPft23b5E/2Owr0wptL/uc/w69+5WFdd33lFi38P1yXLr557Zln+l/OHj08uLt18//oIiLpaN3a+9b79Pnyc5s2eQv+zTf9mlsq6N96C1591XsH6jaYd93VM+oXv/BJhBlWeIHeoYMPQzrrLA/u1F/ALl38uSKdPSYiObbrrp9/uq/Pli0e6itX+lDm2vcdOmSlpMLtchERKUI76nJRc1ZEJCEU6CIiCaFAFxFJiLQC3cyGmNkSM1tqZtfW83wrM/t7zfMzzawk04WKiMiONRjoZtYcuAMYCvQCRplZrzqHXQJ8FEI4APgtcFOmCxURkR1Lp4XeD1gaQlgWQtgMjAVG1jlmJHBvzdcPA4PMNC9eRCSX0gn0TkCthQ5YWfNYvceEEKqBj4F96r6QmY02s0ozq6yqqmpcxSIiUq+cXhQNIYwJIZSGEErba3MHEZGMSmem6CqgS63vO9c8Vt8xK82sBbAX8MGOXnT27NlrzGz5jo7JU+2ANbGLyLFie8/F9n5B77mQdNveE+kE+iygp5l1x4P7POD8OsdMAL4NvAB8A5gcGpiCGkIoyCa6mVVub5ZWUhXbey629wt6z0nRYKCHEKrN7ErgGaA5cE8IYYGZ3QhUhhAmAH8G7jOzpcCHeOiLiEgOpbU4VwhhIjCxzmPX1fp6E3B2ZksTEZGdoZmiO29M7AIiKLb3XGzvF/SeEyHaaosiIpJZaqGLiCSEAl1EJCEU6E1gZlebWTCzdrFrySYzu9nMFpvZfDN7zMz2jl1TtjS0EF3SmFkXM5tiZgvNbIGZ/TB2TbliZs3NbK6ZPRm7lkxRoDeSmXUBTgHejl1LDjwLHBZC6A28Bvxn5HqyIs2F6JKmGrg6hNAL6A9cUQTvOeWHwKLYRWSSAr3xfgv8B5D4q8ohhH/WrNED8CI+WziJ0lmILlFCCO+GEObUfP0JHnB112pKHDPrDJwG/Cl2LZmkQG8EMxsJrAohzItdSwQXA0/HLiJL0lmILrFq9jHoC8yMW0lO/A5vkG2LXUgmpTWxqBiZ2STgq/U89VPg/+HdLYmxo/cbQhhfc8xP8Ydp+dQAAAEgSURBVI/o9+eyNsk+M9sDeAS4KoSwLnY92WRmw4HVIYTZZnZC7HoySYG+HSGEwfU9bmaHA92BeTVLvncG5phZvxDCezksMaO2935TzOwiYDgwqKF1egpYOgvRJY6Z7YKH+f0hhEdj15MDxwEjzGwYsCuwp5n9/xDChZHrajJNLGoiM3sLKA0hFOKqbWkxsyHArcDXQgiJXci+ZqXQ14BBeJDPAs4PISyIWlgW1WxEcy/wYQjhqtj15FpNC/3HIYThsWvJBPWhSzpuB9oAz5rZy2Z2V+yCsqHmwm9qIbpFwLgkh3mN44BvAifV/L99uablKgVILXQRkYRQC11EJCEU6CIiCaFAFxFJCAW6iEhCKNBFRBJCgS4ikhAKdBGRhPg/pUw+7Ri/ivUAAAAASUVORK5CYII=\n"},"metadata":{"needs_background":"light"}},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":["laqrage(68)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":513},"id":"5pm5vAzm7jD9","executionInfo":{"status":"ok","timestamp":1674264380623,"user_tz":-210,"elapsed":2741,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"3a72d9d9-1c55-411f-fca0-ffeefb98b14c"},"execution_count":10,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAVNElEQVR4nO3de3BdZbnH8d/TpKX0IgUaWmgbA0IpaaEUIncow6VWoKhHBTkc9IxKxxHlKiIHRQ/jODLUgqMHz1RQGUAR5VJEAdtBLMjlkJS2Ni1iQYFisS0UC+XW0Of88SSTNEmTney198qb/f3MrMneOzvvenba/Pa73/Wud5m7CwCQriF5FwAAKA5BDgCJI8gBIHEEOQAkjiAHgMRV57HTsWPHel1dXR67BoBkNTU1bXT3ms6P5xLkdXV1amxszGPXAJAsM3u+u8cZWgGAxBHkAJA4ghwAEkeQA0DiCHIASBxBDgCJI8gBIHHJBXlzs/TII3lXAQADRy4nBBVj2rT4yjLqABCS65EDALZHkANA4ghyAEgcQQ4AiSPIASBxBDkAJI4gB4DEEeQAkDiCHAASR5ADQOIIcgBIHEEOAIkjyAEgcQQ5ACSOIAeAxBHkAJC4ooPczIab2f+Z2XIzazaz/86iMABAYbK4QtA7kk5w9zfMbKikR8zsPnd/PIO2AQC9KDrI3d0lvdF6d2jrxoXYAKBMMhkjN7MqM1smab2kRe7+RDfPmWtmjWbWuGHDhix2CwBQRkHu7u+5+8GSJko6zMymdfOcBe7e4O4NNTU1WewWAKCMZ624+2uS/iBpdpbtAgB2LItZKzVmNqb19s6STpb0dLHtAgAKk8WslT0l3WRmVYo3htvd/d4M2gUAFCCLWSsrJM3IoBYAQD9wZicAJI4gB4DEEeQAkDiCHAASR5ADQOIIcgBIHEEOAIkjyAEgcQQ5ACSOIAeAxBHkAJA4ghwAEkeQA0DiCHIASBxBDgCJI8gBIHEEOQAkjiAHgMQR5ACQOIIcABJHkANA4ghyAEgcQQ4AiSPIASBxBDkAJI4gB4DEEeQAkDiCHAASV3SQm9kkM/uDma0ys2YzuyCLwgAAhanOoI0WSZe4+1IzGy2pycwWufuqDNoGAPSi6B65u69z96Wtt1+XtFrShGLbBQAUJtMxcjOrkzRD0hPdfG+umTWaWeOGDRuy3C0AVLTMgtzMRkm6Q9KF7r658/fdfYG7N7h7Q01NTVa7BYCKl0mQm9lQRYjf6u53ZtEmAKAwWcxaMUk3Slrt7vOLL6kw7uXaEwAMbFn0yI+WdI6kE8xsWet2Sgbt9oggB4BQ9PRDd39EkmVQSx/3W+49AsDAxJmdAJC4ZIOcHjkABIIcABJHkANA4pINcgBASDbI6ZEDQCDIASBxBDkAJC7ZIAcAhGSDnB45AASCHAASl2yQAwBCskFOjxwAAkEOAIkjyAEgcckGOQAgJBvk9MgBIBDkAJA4ghwAEpdskAMAQrJBTo8cAAJBDgCJI8gBIHHJBjkAICQb5OvW5V0BAAwMyQb56afnXQEADAzJBvnGjXlXAAADQ7JBXlWVdwUAMDBkEuRm9hMzW29mK7NorxBDkn0LAoBsZRWHP5M0O6O2CkKQA0CozqIRd19iZnVZtFUoghxZWbdOWr1aevFFqaVFGjFC2mcfaepUadSovKsDepdJkBfCzOZKmitJtbW1RbfHGDmK8eyz0o9/LN1zT4R4d4YOlY48UjrzTOnss6VddilvjUChytavdfcF7t7g7g01NTVFt0eQoz+eeiqmru63n/S970kTJkjz5kmLF0tr1kjPPy+tXCktXChdfLG0aZN03nnSXntJl17KbCkMTOYZneveOrRyr7tP6+25DQ0N3tjY2M/9xNdJk6QXXuhXE6hAL78sXXaZdPPN0q67Rjh/4QsR0L1pbJS+/33p1ltjqOXKK6ULL5Sqy/Z5Fghm1uTuDZ0fT3akmR45CuEu3XKLVF8v/fKX0at+9lnpqqsKC3FJamiIN4A//1maOTPaOOwwqamptLUDhcpq+uEvJD0maX8zW2tmn8ui3Z4Q5OjNxo3SRz8qnXOONGWKtHy5dPXV0pgx/Wtv6tQYU//1r6OHf8QR0ne/K23blm3dQF9lEuTufpa77+nuQ919orvfmEW7PWHWCnry2GPSjBnS/ffHGPjDD0v77198u2bSxz8urVolfexj0uWXS7NmsfYP8pVsHBLk6I67dO210nHHScOGRaBfckn2n+DGjImhmhtukB59VJo+XXrwwWz3ARQq2ThkaAWdvfZa9JYvvlg67bQYwz7kkNLtz0z63OdiP2PHSiefLF1zDWvlo/ySDXJ65Oho+fI4KPmb38S0wjvv7P9YeF8dcID0xBPxJvLVr0qf+IS0eXN59g1IBDkGgZtvjhN33npLeuih6JG3TVMtl9GjY6hl3ryYg3744Ts+0QjIWrJxSJDj3XdjPvinPx3TAZculY4+Or96zGI8fvFi6dVXo6Zf/Sq/elA5ko1Dxsgr29q1Maf7+uulr3wlwnPcuLyrCscfH28qBx4onXFG1Ld1a95VYTBLNsinTs27AuTlwQfjIObKldHjveaagXeW5YQJMcxz3nkxZn/88XH6P1AKyQX5AQfE1wkT8q0D5bd1q3TFFdJJJ8UskSefjAOLA9WwYdIPfyj94hdxVujBB0t33513VRiMkgvyNkzxqizPPScde6z0ne9In/1shPiUKXlXVZhPfSoW69p33ziJ6Mtflt5+O++qMJgkF+RtAU6QVwb3mJVy8MHS00+3n4QzcmTelfXNBz4g/elP0kUXRS/98MOlZcvyrgqDRXJB3oYgH/zWrpXmzIlZKQceGMF3xhl5V9V/w4ZJ8+dL994rrV8vffCD0je/GbNvgGIkF+T0yAc/97jow9SpcWBz/nxpyRKpri7vyrJx6qlSc3MMuVx1VQT6k0/mXRVK4dln42D3zJnSli2l209yQd6GIB+cmpqkY46R5s6VDj00DhJedNHgm266224xZLRwobRhQwy1nHtu3Mbgse++Mf10yZKYxVQqyQY5S4cOLuvXS5//fPRO16yJcfDFi2NseTA7/fQY+7/4YulnP5MmT5Z+8APmnaNvkgtyhlYGl9dei3HiffeVbropAu2ZZ2Ixqko5e/d974tT+5cvj08h558fM3JuuUV67728q0MKkvtTaTswdO210jvv5FsL+m/zZunb35b23jvGiWfNihN85s2r3Isc19dLixbFwl+jR8cFMaZPl+64g0BHz5IK8vvvl/7+9/b7r76aWynop+efjzHDSZOkb3wj1g1/6qm46k4WF35InVkswbt0aUy13Lo1TnqaMkX60Y9iYTCgs6SC/N57864A/eEeV+g588wY877uOumUU2KmxsKFMUcc2xsyJKZarlol3X57XDD6i1+Uamulr30tjiMAbZIK8paWvCtAX6xdG2diTp4cPe8HHogx8L/9LU5bb+hyLXB0VlUlffKTsd75H/8YqzvOmyftt590wgnSz38uvflm3lUibwNsqaGecSR/4Fu3TrrrrhjXfeihmF00c6b09a/HEEFqZ2QOFGbxZnjc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\n"},"metadata":{"needs_background":"light"}}]},{"cell_type":"code","source":["laqrage(70)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":513},"id":"kEdeDtpJ7xVl","executionInfo":{"status":"ok","timestamp":1674264397625,"user_tz":-210,"elapsed":2955,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"f1e9610a-6f20-4b88-dec4-d94481981681"},"execution_count":11,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]}]} -------------------------------------------------------------------------------- /project 2/2.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyOcOV+DXjt3qgFbiYuxCnmP"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":1,"metadata":{"id":"3FAtlubek659","executionInfo":{"status":"ok","timestamp":1674263977174,"user_tz":-210,"elapsed":16,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"outputs":[],"source":["import numpy as np\n","import matplotlib.pyplot as plt"]},{"cell_type":"code","source":["#Definition of the sum of differences function\n","def F(X, Y):\n"," if len(Y) == 2:\n"," return (Y[1] - Y[0]) / (X[1]- X[0])\n"," else:\n"," return (F(Y[ : -1], X[ : -1]) - F(Y [1 : ], X[1 : ])) / (X[-1] - X[0]) #The basis of the function is recursive"],"metadata":{"id":"E3DCTqMok7Yb","executionInfo":{"status":"ok","timestamp":1674263977177,"user_tz":-210,"elapsed":13,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":2,"outputs":[]},{"cell_type":"code","source":["#Implementation of Newton's interpolation based on its formula\n","def newtonInterpolation(X, Y, x):\n"," sum = Y[0]\n"," for i in range(1, len(X)):\n"," temp = 0\n"," for j in range(0, i):\n"," temp += x - X[j]\n"," sum += (temp * F(X[ : i + 1], Y[ : i + 1]))\n"," return sum"],"metadata":{"id":"Og5ZJVl8k_xu","executionInfo":{"status":"ok","timestamp":1674263987343,"user_tz":-210,"elapsed":12,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":3,"outputs":[]},{"cell_type":"code","source":["def calcute(X, Y, x):\n"," y = []\n"," for element in x:\n"," y.append(newtonInterpolation(X, Y, element))\n"," return y"],"metadata":{"id":"xV2mQ-SUlEva","executionInfo":{"status":"ok","timestamp":1674263989851,"user_tz":-210,"elapsed":783,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":4,"outputs":[]},{"cell_type":"code","source":["def main(X, Y):\n"," x = list(np.linspace(-5, 5, 1000)) #Generate a thousand points to draw a graph\n"," y = calcute(X, Y, x)\n"," plt.plot(x, y)"],"metadata":{"id":"1tg9me2DlCsB","executionInfo":{"status":"ok","timestamp":1674264051490,"user_tz":-210,"elapsed":394,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["X = [-1, 0, 1, 2]\n","Y = [1, -3, -2, 5]"],"metadata":{"id":"aU0ZXy6ml-MF","executionInfo":{"status":"ok","timestamp":1674264054240,"user_tz":-210,"elapsed":9,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":["main(X, Y)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":265},"id":"aMY4xsSEmMr-","executionInfo":{"status":"ok","timestamp":1674264057917,"user_tz":-210,"elapsed":498,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"b7d131f4-5120-4652-f2db-a38030e29533"},"execution_count":8,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{"needs_background":"light"}}]}]} -------------------------------------------------------------------------------- /project 2/3.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyMHlPznpqMF7pOc1jhAa4kL"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":4,"metadata":{"id":"eUay_IxommXr","executionInfo":{"status":"ok","timestamp":1674208627236,"user_tz":-210,"elapsed":9,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"outputs":[],"source":["import numpy as np\n","import operator"]},{"cell_type":"code","source":["b = np.array([[25, 15, -5], [15, 18, 0], [-5, 0, 11]])\n","b"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"hJ5qrF-Cm7Ss","executionInfo":{"status":"ok","timestamp":1674208616220,"user_tz":-210,"elapsed":31,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"0559dad7-ed88-4e7f-f9de-3cc94d1c2ae2"},"execution_count":2,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[25, 15, -5],\n"," [15, 18, 0],\n"," [-5, 0, 11]])"]},"metadata":{},"execution_count":2}]},{"cell_type":"code","source":["import operator\n","def ref(matrix, subm = 0):\n"," # subm is used for recurion, it's the row and column number of the submatrix\n","\n"," if len(matrix) == 0 or len(matrix[0]) == 0:\n"," return matrix\n","\n"," if len(matrix) - subm <= 1 or len(matrix[0]) - subm <= 1:\n"," return matrix\n","\n"," # handle case where entry being looked at is 0 and case where entire column is 0\n"," if matrix[subm][subm] == 0:\n"," for i in range(subm + 1, len(matrix)):\n"," if matrix[i][subm] != 0:\n"," matrix[subm], matrix[i] = matrix[i], matrix[subm] # swap rows\n"," break\n"," else: # if for loop never breaks (column is all zeros)\n"," return ref(matrix, subm + 1)\n","\n"," # get zeros in entries below current leading entry\n"," for i in range(subm + 1, len(matrix)):\n"," # usage of map for operations on lists from https://stackoverflow.com/a/534914/18413833\n"," # faster than using list comprehension\n"," row_multiple = map((matrix[i][subm] / matrix[subm][subm]).__mul__, matrix[subm])\n"," matrix[i][:] = map(operator.sub, matrix[i], row_multiple)\n","\n"," # repeat with next row and column\n"," return ref(matrix, subm + 1)"],"metadata":{"id":"CNgidFDim-v6","executionInfo":{"status":"ok","timestamp":1674208627781,"user_tz":-210,"elapsed":9,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":5,"outputs":[]},{"cell_type":"code","source":["ref_b = np.array(ref([[25, 15, -5], [15, 18, 0], [-5, 0, 11]]))\n","ref_b"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Njn-1DEvm-3w","executionInfo":{"status":"ok","timestamp":1674208666760,"user_tz":-210,"elapsed":13,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"81872471-2212-4583-94a0-0e83c332b842"},"execution_count":7,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[25., 15., -5.],\n"," [ 0., 9., 3.],\n"," [ 0., 0., 9.]])"]},"metadata":{},"execution_count":7}]},{"cell_type":"code","source":["def u(ref):\n"," u = np.zeros((len(b), len(b)))\n","\n"," for i in range(0, len(b)):\n"," for j in range(0, len(b)):\n"," u[i][j] = (ref[i][j] / (ref[i][i] ** 0.5))\n"," return u"],"metadata":{"id":"X7O1Anamm-6M","executionInfo":{"status":"ok","timestamp":1674208709097,"user_tz":-210,"elapsed":751,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":8,"outputs":[]},{"cell_type":"code","source":["u = u(ref_b)\n","u"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"BA1KtRehm-8g","executionInfo":{"status":"ok","timestamp":1674208773868,"user_tz":-210,"elapsed":5,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"2b408969-33ef-4618-85e1-91cf6f70a088"},"execution_count":14,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[ 5., 3., -1.],\n"," [ 0., 3., 1.],\n"," [ 0., 0., 3.]])"]},"metadata":{},"execution_count":14}]},{"cell_type":"code","source":["def transpose(temp):\n"," result = np.zeros((len(b), len(b)))\n"," for i in range(0, len(b)):\n"," for j in range(0, len(b)):\n"," result[j][i] = temp[i][j]\n"," return result"],"metadata":{"id":"SrA7d7bundTB","executionInfo":{"status":"ok","timestamp":1674208750870,"user_tz":-210,"elapsed":527,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}}},"execution_count":12,"outputs":[]},{"cell_type":"code","source":["u_t = transpose(u)\n","u_t"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"DcVf6t7fnfbL","executionInfo":{"status":"ok","timestamp":1674208775857,"user_tz":-210,"elapsed":7,"user":{"displayName":"Alireza Parvaresh","userId":"13077413390910589098"}},"outputId":"9100afdf-a3ad-4ee6-c396-b356f428d298"},"execution_count":15,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[ 5., 0., 0.],\n"," [ 3., 3., 0.],\n"," [-1., 1., 3.]])"]},"metadata":{},"execution_count":15}]}]} --------------------------------------------------------------------------------