Implement the program for problem 2
This commit is contained in:
parent
c256d9b1da
commit
c5c64da196
@ -6,17 +6,36 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
|
#define RANGE 1000
|
||||||
|
#define FILENAME "analytical_solution.txt"
|
||||||
|
|
||||||
double u(double x);
|
double u(double x);
|
||||||
void generate_range(std::vector<double> &vec, double start, double stop, int n);
|
void generate_range(std::vector<double> &vec, double start, double stop, int n);
|
||||||
|
void write_analytical_solution(std::string filename, int n);
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int n = 1000;
|
write_analytical_solution(FILENAME, RANGE);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
double u(double x) {
|
||||||
|
return 1 - (1 - exp(-10))*x - exp(-10*x);
|
||||||
|
};
|
||||||
|
|
||||||
|
void generate_range(std::vector<double> &vec, double start, double stop, int n) {
|
||||||
|
double step = (stop - start) / n;
|
||||||
|
|
||||||
|
for (int i = 0; i <= vec.size(); i++) {
|
||||||
|
vec[i] = i * step;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void write_analytical_solution(std::string filename, int n) {
|
||||||
std::vector<double> x(n), y(n);
|
std::vector<double> x(n), y(n);
|
||||||
generate_range(x, 0.0, 1.0, n);
|
generate_range(x, 0.0, 1.0, n);
|
||||||
|
|
||||||
// Set up output file and strem
|
// Set up output file and strem
|
||||||
std::string filename = "datapoints.txt";
|
|
||||||
std::ofstream outfile;
|
std::ofstream outfile;
|
||||||
outfile.open(filename);
|
outfile.open(filename);
|
||||||
|
|
||||||
@ -32,21 +51,5 @@ int main() {
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
outfile.close();
|
outfile.close();
|
||||||
|
|
||||||
return 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
double u(double x) {
|
|
||||||
double result;
|
|
||||||
|
|
||||||
result = 1 - (1 - exp(-10))*x - exp(-10*x);
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
|
|
||||||
void generate_range(std::vector<double> &vec, double start, double stop, int n) {
|
|
||||||
double step = (stop - start) / n;
|
|
||||||
|
|
||||||
for (int i = 0; i <= vec.size(); i++) {
|
|
||||||
vec[i] = i * step;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,17 +1,19 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
x = []
|
def main():
|
||||||
y = []
|
FILENAME = "analytical_solution.pdf"
|
||||||
v = []
|
x = []
|
||||||
with open('testdata.txt') as f:
|
v = []
|
||||||
for line in f:
|
|
||||||
a, b, c = line.strip().split()
|
|
||||||
x.append(float(a))
|
|
||||||
# y.append(float(b))
|
|
||||||
v.append(float(c))
|
|
||||||
|
|
||||||
fig, ax = plt.subplots()
|
with open('analytical_solution.txt') as f:
|
||||||
ax.plot(x, v)
|
for line in f:
|
||||||
plt.show()
|
a, b = line.strip().split()
|
||||||
# plt.savefig("main.png")
|
x.append(float(a))
|
||||||
|
v.append(float(b))
|
||||||
|
|
||||||
|
plt.plot(x, v)
|
||||||
|
plt.savefig(FILENAME)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user