W jaki sposób można połączyć dwie funkcji (np. jedna to sinx, która jest od -nieskonczonosci do 1, druga x^2, który jest od 1 do +nieskonczonosci)?
Jeśli dobrze rozumiem o co chodzi to będzie to coś takiego:
double foo(double x)
{
if (x < 1.0)
return sin(x);
else
return pow(x,2);
}
Oczywiście jako zadanie domowe polecam zapoznać się z problemem porównywania liczb ze zmiennym przecinkiem i adekwatne dostosowanie funkcji :)
Dalej w programie używasz nowej funkcji foo
która jest sklejeniem żądanych przez Ciebie funkcji.
Dziękuje, czyli jeśli mam taką funkcję to mogę to zapisać w postaci jednej funkcji, z liczbą pętli zgodną z ilością przedziałów?
Oczywiście, wtedy możesz dać coś na wzór:
double foo(double x)
{
if (x < -1.0)
return sin(x);
else if (x >= -1.0 and x < 0.0)
return pow(x,2);
else if (x >= 0.0 and x < 10)
return ...
else
return ...
}
Jednak pamiętając, że przedziały mają się nie zazębiać.
double foo(double x) { return x>=1?x*x:sin(x); }
Czy funkcja wynikowa ma być różniczkowalna? Jeśli tak to musisz użyć jakiejś aproksymacji wielomianowej, ale przy sin(x)
to może być "trudne".
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.