Vano1k 4 months ago
parent
commit
f0df64abe3

BIN
Lab4/Lab4_otchet.pdf


+ 11 - 0
Lab4/M.m

@@ -0,0 +1,11 @@
+X = logspace(-16, -1, 16);
+data=csvread('lab_4_M_good.csv'); % reading csv file 
+X = data(:,1);
+Y = data(:,2); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('M(Eps)');
+title("$\bf M(Eps)$", 'Interpreter','latex');
+xlabel('Eps')
+ylabel('M')

+ 11 - 0
Lab4/M_bad.m

@@ -0,0 +1,11 @@
+X = logspace(-16, -1, 16);
+data=csvread('lab_4_M_bad.csv'); % reading csv file 
+X = data(:,1);
+Y = data(:,2); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('M(Eps)');
+title("$\bf M(Eps)$", 'Interpreter','latex');
+xlabel('Eps')
+ylabel('M')

+ 11 - 0
Lab4/M_tol.m

@@ -0,0 +1,11 @@
+X = logspace(-16, -1, 16);
+data=csvread('lab_4_M_good_tol.csv'); % reading csv file 
+X = data(:,2);
+Y = data(:,1); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('Eps(M)');
+title("$\bf Eps(M)$", 'Interpreter','latex');
+xlabel('M')
+ylabel('Eps')

+ 10 - 0
Lab4/M_tol_bad.m

@@ -0,0 +1,10 @@
+data=csvread('lab_4_M_bad_tol.csv'); % reading csv file 
+X = data(:,2);
+Y = data(:,1); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('Eps(M)');
+title("$\bf Eps(M)$", 'Interpreter','latex');
+xlabel('M')
+ylabel('Eps')

+ 11 - 0
Lab4/cond.m

@@ -0,0 +1,11 @@
+X = logspace(-16, -1, 16);
+data=csvread('lab_4_cond.csv'); % reading csv file 
+X = data(:,1);
+Y = data(:,2); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('Error(Cond)');
+title("$\bf Error(Condition)$", 'Interpreter','latex');
+xlabel('Condition')
+ylabel('Error')

+ 11 - 0
Lab4/error.m

@@ -0,0 +1,11 @@
+X = logspace(-16, -1, 16);
+data=csvread('lab_4_error_good.csv'); % reading csv file 
+X = data(:,1);
+Y = data(:,2); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('Error(Eps)');
+title("$\bf Error(Eps)$", 'Interpreter','latex');
+xlabel('Eps')
+ylabel('Error')

+ 11 - 0
Lab4/error_bad.m

@@ -0,0 +1,11 @@
+X = logspace(-16, -1, 16);
+data=csvread('lab_4_error_bad.csv'); % reading csv file 
+X = data(:,1);
+Y = data(:,2); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('Error(Eps)');
+title("$\bf Error(Eps)$", 'Interpreter','latex');
+xlabel('Eps')
+ylabel('Error')

+ 261 - 0
Lab4/lab.c

@@ -0,0 +1,261 @@
+#define _USE_MATH_DEFINES
+#include<stdio.h>
+#include<stdlib.h>
+#include<math.h>
+#include<time.h>
+
+// Необязательный флаг для дебага (можно удалить)
+#define DEBUG 0
+
+// Фиксированная размерность матрицы (обрабатывается препроцессором, просто alias)
+#define N 10
+
+//
+struct N_eps {
+	double eps;
+	int I;	
+};
+
+// Тип вектора
+typedef double vec[N];
+
+// Тип матрицы
+typedef double mat[N][N];
+
+// Скалярное произведение
+double dot(vec v, vec u) {
+    double res = 0;
+    for(int i = 0; i < N; i++) res += v[i]*u[i];
+
+    return res;
+}
+
+// Прибавление вектора
+void add(vec v, vec u, vec result) {
+    for(int i = 0; i < N; i++) {
+        result[i] = v[i] + u[i];
+    }
+}
+
+// Вычитание вектора
+void sub(vec v, vec u, vec result) {
+    for(int i = 0; i < N; i++) {
+        result[i] = v[i] - u[i];
+    }
+}
+
+// Умножение на скаляр
+void mul(vec v, double a) {
+    for(int i = 0; i < N; i++) {
+        v[i] *= a;
+    }
+}
+
+// Умножение матрицы на вектор (res = m*v)
+void apply(mat m, vec v, vec res) {   
+    for(int i = 0; i < N; i++) {
+        res[i] = 0;
+        for(int j = 0; j < N; j++) {
+            res[i] += m[i][j] * v[j]; 
+        }
+    }
+}
+
+
+// Копирование матрицы (copy = m)
+void copy_vec(vec copy, vec x) {
+    for(int i = 0; i < N; i++) {
+        copy[i] = x[i];
+    }
+}
+
+//Ошибка между двумя векторами
+double error(vec a, vec b){
+    double error = 0;
+    for (int i = 0; i < N; i++) {
+		if (error < fabs(a[i] - b[i])) {
+			error = fabs(a[i] - b[i]);
+		}
+	}
+    return error;
+}
+
+// Чтение матрицы из файла
+void mat_from_file(FILE* f, mat m) {
+	double d;
+	for (int i = 0; i < N; i++) {
+		for (int j = 0; j < N; j++) {
+			fscanf(f, "%lf,", &d);
+			m[i][j] = d;
+		}
+	}
+}
+// Чтение матрицы из файла
+void min_max_from_file(FILE* f, vec v) {
+	double d;
+	for (int i = 0; i < 2; i++) {
+		fscanf(f, "%lf,", &d);
+		v[i] = d;
+	}
+}
+
+// Красивая печать матрицы
+void print_mat(mat m) {
+    for(int j = 0; j < N; j++) {
+        printf("-----------|");
+    }
+    printf("\n");
+    for(int i = 0; i < N; i++) {
+        for(int j = 0; j < N; j++) {
+            printf("%10.4lf |", m[i][j]);
+        }
+        printf("\n");
+        for(int j = 0; j < N; j++) {
+            printf("-----------|");
+        }
+        printf("\n");
+    }
+}
+
+// Красивая печать вектора
+void print_vec(vec v) {
+    for(int j = 0; j < N; j++) {
+        printf("%10.4lf |", v[j]);
+    }
+    printf("\n");
+}
+
+void mx_b(mat m, vec x, vec b, vec result){
+    apply(m,x,result);
+    sub(b,result,result);
+}
+
+// Решение СЛАУ методом Ричардсона
+struct N_eps solve(mat m, double eps, int M, double min, double max) {
+    struct N_eps result;
+    result.I = 0;
+    vec x = { 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9};
+    vec x1;
+    vec b;
+    vec var;
+    vec x_k = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+    apply(m,x_k,b);
+    print_vec(b);
+
+    for (int k = 0; k < M; k++) {
+        
+
+
+        double t = cos(M_PI * (2 * (k + 1) - 1) / (2 * M));
+        printf("\n t = %lf\n", t);
+        double alpha  = 2.0 / ((min + max) + ((max - min)*t));
+    
+        mx_b(m, x, b, var);
+        //print_vec(var);
+
+        mul(var,alpha);
+        //print_vec(var);
+
+        add(x,var,x1);
+        print_vec(x1);
+
+        if (error(x,x1) < eps){
+            result.eps = error(x,x1);
+            result.I += 1;
+            break;
+        }
+        result.eps = error(x,x1);
+        result.I += 1;
+        copy_vec(x,x1);
+        print_vec(x);
+    }
+    return result;
+}
+
+//взять из мат лаба
+int main(){
+    FILE* f;
+    FILE* f2;
+	if ((f = fopen("lab4_1.txt", "r")) == NULL) return 1;
+    if ((f2 = fopen("min_max.txt", "r")) == NULL) return 1;
+    mat m;
+    vec min_max;
+    FILE* file;
+    FILE* file2;
+    if ((file = fopen("lab_4_cond.csv", "w+")) == NULL) return 1;
+    if ((file2 = fopen("lab_4_time.csv", "w+")) == NULL) return 1;
+    for (int k = 0; k < 8; k++){
+        mat_from_file(f, m);
+        min_max_from_file(f2, min_max);
+        clock_t begin = clock();
+        struct N_eps result = solve(m, pow(10, -5), 1000, min_max[0], min_max[1]);
+        clock_t end = clock();
+        printf("\n\n\n");
+        fprintf(file, "%.5lf, %e\n", pow(10, k), result.eps);
+        fprintf(file2, "%.5lf, %e\n", pow(10, k), ((float)(end - begin) / CLOCKS_PER_SEC));
+    }
+    fclose(f);
+    fclose(f2); 
+    fclose(file);
+    fclose(file2);
+
+    FILE* fbad = fopen("lab_4_error_bad.txt", "r");
+    FILE* fminbad = fopen("min_max2.txt", "r");
+    FILE* fbade = fopen("lab_4_error_bad.csv", "w+");
+    FILE* fbadm = fopen("lab_4_M_bad.csv", "w+");
+    mat_from_file(fbad,m);
+    min_max_from_file(fminbad, min_max);
+    for (int i = 1; i < 6; i++) {
+        struct N_eps result = solve(m, pow(10, -i), 1000, min_max[0], min_max[1]);
+        fprintf(fbade, "%e, %e\n", pow(10, -i), result.eps);
+        fprintf(fbadm, "%e, %d\n", pow(10, -i), result.I);
+    }
+    fclose(fbad);
+    fclose(fminbad);
+    fclose(fbade);
+    fclose(fbadm);
+
+
+    FILE* fgood = fopen("lab_4_error_good.txt", "r");\
+    FILE* fmingood = fopen("min_max3.txt", "r");
+    FILE* fgoode = fopen("lab_4_error_good.csv", "w+");
+    FILE* fgoodm = fopen("lab_4_M_good.csv", "w+");
+    mat_from_file(fgood,m);
+    min_max_from_file(fmingood, min_max);
+    for (int i = 1; i < 16; i++) {
+        struct N_eps result = solve(m, pow(10, -i), 1000, min_max[0], min_max[1]);
+        fprintf(fgoodm, "%e, %d\n", pow(10, -i), result.I);
+        fprintf(fgoode, "%e, %e\n", pow(10, -i), result.eps);
+    }
+    fclose(fgood);
+    fclose(fmingood);
+    fclose(fgoode);
+    fclose(fgoodm);
+
+
+    FILE* fbad2 = fopen("lab_4_error_bad.txt", "r");
+    FILE* fminbad2 = fopen("min_max2.txt", "r");
+    FILE* fbadmt = fopen("lab_4_M_bad_tol.csv", "w+");
+    mat_from_file(fbad2,m);
+    min_max_from_file(fminbad2, min_max);
+    for (int i = 0; i < 41; i++) {
+        struct N_eps result = solve(m, pow(10, -15), i, min_max[0], min_max[1]);
+        fprintf(fbadmt, "%e, %d\n", result.eps, result.I);
+    }
+    fclose(fbad2);
+    fclose(fminbad2);
+    fclose(fbadmt);
+
+    FILE* fgood2 = fopen("lab_4_error_good.txt", "r");
+    FILE* fmindoof2 = fopen("min_max3.txt", "r");
+    FILE* fgoodmt2 = fopen("lab_4_M_good_tol.csv", "w+");
+    mat_from_file(fgood2,m);
+    min_max_from_file(fmindoof2, min_max);
+    for (int i = 0; i < 41; i++) {
+        struct N_eps result = solve(m, pow(10, -15), i, min_max[0], min_max[1]);
+        fprintf(fgoodmt2, "%e, %d\n", result.eps, i);
+    }
+    fclose(fgood2);
+    fclose(fmindoof2);
+    fclose(fgoodmt2);
+}

+ 80 - 0
Lab4/lab4_1.txt

@@ -0,0 +1,80 @@
+2.0181 0.7868 0.8209 1.1553 0.6649 0.8245 1.1792 1.0289 0.7177 1.1886
+0.7868 1.6081 0.6344 0.8929 0.5138 0.6372 0.9113 0.7952 0.5547 0.9186
+0.8209 0.6344 1.6619 0.9315 0.5361 0.6648 0.9508 0.8296 0.5787 0.9583
+1.1553 0.8929 0.9315 2.3109 0.7545 0.9356 1.3381 1.1675 0.8144 1.3487
+0.6649 0.5138 0.5361 0.7545 1.4342 0.5384 0.7701 0.6719 0.4687 0.7762
+0.8245 0.6372 0.6648 0.9356 0.5384 1.6677 0.9550 0.8332 0.5812 0.9626
+1.1792 0.9113 0.9508 1.3381 0.7701 0.9550 2.3658 1.1917 0.8312 1.3767
+1.0289 0.7952 0.8296 1.1675 0.6719 0.8332 1.1917 2.0398 0.7253 1.2012
+0.7177 0.5547 0.5787 0.8144 0.4687 0.5812 0.8312 0.7253 1.5059 0.8379
+1.1886 0.9186 0.9583 1.3487 0.7762 0.9626 1.3767 1.2012 0.8379 2.3876
+7.4111 11.1272 8.6569 7.2584 8.8298 6.4813 9.8627 5.7395 7.6095 5.8361
+11.1272 20.3127 15.0252 12.5979 15.3252 11.2491 17.1179 9.9616 13.2073 10.1294
+8.6569 15.0252 12.6895 9.8011 11.9229 8.7517 13.3177 7.7500 10.2752 7.8806
+7.2584 12.5979 9.8011 9.2178 9.9968 7.3379 11.1663 6.4981 8.6153 6.6075
+8.8298 15.3252 11.9229 9.9968 13.1610 8.9265 13.5836 7.9048 10.4804 8.0380
+6.4813 11.2491 8.7517 7.3379 8.9265 7.5523 9.9707 5.8023 7.6929 5.9001
+9.8627 17.1179 13.3177 11.1663 13.5836 9.9707 16.1726 8.8295 11.7064 8.9782
+5.7395 9.9616 7.7500 6.4981 7.9048 5.8023 8.8295 6.1382 6.8124 5.2248
+7.6095 13.2073 10.2752 8.6153 10.4804 7.6929 11.7064 6.8124 10.0320 6.9271
+5.8361 10.1294 7.8806 6.6075 8.0380 5.9001 8.9782 5.2248 6.9271 6.3128
+71.3406 84.1528 76.0758 101.7726 92.2369 89.2315 66.4515 75.4194 93.2273 82.6466
+84.1528 101.6773 91.0142 121.7568 110.3487 106.7531 79.5001 90.2289 111.5336 98.8752
+76.0758 91.0142 83.2787 110.0706 99.7574 96.5070 71.8697 81.5687 100.8286 89.3852
+101.7726 121.7568 110.0706 148.2499 133.4533 129.1049 96.1456 109.1208 134.8862 119.5775
+92.2369 110.3487 99.7574 133.4533 121.9493 117.0083 87.1372 98.8967 122.2480 108.3736
+89.2315 106.7531 96.5070 129.1049 117.0083 114.1957 84.2979 95.6743 118.2647 104.8424
+66.4515 79.5001 71.8697 96.1456 87.1372 84.2979 63.7775 71.2496 88.0728 78.0771
+75.4194 90.2289 81.5687 109.1208 98.8967 95.6743 71.2496 81.8649 99.9586 88.6139
+93.2273 111.5336 100.8286 134.8862 122.2480 118.2647 88.0728 99.9586 124.5606 109.5372
+82.6466 98.8752 89.3852 119.5775 108.3736 104.8424 78.0771 88.6139 109.5372 98.1055
+932.7507 808.3725 856.0143 1021.8085 845.2129 1278.9869 1054.3229 1069.0977 818.9842 861.7440
+808.3725 702.3315 742.6648 886.5053 733.2936 1109.6293 914.7142 927.5326 710.5381 747.6358
+856.0143 742.6648 787.4340 938.7518 776.5106 1175.0257 968.6233 982.1972 752.4139 791.6980
+1021.8085 886.5053 938.7518 1121.5708 926.9064 1402.6066 1156.2278 1172.4307 898.1427 945.0354
+845.2129 733.2936 776.5106 926.9064 767.7124 1160.1989 956.4009 969.8035 742.9198 781.7081
+1278.9869 1109.6293 1175.0257 1402.6066 1160.1989 1756.6278 1447.2381 1467.5191 1124.1957 1182.8907
+1054.3229 914.7142 968.6233 1156.2278 956.4009 1447.2381 1194.0194 1209.7379 926.7219 975.1068
+1069.0977 927.5326 982.1972 1172.4307 969.8035 1467.5191 1209.7379 1227.6907 939.7086 988.7715
+818.9842 710.5381 752.4139 898.1427 742.9198 1124.1957 926.7219 939.7086 720.8655 757.4502
+861.7440 747.6358 791.6980 945.0354 781.7081 1182.8907 975.1068 988.7715 757.4502 797.9972
+8157.2427 7956.2872 7327.8359 8339.8893 9151.4608 8771.2623 9401.0450 9638.3939 11198.6436 9755.3167
+7956.2872 7762.2336 7148.1893 8135.4316 8927.1068 8556.2292 9170.5723 9402.1024 10924.1016 9516.1588
+7327.8359 7148.1893 6584.5680 7492.8300 8221.9724 7880.3897 8446.2071 8659.4491 10061.2286 8764.4964
+8339.8893 8135.4316 7492.8300 8528.6710 9357.5158 8968.7568 9612.7197 9855.4128 11450.7931 9974.9682
+9151.4608 8927.1068 8221.9724 9357.5158 10269.1145 9841.5246 10548.1528 10814.4628 12565.0928 10945.6524
+8771.2623 8556.2292 7880.3897 8968.7568 9841.5246 9433.6574 10109.9286 10365.1748 12043.0747 10490.9141
+9401.0450 9170.5723 8446.2071 9612.7197 10548.1528 10109.9286 10836.8284 11109.4014 12907.7757 11244.1689
+9638.3939 9402.1024 8659.4491 9855.4128 10814.4628 10365.1748 11109.4014 11390.8814 13233.6594 11528.0514
+11198.6436 10924.1016 10061.2286 11450.7931 12565.0928 12043.0747 12907.7757 13233.6594 15376.9055 13394.1961
+9755.3167 9516.1588 8764.4964 9974.9682 10945.6524 10490.9141 11244.1689 11528.0514 13394.1961 11668.8975
+84974.7133 87529.7533 92917.4039 94538.4499 82322.9889 64362.4547 96889.3979 114395.3062 110674.2571 82935.1759
+87529.7533 90163.6800 95712.3931 97382.2007 84799.2942 66298.5007 99803.8661 117836.3585 114003.3788 85429.8960
+92917.4039 95712.3931 101604.7032 103376.2913 90018.8789 70379.3205 105947.0155 125089.4478 121020.5398 90688.2957
+94538.4499 97382.2007 103376.2913 105180.8041 91589.3570 71607.1649 107795.3774 127271.7704 123131.8758 92270.4525
+82322.9889 84799.2942 90018.8789 91589.3570 79755.9528 62354.6911 93866.9680 110826.7858 107221.8135 80348.0429
+64362.4547 66298.5007 70379.3205 71607.1649 62354.6911 48751.6715 73387.8660 86647.5341 83829.0642 62818.3858
+96889.3979 99803.8661 105947.0155 107795.3774 93866.9680 73387.8660 110476.9938 130436.7188 126193.8748 94565.0007
+114395.3062 117836.3585 125089.4478 127271.7704 110826.7858 86647.5341 130436.7188 154004.9335 148994.4954 111650.9386
+110674.2571 114003.3788 121020.5398 123131.8758 107221.8135 83829.0642 126193.8748 148994.4954 144149.0043 108019.1582
+82935.1759 85429.8960 90688.2957 92270.4525 80348.0429 62818.3858 94565.0007 111650.9386 108019.1582 80946.5435
+554287.8729 689227.6445 666464.7999 1082929.6923 726429.6263 942724.3032 709437.1265 696299.2105 653725.2081 558361.9388
+689227.6445 857020.6575 828715.2135 1346568.2077 903278.4371 1172229.9096 882149.1244 865812.7915 812874.1764 694294.7826
+666464.7999 828715.2135 801346.5690 1302095.6404 873446.2230 1133515.1432 853014.7396 837217.9402 786027.7075 671364.5876
+1082929.6923 1346568.2077 1302095.6404 2115758.6985 1419251.0236 1841833.5153 1386052.1810 1360384.1740 1277205.8532 1090891.2915
+726429.6263 903278.4371 873446.2230 1419251.0236 952035.0961 1235502.5832 929764.3006 912546.1923 856750.1448 731770.2699
+942724.3032 1172229.9096 1133515.1432 1841833.5153 1235502.5832 1603374.9121 1206601.9483 1184257.1421 1111847.8019 949655.1253
+709437.1265 882149.1244 853014.7396 1386052.1810 929764.3006 1206601.9483 908016.4358 891200.0901 836709.2129 714652.8428
+696299.2105 865812.7915 837217.9402 1360384.1740 912546.1923 1184257.1421 891200.0901 874697.1442 821214.3720 701418.3380
+653725.2081 812874.1764 786027.7075 1277205.8532 856750.1448 1111847.8019 836709.2129 821214.3720 771003.6497 658531.3355
+558361.9388 694294.7826 671364.5876 1090891.2915 731770.2699 949655.1253 714652.8428 701418.3380 658531.3355 562467.9643
+10785356.2037 9066541.4821 11020684.3437 9876870.5991 10758039.2146 11233398.2139 9362536.3002 10832276.4715 10636437.9550 10047270.1246
+9066541.4821 7621648.4000 9264367.2717 8302837.9973 9043578.7198 9443181.8858 7870470.8506 9105985.1178 8941356.5079 8446081.7142
+11020684.3437 9264367.2717 11261149.2060 10092377.2208 10992772.3383 11478503.3487 9566820.4962 11068629.4018 10868517.8216 10266494.7485
+9876870.5991 8302837.9973 10092377.2208 9044911.5281 9851855.5223 10287173.5285 8573900.2352 9919839.5401 9740497.1216 9200956.7623
+10758039.2146 9043578.7198 10992772.3383 9851855.5223 10730793.4086 11204947.4696 9338823.8741 10804841.6453 10609499.1276 10021823.4782
+11233398.2139 9443181.8858 11478503.3487 10287173.5285 11204947.4696 11700054.7348 9751472.8599 11282268.6754 11078294.6755 10464651.7561
+9362536.3002 7870470.8506 9566820.4962 8573900.2352 9338823.8741 9751472.8599 8127418.6249 9403267.6499 9233264.4200 8721820.4207
+10832276.4715 9105985.1178 11068629.4018 9919839.5401 10804841.6453 11282268.6754 9403267.6499 10879402.8685 10682711.3642 10090980.3821
+10636437.9550 8941356.5079 10868517.8216 9740497.1216 10609499.1276 11078294.6755 9233264.4200 10682711.3642 10489577.8599 9908543.8800
+10047270.1246 8446081.7142 10266494.7485 9200956.7623 10021823.4782 10464651.7561 8721820.4207 10090980.3821 9908543.8800 9359696.1654

+ 5 - 0
Lab4/lab_4_M_bad.csv

@@ -0,0 +1,5 @@
+1.000000e-01, 2
+1.000000e-02, 2
+1.000000e-03, 2
+1.000000e-04, 2
+1.000000e-05, 2

+ 41 - 0
Lab4/lab_4_M_bad_tol.csv

@@ -0,0 +1,41 @@
+1.079005e-311, 0
+2.547581e-01, 1
+1.390307e-01, 2
+1.138031e-01, 3
+9.305394e-02, 4
+7.106301e-02, 5
+4.712831e-02, 6
+2.183628e-02, 7
+4.189721e-03, 8
+2.977060e-02, 9
+5.424012e-02, 10
+7.627052e-02, 11
+9.546124e-02, 12
+1.105041e-01, 13
+1.214597e-01, 14
+1.271378e-01, 15
+1.281951e-01, 16
+1.235972e-01, 17
+1.146678e-01, 18
+1.004996e-01, 19
+8.308918e-02, 20
+6.155926e-02, 21
+3.852457e-02, 22
+1.298909e-02, 23
+1.190384e-02, 24
+3.780030e-02, 25
+5.938171e-02, 26
+8.023088e-02, 27
+1.021689e-01, 28
+9.775135e-02, 29
+2.670295e-02, 30
+1.321748e-01, 31
+5.489828e-01, 32
+4.878091e-01, 33
+5.943770e+00, 34
+5.636958e+01, 35
+8.994934e+01, 36
+3.196828e+02, 37
+1.006674e+03, 38
+3.341589e+03, 39
+1.138087e+04, 40

+ 15 - 0
Lab4/lab_4_M_good.csv

@@ -0,0 +1,15 @@
+1.000000e-01, 2
+1.000000e-02, 2
+1.000000e-03, 13
+1.000000e-04, 34
+1.000000e-05, 56
+1.000000e-06, 78
+1.000000e-07, 99
+1.000000e-08, 121
+1.000000e-09, 142
+1.000000e-10, 163
+1.000000e-11, 183
+1.000000e-12, 203
+1.000000e-13, 223
+1.000000e-14, 242
+1.000000e-15, 262

+ 41 - 0
Lab4/lab_4_M_good_tol.csv

@@ -0,0 +1,41 @@
+1.079005e-311, 0
+2.173891e-01, 1
+8.802993e-02, 2
+3.685533e-02, 3
+2.957485e-02, 4
+1.680888e-02, 5
+1.098157e-02, 6
+7.340314e-03, 7
+4.117592e-03, 8
+2.993003e-03, 9
+1.513775e-03, 10
+1.149567e-03, 11
+5.816139e-04, 12
+4.210108e-04, 13
+2.193240e-04, 14
+1.485122e-04, 15
+7.861158e-05, 16
+5.084543e-05, 17
+2.715696e-05, 18
+1.699170e-05, 19
+9.121680e-06, 20
+5.566513e-06, 21
+2.996622e-06, 22
+1.793496e-06, 23
+9.668723e-07, 24
+5.700867e-07, 25
+3.073296e-07, 26
+1.785787e-07, 27
+9.688015e-08, 28
+5.308105e-08, 29
+3.893831e-08, 30
+1.507016e-08, 31
+1.513630e-08, 32
+1.950633e-08, 33
+2.450419e-08, 34
+3.148304e-08, 35
+4.183278e-08, 36
+5.647824e-08, 37
+6.710773e-08, 38
+8.244036e-08, 39
+1.250861e-09, 40

+ 8 - 0
Lab4/lab_4_cond.csv

@@ -0,0 +1,8 @@
+1.00000, 9.645124e-06
+10.00000, 9.928609e-06
+100.00000, 2.928609e-05
+1000.00000, 3.186230e-05
+10000.00000, 4.075690e-05
+100000.00000, 6.840757e-05
+1000000.00000, 9.195746e-05
+10000000.00000, 6.665259e-05

+ 5 - 0
Lab4/lab_4_error_bad.csv

@@ -0,0 +1,5 @@
+1.000000e-01, 1.305911e-05
+1.000000e-02, 1.305911e-05
+1.000000e-03, 1.305911e-05
+1.000000e-04, 1.305911e-05
+1.000000e-05, 1.305911e-05

+ 10 - 0
Lab4/lab_4_error_bad.txt

@@ -0,0 +1,10 @@
+12297.8016 10048.2946 11332.6820 9577.6572 10016.8382 10691.0788 12203.2811 11346.9002 9904.2825 7738.3639
+10098.6997 8251.8236 9306.1674 7865.4000 8225.9401 8780.0036 10020.6257 9317.4457 8133.2139 6353.9544
+12921.9560 10558.2317 11907.2271 10064.5653 10525.4282 11234.2783 12823.0188 11923.2111 10407.2010 8130.4166
+12339.2819 10081.8974 11370.5923 9610.4352 10051.4064 10727.3507 12244.0725 11385.2234 9938.5866 7764.1476
+8708.3958 7114.8499 8024.7758 6782.1939 7092.5523 7571.1405 8640.9919 8034.8875 7013.9085 5479.2480
+9595.2145 7839.5697 8841.4358 7473.1363 7814.9084 8340.7850 9520.4424 8852.7223 7727.4187 6036.8177
+13589.5911 11103.1305 12522.4831 10583.3942 11069.0080 11813.8909 13484.9705 12537.9708 10944.7430 8549.8037
+14897.1169 12171.9616 13726.6597 11602.1343 12133.7171 12950.8644 14782.2116 13744.1940 11998.0423 9373.4282
+12417.7676 10146.8528 11442.7411 9671.0181 10114.4790 10795.4821 12322.0659 11457.7915 10001.6746 7812.9811
+6783.0769 5541.7266 6249.6225 5282.0186 5524.7929 5896.7245 6729.9699 6258.3133 5462.2929 4267.5979

