26
7.c
Normal file
26
7.c
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define f(x) ((352 * x * x * x) - (64 * x * x) + (198 * x) - 36)
|
||||
|
||||
double simpsons_1_3(double a, double b, double n) {
|
||||
double h = (b - a) / n;
|
||||
|
||||
double s = f(a) + f(b);
|
||||
|
||||
// Add the other heights
|
||||
|
||||
for (int i = 1; i < n; i += 2)
|
||||
s += 4 * f(a + i * h);
|
||||
|
||||
for (int i = 2; i < n; i += 2)
|
||||
s += 2 * f(a + i * h);
|
||||
|
||||
return (h / 3) * s;
|
||||
}
|
||||
|
||||
int main() {
|
||||
printf("The area under the curve f(x) = 352x^3 - 64x^2 + 198x - 36 from x=3 "
|
||||
"to x=4 is %lf",
|
||||
simpsons_1_3(3, 4, 10000));
|
||||
}
|
26
8.c
Normal file
26
8.c
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define f(x) ((352 * x * x * x) - (64 * x * x) + (198 * x) - 36)
|
||||
|
||||
double simpsons_1_3(double a, double b, double n) {
|
||||
double h = (b - a) / n;
|
||||
|
||||
double s = f(a) + f(b);
|
||||
|
||||
// Add the other heights
|
||||
|
||||
for (int i = 1; i < n; i++)
|
||||
s += 3 * f(a + i * h);
|
||||
|
||||
for (int i = 3; i < n; i += 3)
|
||||
s -= f(a + i * h);
|
||||
|
||||
return (h / 8) * 3 * s;
|
||||
}
|
||||
|
||||
int main() {
|
||||
printf("The area under the curve f(x) = 352x^3 - 64x^2 + 198x - 36 from x=3 "
|
||||
"to x=4 is %lf",
|
||||
simpsons_1_3(3, 4, 10000));
|
||||
}
|
54
9.c
Normal file
54
9.c
Normal file
@@ -0,0 +1,54 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
double **inverse(double **matrix, int order) {
|
||||
double **inverse = calloc(order, sizeof(double *));
|
||||
for (int i = 0; i < order; i++) {
|
||||
inverse[i] = calloc(2 * order, sizeof(double));
|
||||
inverse[i][order + i] = 1;
|
||||
memcpy(inverse[i], matrix[i], order * sizeof(double));
|
||||
}
|
||||
|
||||
for (int i = 0; i < order; i++) {
|
||||
for (int j = 0; j < order; j++) {
|
||||
if (i == j)
|
||||
continue;
|
||||
double r = inverse[j][i] / inverse[i][i];
|
||||
|
||||
for (int k = 0; k < order * 2; k++)
|
||||
inverse[j][k] -= r * inverse[i][k];
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < order; i++) {
|
||||
for (int j = 0; j < order; j++)
|
||||
inverse[i][j + order] /= inverse[i][i];
|
||||
}
|
||||
|
||||
return inverse;
|
||||
}
|
||||
|
||||
int main() {
|
||||
const int ORDER = 3;
|
||||
|
||||
double **matrix = malloc(ORDER * sizeof(double *));
|
||||
for (int i = 0; i < ORDER; i++)
|
||||
matrix[i] = malloc(ORDER * sizeof(double));
|
||||
|
||||
matrix[0][0] = 92, matrix[0][1] = 4.5, matrix[0][2] = 61; // 92x + 4.5y + 61z = 0
|
||||
matrix[1][0] = -2, matrix[1][1] = 0, matrix[1][2] = 92387; // -2x + 92387z = 0
|
||||
matrix[2][0] = -2, matrix[2][1] = 0, matrix[2][2] = -23; // -2x - 23z = 0
|
||||
|
||||
double **inv = inverse(matrix, ORDER);
|
||||
|
||||
for (int i = 0; i < ORDER; i++) {
|
||||
for (int j = 0; j < ORDER; j++)
|
||||
printf("%lf ", inv[i][j + ORDER]);
|
||||
printf("\n");
|
||||
free(inv[i]);
|
||||
free(matrix[i]);
|
||||
}
|
||||
free(inv);
|
||||
free(matrix);
|
||||
}
|
122
file.org
122
file.org
@@ -233,3 +233,125 @@ int main() {
|
||||
trapezoidal_integral(3, 4, 10000));
|
||||
}
|
||||
#+end_src
|
||||
|
||||
* Program for solving numerical integration by Simpson's 1/3 rule.
|
||||
#+ATTR_LATEX: :options frame=single,breaklines=true
|
||||
#+begin_src C :tangle 7.c :results output :exports both :wrap src text
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define f(x) ((352 * x * x * x) - (64 * x * x) + (198 * x) - 36)
|
||||
|
||||
double simpsons_1_3(double a, double b, double n) {
|
||||
double h = (b - a) / n;
|
||||
|
||||
double s = f(a) + f(b);
|
||||
|
||||
// Add the other heights
|
||||
|
||||
for (int i = 1; i < n; i += 2)
|
||||
s += 4 * f(a + i * h);
|
||||
|
||||
for (int i = 2; i < n; i += 2)
|
||||
s += 2 * f(a + i * h);
|
||||
|
||||
return (h / 3) * s;
|
||||
}
|
||||
|
||||
int main() {
|
||||
printf("The area under the curve f(x) = 352x^3 - 64x^2 + 198x - 36 from x=3 "
|
||||
"to x=4 is %lf",
|
||||
simpsons_1_3(3, 4, 10000));
|
||||
}
|
||||
#+end_src
|
||||
|
||||
#+LATEX: \clearpage
|
||||
* Program for solving numerical integration by Simpson's 3/8 rule.
|
||||
#+ATTR_LATEX: :options frame=single,breaklines=true
|
||||
#+begin_src C :tangle 8.c :results output :exports both :wrap src text
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define f(x) ((352 * x * x * x) - (64 * x * x) + (198 * x) - 36)
|
||||
|
||||
double simpsons_1_3(double a, double b, double n) {
|
||||
double h = (b - a) / n;
|
||||
|
||||
double s = f(a) + f(b);
|
||||
|
||||
// Add the other heights
|
||||
|
||||
for (int i = 1; i < n; i++)
|
||||
s += 3 * f(a + i * h);
|
||||
|
||||
for (int i = 3; i < n; i += 3)
|
||||
s -= f(a + i * h);
|
||||
|
||||
return (h / 8) * 3 * s;
|
||||
}
|
||||
|
||||
int main() {
|
||||
printf("The area under the curve f(x) = 352x^3 - 64x^2 + 198x - 36 from x=3 "
|
||||
"to x=4 is %lf",
|
||||
simpsons_1_3(3, 4, 10000));
|
||||
}
|
||||
#+end_src
|
||||
|
||||
* Program for finding inverse of linear equations using Gauss Jordan method.
|
||||
#+ATTR_LATEX: :options frame=single,breaklines=true
|
||||
#+begin_src C :tangle 9.c :results output :exports both :wrap src text
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
double **inverse(double **matrix, int order) {
|
||||
double **inverse = calloc(order, sizeof(double *));
|
||||
for (int i = 0; i < order; i++) {
|
||||
inverse[i] = calloc(2 * order, sizeof(double));
|
||||
inverse[i][order + i] = 1;
|
||||
memcpy(inverse[i], matrix[i], order * sizeof(double));
|
||||
}
|
||||
|
||||
for (int i = 0; i < order; i++) {
|
||||
for (int j = 0; j < order; j++) {
|
||||
if (i == j)
|
||||
continue;
|
||||
double r = inverse[j][i] / inverse[i][i];
|
||||
|
||||
for (int k = 0; k < order * 2; k++)
|
||||
inverse[j][k] -= r * inverse[i][k];
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < order; i++) {
|
||||
for (int j = 0; j < order; j++)
|
||||
inverse[i][j + order] /= inverse[i][i];
|
||||
}
|
||||
|
||||
return inverse;
|
||||
}
|
||||
|
||||
int main() {
|
||||
const int ORDER = 3;
|
||||
|
||||
double **matrix = malloc(ORDER * sizeof(double *));
|
||||
for (int i = 0; i < ORDER; i++)
|
||||
matrix[i] = malloc(ORDER * sizeof(double));
|
||||
|
||||
matrix[0][0] = 92, matrix[0][1] = 4.5, matrix[0][2] = 61; // 92x + 4.5y + 61z = 0
|
||||
matrix[1][0] = -2, matrix[1][1] = 0, matrix[1][2] = 92387; // -2x + 92387z = 0
|
||||
matrix[2][0] = -2, matrix[2][1] = 0, matrix[2][2] = -23; // -2x - 23z = 0
|
||||
|
||||
double **inv = inverse(matrix, ORDER);
|
||||
|
||||
for (int i = 0; i < ORDER; i++) {
|
||||
for (int j = 0; j < ORDER; j++)
|
||||
printf("%lf ", inv[i][j + ORDER]);
|
||||
printf("\n");
|
||||
free(inv[i]);
|
||||
free(matrix[i]);
|
||||
}
|
||||
free(inv);
|
||||
free(matrix);
|
||||
}
|
||||
#+end_src
|
||||
|
Reference in New Issue
Block a user