sto cercando, con qualche difficoltà, di convertire un programma da Mathlab al c++. Ho un problema con il passare un elemento di un vettore ad una funzione. La mia funzione $Residuo$ ha bisogno di un valore del vettore $x$ ,x[i], per poter calcolare il valore da me voluto. Ho capito che in C++ si deve passare il valore dell'indirizzo di memoria dell'elemento del vettore e non direttamente il valore del vettore, tuttavia non sono troppo esperto con i puntatori e mi continua a dare errore. Come potrei fare? Grazie
- Codice:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
//Variabili da rappresentare
float yN, J, dy;
int N = 1000;
//Intervallo di rappresentazione
float Inizio = 0;
float Fine = 10;
float dx = (Fine-Inizio) / N;
// Per l'equazione
float ValIniziale = 0;
//Tolleranza per Newton
double toll = 1e-7;
vector<float> x(float Inizio, float Fine, float dx) {
vector<double> vet;
while (Inizio <= Fine) {
vet.push_back(Inizio);
Inizio += dx;
}
}
float Residuo(float y, float yN, float* x) {
y = yN - y + dx*(cos(x)*y - exp(-sin(x)));
return y;
}
float Jacobiano(float* x) {
J = 1 - dx*cos(x);
return J;
}
float y = ValIniziale;
int main() {
for (int i = 0; i <= N; i++) {
float res = 0;
while (res < toll) {
//Ciclo di Newton
res = Residuo(y, yN, x[i]);
dy = -res / Jacobiano(x[i]);
yN = dy + y;
cout << dy << endl;
}
y = yN;
cout << "Ciclo " << i << endl;
}
}