Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h> // Thanasis Tsounakis 2021 NEWTON method for a system
- #include <stdlib.h> // of two equations.
- #include <math.h>
- double det(double a11, double a12, double a21, double a22){
- return a11 * a22 - a12 * a21;
- }
- double f1(double x1, double x2){ // f1(x) function
- return pow(x1, 3) + 2*x2;
- }
- double f2(double x1, double x2){ // f2(x) function
- return 7*x1 + pow(x2, 2) - 30;
- }
- double df1x1(double x1){ // df1(x)/dx1 partial derivative function of f1(x) over x1
- return 3*pow(x1, 2);
- }
- double df1x2(double x1){ // df1(x)/dx2 partial derivative function of f1(x) over x2
- return 2;
- }
- double df2x1(double x2){ // df2(x)/dx1 partial derivative function of f2(x) over x1
- return 7;
- }
- double df2x2(double x2){ // df2(x)/dx2 partial derivative function of f2(x) over x2
- return 2*x2;
- }
- int main(){
- double x01 = 3.0, x02 = -3.0, x1, x2, delta_x1, delta_x2, j, error;
- int i=0;
- x1 = x01;
- x2 = x02;
- do{
- j = det(df1x1(x1), df1x2(x2), df2x1(x1), df2x2(x2));
- delta_x1 = det(-f1(x1,x2), df1x2(x2), -f2(x1,x2), df2x2(x2))/j;
- delta_x2 = det(df1x1(x1), -f1(x1,x2), df2x1(x1), -f2(x1,x2))/j;
- x1 = x01 + delta_x1;
- x2 = x02 + delta_x2;
- x01 = x1;
- x02 = x2;
- error = fabs(delta_x1) + fabs(delta_x2);
- printf("Iter:%d\tx1=%f\tx2=%f\n", ++i, x1, x2);
- } while(error >= 0.5 * pow(10.0,-5));
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement