Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # tasavälinen plottaus
- # Juhani Kaukoranta 7.1.2024
- using Plots,QuadGK,Roots,ForwardDiff
- n= 30# pisteiden määrä
- a = 0
- b= 8 # kaaren päätepisteiden x-arvot
- f(x) = sin(x)*x;
- derf(x) = ForwardDiff.derivative(f,x);
- # funktion kaaren pituus välillä 0->t:
- kaari(t) = quadgk(x->sqrt(1+derf(x)^2),t,b)[1]; #integroimalla t -> b
- jaljella(t) = quadgk(x->sqrt(1+derf(x)^2),t,b)[1]; #integroimalla t->b
- x = range(a,b,length=n); # plottaus ja integrointiväli a -> b, n kpl
- y = f.(x); #paraabelin x-arvoja vastaavat y-arvot
- p1=scatter(x,y,msize=2,title="tavallinen plottaus\nei tasavälinen",legend=:false,aspect_ratio=:equal);
- kaariab= kaari(a) # kaaren pituus välillä a->b,koko tarkasteluvälillä
- vakiovali = kaariab/n; # tasavälit, välejä n kpl
- xx = Vector{Float64}(undef,n+1);
- yy = Vector{Float64}(undef,n+1);
- for i = 1 : n+1
- g(t) = jaljella(t) - (i-1)*vakiovali; # kaaren jäljellä oleva pituus
- x1 = find_zero(g,(a+b)/2); # etsii seuraavat x-kohdat
- xx[i] = x1;
- yy[i] = f(x1);
- end
- p2=scatter(xx,yy,title="tasaväliset pisteet",msize=2,legend=:false,aspect_ratio=:equal);
- p3=plot(x,y,title="f(x) = x*sin(x)",legend=:false,aspect_ratio=:equal)
- plot(p1,p2,p3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement