Хранить значение математической функции

Я хотел бы хранить значения математической функции в векторах / массивах (или есть другая возможность избежать процесса хранения)?

double func1()
{
double x;
double y = 1/sqrt(x);
return y;
}

Это пример функции, которая имеет теоретическое значение для каждого x (без нуля). Но теперь возникает проблема: я действительно не понимаю, как я могу использовать значение — y(x) — из func1() в другой функции?

double func2()
{
double a, x;
double integral = a * x * pow(y, -4);
return integral;
// for the integration i'm going to use the gsl-library.
}

Впоследствии я хотел бы построить function1 & -2, Есть ли библиотека, которая создает мне файл с таблицей значений для x а также y?

-3

Решение

Если вы просите обработать несколько значений для x а также y для данного уравнения, то при условии, что у вас есть равное число x а также y элементы, вы можете использовать std::transform обрабатывать каждый вход с вашим уравнением и сохранять результаты в третьем векторе ans,

#include <iostream>   ///< std::cout, std::endl
#include <vector>     ///< std::vector, std::back_inserter
#include <algorithm>  ///< std::transform

int main()
{
std::vector<double> x = { 1,2,3,4,5,6 };
std::vector<double> y = { 2,4,6,8,10,12 };
std::vector<double> ans;

// apply the function for every x and y
// record each result in ans
std::transform(x.begin(), x.end(), y.begin(), std::back_inserter(ans),
[](double x, double y) { return x*y - ((x+y)/2) + 1; });

for( const auto& a : ans )
{
std::cout << a << std::endl;
}

return 0;
}

Выходные данные для следующих примеров входных данных и выходов уравнения:

1.5
6
14.5
27
43.5
64
0

Другие решения

Если вы просто хотите создать файл, содержащий выходные данные (x, y) для обработки другой программой, вы можете просто использовать библиотеку потоков файлов:

#include <cmath>
#include <fstream>

//Move the variable x into the function definition an a function argumen
double func1(double x)
{
double y = 1/std::sqrt(x);
return y;
}

//Similar for a and x here
double func2(double a, double x)
{
double integral = a * x * std::pow(y, -4);
return integral;
// for the integration i'm going to use the gsl-library.
}int main() {
//...
std::ofstream file1("func1-output.txt"), file2("func2-output.txt");
// make sure the file is open
for( int x = 1; x < 100; x++ ) {
file1 << x << "\t" << func1(x) << std::endl;
file2 << x << "\t" << func2(1,x) << std::endl;
}
//....

file1.close(); file2.close();
return 0;
}
0

По вопросам рекламы [email protected]