Aufgabe 1

Definition von f


In [1]:
function f(x, m)
    return sin(x)+x^2/m
end
function f_multi(x_array, m)
    result = Array(Float64,length(x_array))
    for i =  1:length(x_array)
        result[i] = sin(x_array[i])+x_array[i]^2/m
    end
    return result
end


Out[1]:
f_multi (generic function with 1 method)

Teil a und b


In [2]:
function countzeros(start, stop, step, func, m)
    x = start
    counter = -1
    last_sign = 0
    while x <= stop
        if func(x,m) < 0
            this_sign = -1
        else
            this_sign = 1
        end
        if last_sign != this_sign
            last_sign = this_sign
            counter = counter + 1
        end
        x = x + step
    end
    return counter
end


Out[2]:
countzeros (generic function with 1 method)

Teil a


In [3]:
a = 0
b = 50
step = .1
m = 100
amount_of_zeros = countzeros(a, b, step, f, m)
println(@sprintf("Die Funktion f mit m=%i hat im Intervall von %.6f nach %.6f %i Nullstellen",m,a,b,amount_of_zeros))


Die Funktion f mit m=100 hat im Intervall von 0.000000 nach 50.000000 2 Nullstellen

Teil b


In [4]:
a = 0
b = 50
step = .1
m = 1e6
amount_of_zeros = countzeros(a, b, step, f, m)
println(@sprintf("Die Funktion f mit m=%i hat im Intervall von %.6f nach %.6f %i Nullstellen",m,a,b,amount_of_zeros))


Die Funktion f mit m=1000000 hat im Intervall von 0.000000 nach 50.000000 15 Nullstellen

Plot


In [5]:
using Plots
a = 0
b = 50
step = .1
m = 1000
x = linspace(a,b,1000)
println(x[1])
y = f_multi(x,m)
plot(x,y)


0.0

Out[5]:

In [ ]: