{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6. Feladatsor\n",
"\n",
"\n",
"\n",
"
\n",
"### Egyszerű iteráció (fixpont iteráció)\n",
"1.feladat. Mutassuk meg, hogy a $\\varphi (x)=\\sqrt{x},\\ x\\in(1,2)$ leképezés kontrakció, de nincs fixpontja.
\n",
"\n",
"2.feladat. Tekintsük az alábbi függvényt:\n",
"$$\n",
"\\displaystyle \\varphi(x)=x+\\frac{1}{1+x},\\ x\\in[0,\\infty).\n",
"$$\n",
"Igazoljuk, hogy $|\\varphi (x)-\\varphi(y)|<|x-y|$ teljesül minden $x,y\\in[0,\\infty)$ esetén, viszont $\\varphi$-nek mégsincs fixpontja.
\n",
"\n",
"3.feladat. Alkalmazzuk az egyszerű iterációt és tegyünk meg vele négy lépést. Ellenőrizzük, hogy teljesülnek-e a fixponttétel feltételei. Amennyiben igen, akkor az $x_0=0$ pontból hány iterációs lépést kell megtennünk ahhoz, hogy $10^{-5}$ nagyságú hibával határozzuk meg az egyenlet megoldását, ha
\n",
"\n",
"(a) $x=\\sqrt{x+2}$, $x\\in[0,2]$
\n",
"(b) $x=\\cos(x)$, $x\\in[0,1]$
\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x =\n",
"\n",
" 0.739085133215161\n",
"\n",
"\n",
"n =\n",
"\n",
" 77.372266795527878\n",
"\n",
" 78\n"
]
}
],
"source": [
"% 3.feladat (a) resze egyszeru iteracio segitsegevel\n",
"clear all;\n",
"x=0; fun='cos(x)'; kmax=1000;\n",
"format long\n",
"k=0;\n",
"while k\n",
"\n",
"4.feladat. Legyen $\\varphi\\in C^s(I),\\ \\varphi^{(j)}(x^*)=0$ minden $j=1,\\ldots,s-1$-re, de $\\varphi^{(s)}(x^*)\\neq 0$. Ekkor az egyszerû iterációval kapott $(x_n)$ sorozatra igaz, hogy $x_n\\to x^*$ $s$-edrendben.
\n",
"\n",
"5.feladat. (Beadható) Az $x-\\cos (x)=0,\\ x\\in[0,1]$ egyenlet megoldásának közelítéséhez tegyünk meg néhány lépést Aitken módszerével és az Aitken-Steffensen iterációval is az $x_0=0$ kezdõértékkel. Hasonlítsuk össze a kapott eredményeket a pontos $x^*=0.739085133215$ értékkel.
\n",
"\n",
"6.feladat. Az alábbi $\\varphi(x)=x$ alakok melyikére érdemes hozni az $x^2-2=0,\\ x\\in[1,2]$ egyenletet, hogy az egyszerû iterációt alkalmazni tudjuk?
\n",
"\n",
"(a) $\\displaystyle x=\\frac{2}{x}$
\n",
"(b) $\\displaystyle x=1+\\frac{1}{1+x}$
\n",
"(c) $\\displaystyle x=\\frac{1}{2}\\Big(x+\\frac{2}{x}\\Big)$
\n",
"\n",
"Tegyünk meg négy lépést az átírásokból származtatható $x_{n+1}=\\varphi(x_n)$ iterációk mindegyikével. Magyarázzuk meg, hogy mi okozza a módszerek közötti konvergencia rend eltérését.
\n",
"\n",
"7.feladat. Hozzuk az $x^3-x=1000,\\ x\\in[10,11]$ egyenletet olyan alakra, hogy egyszerû iterációval megoldható legyen.
\n",
"\n",
"### Klasszikus iterációk (intervallumfelezés, húr- és szelőmódszer, Newton-módszer\n",
"\n",
"8.feladat. Oldjuk meg az $x^2-x-6=0,\\ x\\in[1,4]$ egyenletet. Tegyünk meg három lépést a klasszikus módszerekkel (egyszerû iteráció, intervallumfelezés, húrmódszer, szelõmódszer) és a Newton-módszerrel.
\n"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x =\n",
"\n",
" 3.062500000000000\n"
]
}
],
"source": [
"% Intervallumfelezes\n",
"clear all\n",
"a=1; b=4; func='x^2-x-6'; kmax=4; toll=10^-10;\n",
"\n",
"format long\n",
"k=0;\n",
"while ktoll\n",
" k=k+1;\n",
" x=a+(b-a)/2;\n",
" fx=eval(func);\n",
" if fx>0 \n",
" b=x;\n",
" else\n",
" a=x;\n",
" end;\n",
"end;\n",
"x\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ans =\n",
"\n",
" 2.984615384615385\n"
]
}
],
"source": [
"% Húrmódszer\n",
"clear all;\n",
"format long\n",
"\n",
"a=1; b=4; func='x^2-x-6'; nmax=3; toll=10^-10; \n",
"\n",
"x=a; f=eval(func); fx=[f]; x=b; f=eval(func); fx=[fx, f]; \n",
"nit=0; \n",
"xvect=[a,b]; xdif=[]; f=toll+1; kprime=1;\n",
"while (nit < nmax) & (abs(f) > toll),\n",
"nit=nit+1; dim=length(xvect);\n",
"x=xvect(dim); fxk=eval(func); xk=x; i=dim;\n",
"while (i >= kprime), i=i-1; x=xvect(i); fxkpr=eval(func);\n",
"if ((fxkpr*fxk) < 0), xkpr=x; kprime=i; break; end;\n",
"end;\n",
"x=xk-fxk*(xk-xkpr)/(fxk-fxkpr); xvect=[xvect, x]; f=eval(func);\n",
"fx=[fx, f]; err=abs(x-xkpr); xdif=[xdif, err];\n",
"end;\n",
"xvect;\n",
"xvect(2+nmax)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x =\n",
"\n",
" 2.500000000000000\n",
"\n",
"\n",
"x =\n",
"\n",
" 2.909090909090909\n",
"\n",
"\n",
"x =\n",
"\n",
" 3.010309278350515\n",
"\n",
"\n",
"x =\n",
"\n",
" 2.999809487521433\n",
"\n",
"\n",
"x =\n",
"\n",
" 2.999809487521433\n"
]
}
],
"source": [
"clear all;\n",
"func='x^2-x-6'; kmax=4; toll=10^-10;\n",
"x=1; fxold=eval(func); xold=x;\n",
"x=4; fx=eval(func);\n",
"format long\n",
"err=toll+1;\n",
"k=0;\n",
"while ktoll\n",
" k=k+1;\n",
" xnew=x-(xold-x)*fx/(fxold-fx);\n",
" xold=x;\n",
" fxold=eval(func);\n",
" x=xnew\n",
" fx=eval(func);\n",
" err=abs(x-xold);\n",
"end;\n",
"x\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x =\n",
"\n",
" -1\n"
]
}
],
"source": [
"% Newton-modszer\n",
"\n",
"clear all;\n",
"%x=2; func='x^3+2*x^2+10*x-20'; funcder='3*x^2+4*x+10'; kmax=20; toll=10^-10;\n",
"x=sqrt(5)/5; func='x^3-x'; funcder='3*x^2-1'; kmax=100; toll=10^-10;\n",
"format long\n",
"err=toll+1;\n",
"k=0;\n",
"while ktoll\n",
" k=k+1;\n",
" xold=x;\n",
" x=x-eval(func)/eval(funcder);\n",
" err=abs(x-xold);\n",
"end;\n",
"x\n",
"format short\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"\n",
"9.feladat. Az $x^3-x=0$ egyenlet $x^*=0$ gyökét szeretnénk Newton-módszerrel közelíteni. Az $x^*$ mekkora környezetébõl lehet az iterációt indítani, hogy biztosan konvergáljon a módszer? Milyen helyzet áll elõ, ha $\\displaystyle x_0=\\frac{\\sqrt{5}}{5}$-tel indulunk?"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Matlab",
"language": "matlab",
"name": "matlab"
},
"language_info": {
"codemirror_mode": "octave",
"file_extension": ".m",
"help_links": [
{
"text": "MetaKernel Magics",
"url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md"
}
],
"mimetype": "text/x-octave",
"name": "matlab",
"version": "0.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}