+ 15 - 0
Lab4/lab_4_error_good.csv

@@ -0,0 +1,15 @@
+1.000000e-01, 2.870504e-03
+1.000000e-02, 5.870504e-03
+1.000000e-03, 9.012270e-04
+1.000000e-04, 9.855859e-05
+1.000000e-05, 9.645124e-06
+1.000000e-06, 9.334650e-07
+1.000000e-07, 9.892614e-08
+1.000000e-08, 9.220616e-09
+1.000000e-09, 9.329083e-10
+1.000000e-10, 9.154311e-11
+1.000000e-11, 9.701684e-12
+1.000000e-12, 9.898748e-13
+1.000000e-13, 9.681145e-14
+1.000000e-14, 9.992007e-15
+1.000000e-15, 7.771561e-16

+ 10 - 0
Lab4/lab_4_error_good.txt

@@ -0,0 +1,10 @@
+2.0181 0.7868 0.8209 1.1553 0.6649 0.8245 1.1792 1.0289 0.7177 1.1886
+0.7868 1.6081 0.6344 0.8929 0.5138 0.6372 0.9113 0.7952 0.5547 0.9186
+0.8209 0.6344 1.6619 0.9315 0.5361 0.6648 0.9508 0.8296 0.5787 0.9583
+1.1553 0.8929 0.9315 2.3109 0.7545 0.9356 1.3381 1.1675 0.8144 1.3487
+0.6649 0.5138 0.5361 0.7545 1.4342 0.5384 0.7701 0.6719 0.4687 0.7762
+0.8245 0.6372 0.6648 0.9356 0.5384 1.6677 0.9550 0.8332 0.5812 0.9626
+1.1792 0.9113 0.9508 1.3381 0.7701 0.9550 2.3658 1.1917 0.8312 1.3767
+1.0289 0.7952 0.8296 1.1675 0.6719 0.8332 1.1917 2.0398 0.7253 1.2012
+0.7177 0.5547 0.5787 0.8144 0.4687 0.5812 0.8312 0.7253 1.5059 0.8379
+1.1886 0.9186 0.9583 1.3487 0.7762 0.9626 1.3767 1.2012 0.8379 2.3876

+ 8 - 0
Lab4/lab_4_time.csv

@@ -0,0 +1,8 @@
+1.00000, 2.500000e-02
+10.00000, 1.000000e-02
+100.00000, 9.000000e-03
+1000.00000, 8.000000e-03
+10000.00000, 8.000000e-03
+100000.00000, 5.000000e-03
+1000000.00000, 4.000000e-03
+10000000.00000, 3.000000e-03

+ 8 - 0
Lab4/min_max.txt

@@ -0,0 +1,8 @@
+1.000000e+00 1.000000e+01
+1.000000e+00 1.000000e+02
+1.000000e+00 1.000000e+03
+1.000000e+00 1.000000e+04
+1.000000e+00 1.000000e+05
+1.000000e+00 1.000000e+06
+1.000000e+00 1.000000e+07
+1.000000e+00 1.000000e+08

+ 1 - 0
Lab4/min_max2.txt

@@ -0,0 +1 @@
+1.000000e+00 1.000000e+05

+ 1 - 0
Lab4/min_max3.txt

@@ -0,0 +1 @@
+1.000000e+00 1.000000e+01

+ 11 - 0
Lab4/time.m

@@ -0,0 +1,11 @@
+X = logspace(-16, -1, 16);
+data=csvread('lab_4_time.csv'); % reading csv file 
+X = data(:,1);
+Y = data(:,2); 
+figure;
+loglog(X, Y, '-o');
+grid on;
+legend('Time(Cond)');
+title("$\bf Time(Condition)$", 'Interpreter','latex');
+xlabel('Condition')
+ylabel('Time')