Google Gemini : https://gemini.google.com/app É facil obter resultados de forma rápida e directa :
- dar primeiro o código para gerar o tipo de dados a estudar
- depois dar o algoritmo para aplicar os dados, ATF
Podemos fazer então a pergunta ao Gemini da forma : Linux Ubuntu, clang c/c++, create a example of a matrix in file matrix.txt 10000x10000 of data for apply extrapolation algorithm of values in time,code RM
Exemplo de Código para ficheiro de dados criado pelo Gemini :
#include <iostream> #include <fstream> #include <vector> #include <cstdlib> #include <ctime> int main() { const int rows = 10000; const int cols = 10000; std::ofstream outFile("matrix.txt"); if (!outFile) return 1; std::srand(std::time(0)); // Rows x Cols for (int i = 0; i < rows; ++i) { double trend = (rand() % 100) / 100.0; // Slope for this row for (int j = 0; j < cols; ++j) { // Linear growth + small random noise double val = (trend * j) + ((rand() % 10) / 5.0); outFile << val << (j == cols - 1 ? "" : " "); } outFile << "\n"; } outFile.close(); return 0; }Copyright GOOGLEExemplo de Código para ficheiro algoritmo criado pelo Gemini
#include <iostream> #include <vector> #include <fstream> #include <numeric> using namespace std; // Uses Linear Regression to extrapolate the next value double extrapolate_next(const vector<double>& data) { int n = data.size(); double sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0; for (int i = 0; i < n; ++i) { sumX += i; sumY += data[i]; sumXY += i * data[i]; sumX2 += i * i; } double slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX); double intercept = (sumY - slope * sumX) / n; // Predict for next index (n) return slope * n + intercept; } int main() { ifstream file("matrix.txt"); if (!file) return 1; const int rows = 10000; const int cols = 10000; // Use a single vector for the row to save memory (Heap allocation) vector<double> row_data(cols); cout << "Processing 10,000 series..." << endl; for (int i = 0; i < rows; ++i) { for (int j = 0; j < cols; ++j) { file >> row_data[j]; } // Only print every 1000th result to avoid terminal flooding if (i % 1000 == 0) { double prediction = extrapolate_next(row_data); cout << "Row " << i << " | Predicted T_10000: " << prediction << endl; } } return 0; }

Comentários
Postar um comentário