Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Összetett Trapéz szabály
- function trapez(f,a,b,r)
- if a>b
- t=a
- a=b
- b=t
- end
- n=2^(r-1)
- h=(b-a)/n
- x=a+h:h:b-h
- y=f(x)
- m=0
- for i=1:n-1
- m=m+2*y(i)
- end
- m=h/2*(f(a)+m+f(b))
- printf('%d részre osztva az [%1.6f;%1.6f] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
- endfunction
- // Másik paraméterezés
- function trapez2(f,a,b,n)
- if a>b
- t=a
- a=b
- b=t
- end
- h=(b-a)/n
- x=a+h:h:b-h
- y=f(x)
- m=0
- for i=1:n-1
- m=m+2*y(i)
- end
- m=h/2*(f(a)+m+f(b))
- printf('%d részre osztva az [%d;%d] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
- endfunction
- // Harmadik paraméterezés
- function trapez3(f,a,b,h)
- if a>b
- t=a
- a=b
- b=t
- end
- n=round((b-a)/h)
- x=a+h:h:b-h
- y=f(x)
- m=0
- for i=1:n-1
- m=m+2*y(i)
- end
- m=h/2*(f(a)+m+f(b))
- printf('%d részre osztva az [%d;%d] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
- endfunction
- //Összetett Simpson szabály
- function simpson(f,a,b,r)
- if a>b
- t=a
- a=b
- b=t
- end
- n=2^r
- h=(b-a)/n
- x=a+h:h:b-h
- y=f(x)
- m=0
- //páratlanadik osztópontok
- for i=1:2:n
- m=m+4*y(i)
- end
- //párosadik osztópontok
- for i=2:2:n-1
- m=m+2*y(i)
- end
- m=h/3*(f(a)+m+f(b))
- printf('%d részre osztva az [%1.6f;%1.6f] intervallumot a közelítő integrál értéke: %1.10f\n',n,a,b,m)
- endfunction
- function y=fg1(x)
- y=-%e^x-x^2+3
- endfunction
- function y=fg2(x)
- y=atan(x)
- endfunction
- plot(-3:0.01:1.5,fg1)
- plot(-3:0.01:1.5,fg2)
- function y=metszes(x)
- y=fg1(x)-fg2(x)
- endfunction
- plot(-3:0.01:1.5, metszes)
- //intfel_1(metszes,-2.5, -1.5,0.001)
- //intfel_1(metszes,0,1,0.001)
- a=-1.993164
- b=0.670898
- simpson(metszes,a,b,7)
- fg2m=-1.1913811061
- fg1m=3.4323820974
- disp(fg1m-fg2m)
- function intfel_1(f,a,b,t)
- l=1
- if f(a)*f(b)>0 then
- printf('Nem ellentétes előjelű az intervallum!')
- return
- end
- if f(a)==0 then
- printf('Az intervallum első végpontja megoldás! (%1.6f)\n',a)
- return
- end
- if f(b)==0 then
- printf('Az intervallum második végpontja megoldás! (%1.6f)\n',b)
- return
- end
- while abs(b-a)>t & l<100
- c=(a+b)/2
- if f(a)*f(c) >0
- a=c
- elseif f(a)*f(c) <0
- b=c
- else
- printf('%d lépés után a pontos megoldás: %1.6f\n',l,c)
- abort
- end
- printf('%d lépés után a közelítő megoldás: %1.6f\n',l,c)
- l=l+1
- end
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement