Skip to content

Instantly share code, notes, and snippets.

@JoshBroomberg
Created September 11, 2019 17:05
Show Gist options
  • Save JoshBroomberg/d99c7916d4bda4a81992f2f448a39cff to your computer and use it in GitHub Desktop.
Save JoshBroomberg/d99c7916d4bda4a81992f2f448a39cff to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Question 1"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"run_control": {
"marked": true
}
},
"outputs": [],
"source": [
"function coefficients = global_polynomial(x, y)\n",
" xT = x.';\n",
" point_count = length(x);\n",
" degree = point_count - 1;\n",
"\n",
" A = zeros(point_count);\n",
" for col_number = 1:point_count\n",
" A(:, col_number) = xT;\n",
" end\n",
"\n",
" A = A.^(degree:-1:0);\n",
"\n",
" coefficients = (A\\y.');\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAJMmlDQ1BkZWZhdWx0X3JnYi5pY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5bC8fR0A9/VuxEArcR7ut/P+a4IEZFp/OW4uLxy+SmCdACg7GXWzEpPWeGjy0wPj//CZ1dYsFzgMt9Y4eh/eexLzr8s+pLj681dfhUKABwp+hsO/4b/c++KVDiC9NioyGymT3JUelaYIJKZttIJHpfL9BQkR8UmRH5T8P+V/B2lR2anr0RucsomQWx0TDrzfw41MjA0BF9n8cbrS48hRv9/z2dFX73kegDYcwAg+7564ZUAdO4CQPrRV09tua+UfAA67vAzBJn/eqiVDQ0IgALoQAYoAlWgCXSBETADlsAWOAAX4AF8QRDYAPggBiQCAcgCuWAHKABFYB84CKpALWgATaAVnAad4Dy4Aq6D2+AuGAaPgRBMgpdABN6BBQiCsBAZokEykBKkDulARhAbsoYcIDfIGwqCQqFoKAnKgHKhnVARVApVQXVQE/QLdA66At2EBqGH0Dg0A/0NfYQRmATTYQVYA9aH2TAHdoV94fVwNJwK58D58F64Aq6HT8Id8BX4NjwMC+GX8BwCECLCQJQRXYSNcBEPJBiJQgTIVqQQKUfqkVakG+lD7iFCZBb5gMKgaCgmShdliXJG+aH4qFTUVlQxqgp1AtWB6kXdQ42jRKjPaDJaHq2DtkDz0IHoaHQWugBdjm5Et6OvoYfRk+h3GAyGgWFhzDDOmCBMHGYzphhzGNOGuYwZxExg5rBYrAxWB2uF9cCGYdOxBdhK7EnsJewQdhL7HkfEKeGMcI64YFwSLg9XjmvGXcQN4aZwC3hxvDreAu+Bj8BvwpfgG/Dd+Dv4SfwCQYLAIlgRfAlxhB2ECkIr4RphjPCGSCSqEM2JXsRY4nZiBfEU8QZxnPiBRCVpk7ikEFIGaS/pOOky6SHpDZlM1iDbkoPJ6eS95CbyVfJT8nsxmpieGE8sQmybWLVYh9iQ2CsKnqJO4VA2UHIo5ZQzlDuUWXG8uIY4VzxMfKt4tfg58VHxOQmahKGEh0SiRLFEs8RNiWkqlqpBdaBGUPOpx6hXqRM0hKZK49L4tJ20Bto12iQdQ2fRefQ4ehH9Z/oAXSRJlTSW9JfMlqyWvCApZCAMDQaPkcAoYZxmjDA+SilIcaQipfZItUoNSc1Ly0nbSkdKF0q3SQ9Lf5RhyjjIxMvsl+mUeSKLktWW9ZLNkj0ie012Vo4uZynHlyuUOy33SB6W15b3lt8sf0y+X35OQVHBSSFFoVLhqsKsIkPRVjFOsUzxouKMEk3JWilWqUzpktILpiSTw0xgVjB7mSJleWVn5QzlOuUB5QUVloqfSp5Km8oTVYIqWzVKtUy1R1WkpqTmrpar1qL2SB2vzlaPUT+k3qc+r8HSCNDYrdGpMc2SZvFYOawW1pgmWdNGM1WzXvO+FkaLrRWvdVjrrjasbaIdo12tfUcH1jHVidU5rDO4Cr3KfFXSqvpVo7okXY5upm6L7rgeQ89NL0+vU++Vvpp+sP5+/T79zwYmBgkGDQaPDamGLoZ5ht2GfxtpG/GNqo3uryavdly9bXXX6tfGOsaRxkeMH5jQTNxNdpv0mHwyNTMVmLaazpipmYWa1ZiNsulsT3Yx+4Y52tzOfJv5efMPFqYW6RanLf6y1LWMt2y2nF7DWhO5pmHNhJWKVZhVnZXQmmkdan3UWmijbBNmU2/zzFbVNsK20XaKo8WJ45zkvLIzsBPYtdvNcy24W7iX7RF7J/tC+wEHqoOfQ5XDU0cVx2jHFkeRk4nTZqfLzmhnV+f9zqM8BR6f18QTuZi5bHHpdSW5+rhWuT5z03YTuHW7w+4u7gfcx9aqr01a2+kBPHgeBzyeeLI8Uz1/9cJ4eXpVez33NvTO9e7zofls9Gn2eedr51vi+9hP0y/Dr8ef4h/i3+Q/H2AfUBogDNQP3BJ4O0g2KDaoKxgb7B/cGDy3zmHdwXWTISYhBSEj61nrs9ff3CC7IWHDhY2UjWEbz4SiQwNCm0MXwzzC6sPmwnnhNeEiPpd/iP8ywjaiLGIm0iqyNHIqyiqqNGo62ir6QPRMjE1MecxsLDe2KvZ1nHNcbdx8vEf88filhICEtkRcYmjiuSRqUnxSb7JicnbyYIpOSkGKMNUi9WCqSOAqaEyD0tandaXTlz/F/gzNjF0Z45nWmdWZ77P8s85kS2QnZfdv0t60Z9NUjmPOT5tRm/mbe3KVc3fkjm/hbKnbCm0N39qzTXVb/rbJ7U7bT+wg7Ijf8VueQV5p3tudATu78xXyt+dP7HLa1VIgViAoGN1tubv2B9QPsT8M7Fm9p3LP58KIwltFBkXlRYvF/OJbPxr+WPHj0t6ovQMlpiVH9mH2Je0b2W+z/0SpRGlO6cQB9wMdZcyywrK3BzcevFluXF57iHAo45Cwwq2iq1Ktcl/lYlVM1XC1XXVbjXzNnpr5wxGHh47YHmmtVagtqv14NPbogzqnuo56jfryY5hjmceeN/g39P3E/qmpUbaxqPHT8aTjwhPeJ3qbzJqamuWbS1rgloyWmZMhJ+/+bP9zV6tua10bo63oFDiVcerFL6G/jJx2Pd1zhn2m9az62Zp2WnthB9SxqUPUGdMp7ArqGjzncq6n27K7/Ve9X4+fVz5ffUHyQslFwsX8i0uXci7NXU65PHsl+spEz8aex1cDr97v9eoduOZ67cZ1x+tX+zh9l25Y3Th/0+LmuVvsW523TW939Jv0t/9m8lv7gOlAxx2zO113ze92D64ZvDhkM3Tlnv296/d5928Prx0eHPEbeTAaMip8EPFg+mHCw9ePMh8tPN4+hh4rfCL+pPyp/NP637V+bxOaCi+M24/3P/N59niCP/Hyj7Q/Fifzn5Ofl08pTTVNG02fn3Gcufti3YvJlykvF2YL/pT4s+aV5quzf9n+1S8KFE2+Frxe+rv4jcyb42+N3/bMec49fZf4bmG+8L3M+xMf2B/6PgZ8nFrIWsQuVnzS+tT92fXz2FLi0tI/QiyQvpTNDAsAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAddEVYdFNvZnR3YXJlAEdQTCBHaG9zdHNjcmlwdCA5LjI2WJButwAAFRhJREFUeJzt3a9222j+wOHXvzM4vYFR4ATYN2DTLkhoSAc650xKlzTQSww9JHRDCuuC0vYGKoOlMghZEPWcpeu5gfyAZlOP86eJLduv9D7P6ZmJnUSW60SffiVF6dze3gYA2Lf/2/cKAEAIggRAJAQJgCgIEgBRqC1IRVGUZbl8c7FY1LVwAFrvp80XsVgszs7Out1uWZbdbvfi4mI4HGZZNp/P3717NxgMNn8IAFqvhiB9/Pix3+9fXFyEEF6/ft3r9bIsG4/HZVmORiNBAuA5agjS8fFx9Ua1j64oil6vF0LIsmw2m22+fABSUMMxpCzLsizL8/zs7Ozt27fVPdW7+v3+5ssHIAU1TEghhMlk8u3bt8vLyyzLJpPJ3dkNj01IR0dHtTwuABG6vr5e47NqCNJ0Oq1qVN3s9XpFUYQQqnMcHvus9Va36TqdTrLXavLc970W++G573st9mDtkaOGIFUnfA+Hw+rm+/fvr66uJpPJbDY7Pz/ffPkApGBbAc/zvDq29OB7j46OTEip8dz3vRb74bnvey32YO0tfD3HkO5ztjcAL+LSQTuV5j+XKp57mjx3nk+QAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKPy07xUAWqXTecEH395ubT1oIEGC9lqOQ03b/h/25kWP86J6rfcQNIggQUt1On/Zcq/cfPyTnlZvDNZb2kszJmBNIUiQhtvbqklPb80bse1+6UquPOVGPMc0CRK0VrUhrkIUQrh97pjUNitP+X6SE/w7iZMgQavcbW1vv29n//f/JGt03/2/BImKhCBBG3zv0Pct6e1fBqI0h6Pn2Uqi/pxP/Z2/gCBBU/34HLrquNFTH8HDNk3UXf5l6SW29YOxRVEsFostLRyS1el8/3N7+/3Po378ETzL8t929Wf5taj+/Gl5GPU3/xJbmZCGw2GWZfP5/N27d4PBYBsPAenYwk8TUYPHpqjbpdNJvrfLK/cM9Qfp8+fPWZaNx+OyLEejkSDBeuxsa5w/X6nvu+tuw/8SxXPUH6SiKHq9Xgghy7LZbFb78qHFDENt8r8+rf74l1f2MVs5hpRlWfVGv99/7GM6S7axDhCL1SMMj77/uYeFiNzyuST/e+Oxg0+tUcsmfStBKsuyeuOJCel2yTbWAaKwHJmlb1QRarm77Dz0uj4Yp6arZZNef5B6vd7NzU0IoSzLbrdb+/KhMVYOZd/ehk5HhFLxvFe33WPTS9V/DOnk5OTq6moymcxms/Pz89qXD83T+X7xHgXiQSsXwn3w/tbbymnfnz59yvP8119/vTuYBGn6349Ffr94D/xQsnHa1pUanO1Nyr53yMV72MyDcfrx11EzrxDh0kFQp9XtgIv3UJ/lf9vcv/O7u6/Cpv0bSJCgHo/+k7RRWwQa4al9eisXLmpUkwQJNtXMvSO0xF++8KrTZ5a/IBvVJEGC9UkRsfn+1bh0bmdTCBK8mKNCRGp5HqrO7bw/M0VMkOAFjEQ0wF9/G9P9UyGi/QIWJHgWKaIZHv/FgPGXSZDgB6SI5nny6zXaMgkSPEqKaLfYyiRI8AApIimRlEmQ4C+kiJTtt0yCBCHs+x+GEJu9lEmQSJ2RCJ6wyzIJEumSIni+HZRJkEiRFMHatlcmQSItUgR1qb1M/7fRZ0NzdDp/XlFFjaBe1bdVdSG95V+H8VKCRPtJEezGht9ldtnRcs35XTCQOkGitRwugmYRJNrJYASNI0i0jcEIGkqQaBWDETSXINESBiNoOkGiDQxG0AJ+DonGUyNoBxMSDWY3HbSJINFUBiNoGUGieQxG0EqCRMMYjKCtBInGMBhBuwkSzWAwgtYTJGJnMIJECBJRMxhBOvxgLPFSI0iKCYkY2U0HCRIkomMwgjQJEhExGEHKBIlYGIwgcYLE/hmMgCBI7J3BCKgIEntjMAKWCRL7YTACVvjBWPZAjYD7TEjslN10wGMEid0xGAFPqG2XXVEUZVku31wsFnUtnBZQI+BpNUxIi8Xi7Oys2+2WZdntdi8uLobDYZZl8/n83bt3g8Fg84eg6dQI+KEagvTx48d+v39xcRFCeP36da/Xy7JsPB6XZTkajQQpcQ4aAc9UQ5COj4+rN6p9dEVR9Hq9EEKWZbPZbPPl01wGI+D5ajiGlGVZlmV5np+dnb19+7a6p3pXv99/7LM6SzZfByKkRpCOWjbp6wcpz/PJZDKdTkMI1RuXl5dv3rwJIdyd3fDEhHS7ZO11IFpqBEmpZZO+/i67wWBQHR+aTqffvn27vLys7u/1ekVRhBCqcxzWXj7NpUbAGmo4hlSd8D0cDqub79+/v7q6mkwms9ns/Px88+XTLGoErKezpT1meZ5Xx5YefO/R0dH19fU2Hpf9UiNg7S38tq7U4GzvBKkRsAkXV6UeagRsSJCogRoBmxMkNqVGQC0EiY2oEVAXQWJ9agTUSJBYkxoB9RIk1qFGQO0EiRdTI2AbBImXUSNgS7Z1pQbax6/aA7ZKkHgWgxGwbXbZ8WNqBOyAIPEDagTshiDxFDUCdkaQeJQaAbskSDxMjYAdEyQeoEbA7gkSq9QI2AtB4i/UCNgXQeI7NQL2SJD4kxoB+yVIhKBGQAQECTUCoiBIqVMjIBKClDQ1AuIhSOlSIyAqfh9SivyqPSBCgpQcgxEQJ7vs0qJGQLQEKSFqBMRMkFKhRkDkBAmAKAhSEoxHQPwEqf3UCGgEQWo5NQKaQpDaTI2ABhEkAKIgSK1lPAKaRZDaSY2AxhGkFlIjoIkEqW3UCGgoQWoVNQKaS5AAiIIgtYfxCGg0QWoJNQKars4glWW5WCyqt4uiuHubbVMjoAVqC9JisTg9PX316lUIYTgcTqfTs7OzPM/rWj6PUSOgHX6qa0G///77wcHBYrHI8zzLsvF4XJblaDQaDAZ1PQQALVbPhHR1dXV4eJhl2atXr4qi6PV6IYQsy2azWS3L5zHGI6A1aghSURRFUZyfn9/dk2VZ9Ua/3998+TxGjYA2WX+XXZ7nX79+PTw8zPP8559/nkwm1T66TqdTlmX1MU9MSJ1O5+7tW5vVl1MjIB7Lm/RffvllvYWsH6TBYFAdH+p2u3/88UcIYTabnZyc/Oc///n3v/8dQijLstvtPvbpIrQJNQKisrxJPzo6Wm8hNZzUUB0xCiEcHBxUiTo9PZ1MJrPZbHk/HnVRI6CVOluaVKpz7e4OJq04Ojq6vr7exuOmQJCAmK29ha/ttO8VzvbeEjUC2sqlg5pEjYAWE6TGUCOg3QSpGdQIaD1BAiAKgtQAxiMgBYIUOzUCEiFIUVMjIB2CFC81ApIiSJFSIyA1ggRAFAQpRsYjIEGCFB01AtIkSHFRIyBZghQRNQJSJkgAREGQYmE8AhInSFFQIwBB2j81AgiCtHdqBFARJACiIEj7ZDwCuCNIe6NGAMsEaT/UCGCFIO2BGgHcJ0i7pkYADxIkAKIgSDtlPAJ4jCDtjhoBPEGQAIiCIO2I8QjgaYK0C2oE8EOCBEAUBGnrjEcAzyFI26VGAM8kSABEQZC2yHgE8HyCtC1qBPAiggRAFARpK4xHAC8lSPVTI4A1CBIAURCkmhmPANYjSHVSI4C1CRIAURCk2hiPADYhSPVQI4AN1RaksizLsry7WRTFYrGoa+EAtN5PtSxlNBqFEMqyPDk5efPmzXA4zLJsPp+/e/duMBjU8hAxMx4BbK6GIOV5HkIYj8eLxeIf//jHwcFBlmXj8bgsy9Fo1PogqRFALWrYZff169fDw8PpdPrly5fLy8uiKHq9Xgghy7LZbLb58gFIQT3HkD58+BBCuLm5GQ6HIYQsy6r7+/3+Y5/SWVLLOuyF8Qgg1LRJX3+XXZ7n1WwUQjg+Pn7z5k0I4fT0NIRwd3bDExPSrQ05QFssb9KPjo7WW8j6QRoMBtXxoel0enNzU925WCx6vV5RFCGEsiy73e7ay4+f8QigRp1aJpXT09N+vz+fz6uz7Kqbs9ns/Pz85OTk/scfHR1dX19v/rh7pEYAD1p7C19PkEIIeZ5nWXZ39Gjl5gpBAmirtbfw9fwcUghh5fTudp/trUYAtXPpoBdTI4BtECQAoiBIL2M8AtgSQXoBNQLYHkECIAqC9FzGI4CtEqRnUSOAbRMkAKIgSD9mPALYAUH6ATUC2A1BAiAKgvQU4xHAzgjSo9QIYJcECYAoCNLDjEcAOyZID1AjgN0TJACiIEirjEcAeyFIf6FGAPsiSABEQZC+Mx4B7JEg/UmNAPZLkACIgiCFYDwCiIAgARAFQTIeAUQh9SCpEUAkUg8SAJFIOkjGI4B4pBskNQKISrpBAiAqiQbJeAQQmxSDpEYAEUoxSABEKLkgGY8A4pRckACIU1pBMh4BRCuhIKkRQMwSChIAMUslSMYjgMilEiQAIpdEkIxHAPFLIkgAxK/9QTIeATRC+4MEQCO0PEjGI4CmqC1IRVEsFovHbgLA02oI0mKxOD09nU6n1X9DCMPhcDqdnp2d5Xm++fLXZjwCaJCfNl/Ely9f+v3+xcXFYrH4+9//fnBwkGXZeDwuy3I0Gg0Gg80fAoDWqyFI3W53Op3meT6fz7vdblEUvV4vhJBl2Ww223z56zEeATRLDbvssiw7ODj4/Pnz58+fDw8Pq3uqd/X7/cc+q7Nk83W4t3A1AtidWjbp609IeZ5//fr18PDw5ubm5OTkzZs3IYTXr18fHx+XZVl9zBMT0q1iALTF8ib96OhovYWsH6TBYFAdH5pMJsv393q9oihCCGVZdrvdtZe/NuMRQBPVcAzp119/HQ6HNzc38/n8+Pj45OTk6upqMpnMZrPz8/PNlw9ACjp17TrL8zzLsrujRys3VxwdHV1fX9fyuCuMRwD7tfYWvoYJqbJyerezvQF4kVZdOsh4BNBcrQoSAM3VniAZjwAarT1BAqDRWhIk4xFA07UkSAA0XRuCZDwCaIHGB0mNANqh8UECoB2aHSTjEUBrNDtIALRGg4NkPAJokwYHCYA2aWqQjEcALdPUIAHQMo0MkvEIoH0aGSQA2qd5QTIeAbRS84IEQCs1LEjGI4C2alKQ1AigxZoUJABarDFBMh4BtFtjggRAuzUjSMYjgNZrRpAAaL0GBMl4BJCCBgQJgBTEHiTjEUAiYg8SAImIOkjGI4B0RB0kANIRb5CMRwBJiTdIACQl0iAZjwBSE2OQ1AggQTEGCYAERRck4xFAmqILEgBpiitIxiOAZMUVJACSFVGQjEcAKYsoSACkLJYgGY8AEhdLkABIXBRBMh4BsGaQFotFWZbL9xRFsVgsHrsJAE9bM0gfP3788OHD3c3hcDidTs/OzvI8v3/zacYjAEIIP63xOaenp/P5/Lfffqtufv78Ocuy8XhcluVoNFosFss3B4PBE4tSIwAq60xInz59uqtRCKEoil6vF0LIsmw2m63crGtFAWi3ek5qyLKseqPf79+/+aBOp9Pp/Pn/WtYBgH3pLFl7Ic8NUp7nk8lkOp0++N67ExyqkWjl5oNub2+r/97aZwfQcLdL1l7Ic48hDQaDx44G9Xq9oihCCGVZdrvdlZuPLdDRIwCWrXNSw4qTk5Orq6vJZDKbzc7Pz1dubr58AFLQqWuPWZ7nWZbdHT1aubni6Ojo+vq6lscFICprb+FrmJAqKzv0nj7bGwBWRHHpIAAQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQBUECIAqCBEAUBAmAKAgSAFEQJACiIEgAREGQAIiCIAEQhTWDtFgsyrJcvqcoiuV7iqJYLBYbrVobdTqdfa/C3njuafLceb6f1vu0jx8//ve//724uAghLBaLs7OzbrdblmW32724uBgOh1mWzefzd+/eDQaDWlcYgHZaJ0inp6fz+fy3336rbn78+LHf71dxev36da/Xy7JsPB6XZTkajQQJgOdYJ0ifPn2aTCZ3N4+Pj6s3qn10RVH0er0QQpZls9msjpUEoP1qOKkhy7Isy/I8Pzs7e/v2bXVP9a5+v7/58gFIwXMnpDzPv379enh4+ObNm/vvnUwm3759u7y8zLJsMpncnd3wxIR0dHS0xuo23S+//JLmEw+eu+eenpSf+3qeG6TBYPDY0aDpdFrVqLrZ6/WKogghVOc4PPgp19fXL19VANpszbPsllUnfA+Hw+rm+/fvr66uJpPJbDY7Pz/ffPkApKBze3u7jeXmeV4dW9rGwgFon20FCQBeZG+XDirLcuVaD0kpyzLNK1msXNEjESlfuCTNV7yS7Lf52pv3/UxIo9EohFCW5cnJyYOn7bXbYrH429/+9q9//WvfK7JT96/ose812pFkL1yS7CteSfPbPGy2ed/DhJTneQhhPB5fXl5Wb6fm999/Pzg4SO2fTtUVPcbj8fv37798+bLv1dmRz58/Vxcuuby8/Oc//7nv1dmpNF/xO2l+m2+4ea/hLLuXqn6eaTqdhhDuThZPx9XV1eHhYVmWr1692ve67NTKFT0SkfKFS9J8xSvJfptvuHnfzzGkDx8+hBBubm7uThZPRFEURVGkeTb8/St6JCLZC5ck+4qn/G0eNtu8725CurvWQwjh+Pi42rd4enq6sxXYl+WLXFxdXf3888/VxSxGo9Hbt2/bfWb8ygU+lq/ose9V253nXLikrdJ8xVP7Nl+xyeZ9d0G6u9bDdDq9ubmp7kxhll++yMX5+fkff/wRQpjNZicnJwcHB3tdta1bfu4rV/RIxHMuXNJWab7iIb1v82WHh4ebbN73c5bd6elpv9+fz+dpnmUXQhgOh+/fv9/3WuzUaDSaz+d335zpPP3qq726cMnJycm+V2d3kn3F7yT4bR4227zv7QdjXcqBdPhqJylrf8G7UgMAUdjblRoAYJkgARAFQQIgCoIEQBQECYAo/D9aKIGvm9BReQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Xdata = [0, 1, 4, 5];\n",
"Ydata = [-1, 3, 1, -3];\n",
"coeff = global_polynomial(Xdata, Ydata);\n",
"\n",
"Xtest = -6:6;\n",
"Ytest = [];\n",
"for x_i = Xtest; Ytest = [Ytest, polyval(coeff, x_i)]; end\n",
"plot(Xtest, Ytest, \"b-\", Xdata, Ydata, \"ro\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Question 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have three points:\n",
"$$(x_0, y_0)$$\n",
"$$(x_1, y_1)$$\n",
"$$(x_2, y_2)$$\n",
"\n",
"We will have two spline equations:\n",
"\n",
"$$f_1(x) = a_1x^3 + b_1x^2 + c_1x + d_1$$\n",
"$$f_1'(x) = 3a_1x^2 + 2b_1x + c_1$$\n",
"$$f_1''(x) = 6a_1x + 2b_1$$\n",
"\n",
"$$f_2(x) = a_2x^3 + b_2x^2 + c_2x + d_2$$\n",
"$$f_2'(x) = 3a_2x^2 + 2b_2x + c_2$$\n",
"$$f_2''(x) = 6a_2x + 2b_2$$\n",
"\n",
"\n",
"The coefficients must be such that we have:\n",
"\n",
"- Value match:\n",
"\n",
"$$f_1(x_0) = y_0$$\n",
"$$f_1(x_1) = y_1$$\n",
"\n",
"$$f_2(x_1) = y_1$$\n",
"$$f_2(x_2) = y_2$$\n",
"\n",
"- Transition match:\n",
"\n",
"$$f_1'(x_1) = f_2'(x_1)$$\n",
"$$f_1''(x_1) = f_2''(x_1)$$\n",
"\n",
"- Natural spline:\n",
"\n",
"$$f_1''(x_0) = 0$$\n",
"$$f_2''(x_2) = 0$$\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"function spline_coeffs = natural_spline(x, y)\n",
" % This could be built from partial matreces but\n",
" % this manual specification is the quick and dirty way.\n",
" A = [\n",
" x(1)^3, x(1)^2, x(1), 1, 0, 0, 0, 0;\n",
" x(2)^3, x(2)^2, x(2), 1, 0, 0, 0, 0;\n",
" 0, 0, 0, 0, x(2)^3, x(2)^2, x(2), 1;\n",
" 0, 0, 0, 0, x(3)^3, x(3)^2, x(3), 1;\n",
" 3*x(2)^2, 2*x(2), 1, 0, -3*x(2)^2, -2*x(2), -1, 0;\n",
" 6*x(2), 2, 0, 0, -6*x(2), -2, 0, 0;\n",
" 6*x(1), 2, 0, 0, 0, 0, 0, 0;\n",
" 0, 0, 0, 0, 6*x(3), 2, 0, 0;\n",
" ];\n",
" \n",
" Y = [y(1), y(2), y(2), y(3), 0, 0, 0, 0];\n",
" \n",
" spline_coeffs = A\\Y.';\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Xdata = [0, 1, 4];\n",
"Ydata = [-1,3,1];\n",
"spline_coeffs = natural_spline(Xdata, Ydata);\n",
"\n",
"Xtest = 0:0.25:4;\n",
"Ytest = [];\n",
"for x_i = Xtest;\n",
" if x_i >= Xdata(1) & x_i <= Xdata(2)\n",
" Ytest = [Ytest, polyval(spline_coeffs(1:4), x_i)];\n",
" else\n",
" Ytest = [Ytest, polyval(spline_coeffs(5:8), x_i)];\n",
" end\n",
"end\n",
"\n",
"plot(Xtest, Ytest, \"b-\", Xdata, Ydata, \"ro\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Octave",
"language": "octave",
"name": "octave"
},
"language_info": {
"file_extension": ".m",
"help_links": [
{
"text": "GNU Octave",
"url": "https://www.gnu.org/software/octave/support.html"
},
{
"text": "Octave Kernel",
"url": "https://github.com/Calysto/octave_kernel"
},
{
"text": "MetaKernel Magics",
"url": "https://metakernel.readthedocs.io/en/latest/source/README.html"
}
],
"mimetype": "text/x-octave",
"name": "octave",
"version": "4.2.2"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment