Hello, I need help with the following C Code: If anybody is able to help with th
ID: 3707742 • Letter: H
Question
Hello, I need help with the following C Code:
If anybody is able to help with this it would be greatly appreciated. I know how to do the Euler method formula in C, but do not know how to solve a differential equation analytically, nor how to compare the two results and create a regression value, all in the same C code... Thank you!
Develop a C-code to meet the requirements below: 1) Find the solution of the differential equation below by using Euler's method. The range of x is 2 to 3 dyldx-x2-3x with y-3 at x-2 2) Find the appropriate step size for this specific problem. 3) Print all the y values within the range of x-2 to x-3. 4) Solve the differential equation analytically and compare with the Euler's method 5) Obtain a linear regression y-ax+b and show the r2 value Your C-code must contain the following features: (1) use of arrays, (2) use of pointers, (3) use of structure, (4) use of union, (5) use of functions and function calls, (6) formatted output on screen and (7) saving of the same output on a file.Explanation / Answer
CODE:
#include<stdio.h>
#include <math.h>
double sum(double [], double [], int n);
/*initialization should be done like this. should not specify the variable names in the function declaration part*/
double r(double [], double [], int , double , double );
float func(float ,float );
float euler(float ,float ,float ,int );
int main(){
double x[]={2,3};
double y[]={3};
double one[]={1,1};
float xn,y0,e, x0=2;
int n=2;
double sumx, sumy,sumxx,sumxy;
double a,b;
printf(" inputn: ");
scanf("%d",&n);
printf("input x0:");
scanf("%f",&x0);
printf("input xn:");
scanf("%f",&xn);
printf("input y0: ");
scanf("%f",&y0);
sumx=sum(x,one,n);
sumy=sum(y,one,n);
sumxx=sum(x,x,n);
sumxy=sum(x,y,n);
a=(n*sumxy-sumx*sumy)/(n*sumxx-sumx*sumx);
b=(sumy*sumxx-sumx*sumxy)/(n*sumxx-sumx*sumx);
e = euler(x0,xn,y0,n);
printf(" By linear regression, the function is: y=%fx+%f ",a,b);
printf(" When x= %f, y= %f ",a*x0+b,x0);
printf(" r = %f ",r(x,y,n,a,b));
return 0;
}
double sum(double x[],double y[], int n){
double s=0.0;int i=0;
for (i=0;i<n;i++)
s=s+x[i]*y[i];
return s;
}
double r(double x[],double y[], int n, double a, double b){
double s0=0,s=0,ybar=0,total=0;
int i=0;
for (i=0;i<n;i++){
total+=y[i];
}
ybar=total/n;
for (i=0;i<n;i++){
s0+=pow((y[i]-ybar),2);
s+=pow((y[i]-b-a*x[i]),2);
}
return pow((s0-s)/s0,0.5);
}
float func(float x,float y){
return ((x*x)-(3*x));
}
float euler(float x0,float xn,float y0,int n){
float x,y,h;
int i;
x=x0;
y=y0;
h=(xn-x0)/n;
printf("y(%f)=%6.4f ",x0,y0);
for(i=1;i<=n;i++) {y=y+h*func(x,y);
x=x0+i*h;
printf("y(%f)=%6.4f ",x,y);
}
return y;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.