문제 1번구간간격 h=0.1로 하여 에 대한 의 차분표를 작성하고, 기준점 으로 하여 Newton의 전진차분 보간다항식으로 과 을 각각 구하여라. 또한, 식 (5.12)를 이용하여 근사도함수에 대한 오차를 추정하라.차분표를 작성함에 있어서 기준점을 으로 주어졌기 때문에 구간은 1.3~1.9(구간 간격h=0.1이기 때문에) 인 4계까지 나타내는 전진 차분표를 구하면 다음과 같다.1.30.7692-0.05491.40.71430.0073-0.0476-0.00141.50.66670.00590.0004-0.0417-0.00101.60.62500.00490.0003-0.0368-0.00071.70.58820.0042-0.0002-0.0326-0.00091.80.55560.0033-0.02931.90.5263이므로 1계 근사도함수(1 항)(2 항)(3 항)2계 근사도함수를 구하면 다음과 같다.(1 항)(2 항)(3 항)전진 차분 보간 다항식으로 과 을 구하는 코딩을 하면 다음과 같다.C언어 코딩#include #include #define h 0.1#define N 7void Fore(double f[N],double d1[N-1],double d2[N-2],double d3[N-3],double d4[N-4]);void Fdif(double f[N],double d1[N-1],double d2[N-2],double d3[N-3]);void Fdif2(double f[N],double d2[N-2],double d3[N-3], double d4[N-4]);void main(){double f[N]={0.7692,0.7143,0.6667,0.625,0.5882,0.5556,0.5263};double d1[N-1]={0};double d2[N-2]={0};double d3[N-3]={0};double d4[N-4]={0};Fore(f,d1,d2,d3,d4);Fdif(f,d1,d2,d3);Fdif2(f,d2,d3,d4);}void Fore(double f[N],double d1[N-1],double d2[N-2],double d3[N-3],double d4[N-4]){int i;for(i=0;i
문제 1번다음은 열교환기의 한 표면에서 시간에 따라 형성된 서리의 두께를 측정한 실험의 결과이다.t[min]2*************0Y[mm]0.6901.2181.4941.9082.0232.345다음 물음에 답하시오.주어진 자료를 의 형태로 최소자승곡선을 구하라., , , ,, ,식 (4.45)에 대입하면위 연립 방정식을 Gauss 소거법으로 풀면, ,이를 문제에서 주어진 식에 대입하면이다.b) 주어진 자료를 의 형태로 최소자승곡선을 구하라.위 비선형 함수를 선형화하여 내도록 하자.→ ()선형화하여 정리하면 다음과 같다.-0.0345-0.02436-0.0186475-0.0173455-0.01445-0.0137940.691.2181.4941.9082.0232.345, ,,식 (4.45)에 대입하면위 연립 방정식을 Gauss 소거법으로 풀면,이를 문제에서 주어진 식에 대입하면이다.c) (a)와 (b)에서 구한 곡선의 결정계수를 구하고 결과에 대해 논의하라.(a)의 결정계수를 구하기 위해 와 를 먼저 구하도록 한다.최소자승오차 =0.018292 이고이므로 분산 =1.813152이므로이다.의 결정계수를 구하기 위해 와 를 먼저 구하도록 한다.최소자승오차 =0.058128이므로 분산 =1.813152이므로2차 함수로 곡선을 근사 시켰을 때에는 결정계수가 0.98991, 비선형 함수로 근사 시켰을 때에는 결정계수가 0.967941로 2차 함수로 곡선을 근사 시켰을 때가 주어진 자료에 대해서 조금 더 근사하다는 것을 알 수 있다. 위 데이터와 위에서 구한 함수들 사이의 관계를 알아보기 위해 엑셀로 그래프를 그려 좀 더 도식적으로 알아보도록 하자.이 두가지 경우를 봄으로써 최소자승곡선을 구할 때에 물론 편한 방식은 다항식을 이용하여 최소자승곡선을 구하는 것이 편할지라도 비선형 함수나 삼각함수, 지수함수 같은 함수를 잘 선택하여 고른다면 더욱 정확한 곡선을 얻을 수 있지만 이 문제에서는 다항식이 더 정확한 결과를 낸다는 것을 알았다.문제 2번자동차 window regulator system에 사용되고 있는 플라스틱 소재의 피로시험 결과는 다음과 같다.순서12345678수명(cycle)13**************************369*************응력(MPa)34.1631.7931.7931.7930.5630.5627.94627.946순서*************수명(cycle)55**************************7*************715597응력(MPa)27.94626.0326.0325.0123.9923.9922.98차수가 1~4차인 4개의 Newton의 전진차분 보간다항식으로 를 계산하라. 단, 기준점은 정확도를 감안하여 택하라.의 형태로 최소자승곡선을 구하라.비선형 함수로 나타내기 위하여 위 식을 선형화 하도록 한다. 이 식 같은 경우는 양변에 log를 취하도록 한다.이고 , , , 이라고 하면로 표현 가능하다. 위에 주어진 표를 u와 z에 관해 다시 그리면 다음과 같다.순서123454.134434.638884.902934.807545.226611.533521.502291.502291.502291.48515순서6789105.214045.759855.811175.745606.037421.485151.446321.446321.446321.41547순서11121314156.213796.166256.248096.237726.433871.415471.398111.380031.380031.36135, , , ,식 (4.45)에 대입하면위 연립방정식을 Gauss소거법으로 풀면,이를 문제에서 주어진 식을 선형화 한 식에 대입하면→이것의 결정계수를 구하라.구한 곡선의 결정계수를 구하기 위해 먼저 와 를 구하도록 한다.최소자승오차 =11.758366이므로 분산 =167.79366이므로구조물의 반복응력이 27MPa일 때 수명을 구하고, 이것이 설계 목표수명을 만족하는 반복 응력을 구하라.이므로 일 때의 를 구하면이다.설계 목표수명 = 이므로 일 때 를 구하면이다.이 곡선의 결정계수는 0.9299로써 주어진 데이터와 최소자승곡선 사이에 92.99%까지 잘 표현하고 있다고 말할 수 있다. 이 최소자승곡선과 데이터 사이의 관계를 알아보기 위해 엑셀을 이용하여 그래프를 그리면 다음과 같다.최소자승곡선을 sigma(least), 데이터 점을 이은 것을 sigma라고 하였을 때에 경향은 매우 비슷한 그래프가 그려졌으나 92.99%라는 것은 즉 오차가 7.01%라는 것이므로 그렇게 잘 맞다고 생각하지 않으므로 지수함수의 형태가 아니라 또 다른 함수로 근사시킨다면 조금 더 근사할 수 있다는 생각을 하였다.문제 3번다음은 자료를 최소자승법을 사용하여 의 형태로 나타내어라.01.33.15.97.510.214.418.73.24.75.97.39.611.413.628.42변수 최소자승법을 이용하여 문제를 풀기 위해, 이라고 한다면 → 라고 표현 가능하다.위 표를 u, v, Y에 대해 다시 정리하면 다음과 같다.
문제 1번다음 자료는 자동차가 과속 방지턱을 지나고 난 후, 수직 방향의 진동의 진폭과 시간에 관한 자료이다.시간, , (sec)00.641.281.92진폭, ,(mm)520.750.3위 자료를 이용하여 Lagrange 3차보간다항식으로 나타내고, 일 때 값을 구하시오.Lagrange 보간 다항식은 다항식을 구하는 방법 중 하나인데 방법은 다음과 같다.(n+1)개의 점을 지나는 n차 Lagrange 보간 다항식은여기서 이다.위 자료를 이용하여 이 방법으로 다항식을 구하면 다음과 같다.t=1일 때의 값을 구해야 하므로Lagrange 보간 다항식은 분모를 0을 만들지 않도록 항을 제외한 모든 항을 곱한 것과 분자에는 항을 제외한 모든 항을 곱한 것과 함수값을 곱하여 다항식을 구하는 방법이다. 계산 방법은 매우 간단하지만 Lagrange 보간 다항식은 위의 문제만 보아도 를 구하는 데에 24번의 곱하기, 3번의 더하기를 해야한다. 이 말은 즉 연산수가 많기 때문에 방법은 간단하지만 컴퓨터가 계산 하는데 시간이 많이 걸린다는 것이므로 다음 Newton의 보간 다항식과 비교해보도록 하자.b) 을 기준으로 하여 Newton의 3차 보간다항식을 구하고, 일 때, 값을 구하고, 그 결과를 (a)와 비교하시오.Newton은 (n+1)개의 데이터 점 을 지나는 n차 보간다항식을 다음과 같이 가정하였다.n개의 데이터 점 을 지나는 (n-1)차 보간다항식 와 다음 관계가 성립한다.에서 함수값은 이므로 이고, 위 식에 을 대입하고, 에 대해서 정리하면 다음과 같다.이를 이용하여 1차 보간다항식, 2차 보간다항식을 구하며 일반화 시키면 Newton의 n차 보간 다항식의 계수 은이고 따라서위 자료를 이용하여 이 방법으로 다항식을 구하면 다음과 같다.와 t=1을 대입하면언뜻 Newton의 보간 다항식을 구하는 식을 보면 매우 복잡해 보인다. 특히 과 같은 식은 연산수가 매우 많아 보이나 분자에 있는 은 그 전에 항 을 구할 때 이미 구했기 때문에 만 구해서 계산하면 되므로 연산수가 확 줄어들게 된다. 그러므로 Lagrange에 비해 구하고자 하는 값을 빠르게 구할 수 있다고 할 수 있다.그리고 결과값을 보게 되면 Lagrange법이나 Newton법이나 1.1424로 같다는 것을 볼 수 있다. 결국 자료에서 주어진 4개의 점을 지나는 다항식은 하나만 존재한다는 다항식의 유일성이 있기 때문에 당연히 t=1을 대입하면 같은 결과가 나온다.또한 보간다항식의 오차 식을 이용하기 위해선 참값을 구하기 위한 함수 가 주어져야 하는데 주어지지 않았으므로 이 식을 쓸 수 없어서 오차는 구하지 못하였다.문제 2번이산자료가 다음과 같이 주어졌다.*************6*************840차수가 1~4차인 4개의 Newton의 전진차분 보간다항식으로 를 계산하라. 단, 기준점은 정확도를 감안하여 택하라.위 자료의 전진차분표를 그리면 다음과 같다.22749244251-18562*************-3378570150-21-199*************70300-*************0270970142840기준점 에 대한 Newton의 전진차분 보간다항식은일 때, 다음과 같이 나타난다.위 자료를 이용하여 이 방법으로 문제를 1차~4차 보간다항식을 모두 찾아서 해결하면 다음과 같다.1차일 때, 기준점 , 구간간격 로 설정과 위의 전진 차분표를 이용하여2차일 때, 기준점 , 구간간격 로 설정과 위의 전진 차분표를 이용하여3차일 때, 기준점 , 구간간격 로 설정과 위의 전진 차분표를 이용하여4차일 때, 기준점 , 구간간격 로 설정과 위의 전진 차분표를 이용하여보다 정확도를 높이기 위하여 구하고자 하는 값과 가까운 점과 간격도 가능한 가장 작도록 하는 점을 기준점으로 설정하여 문제를 풀면 1차일 경우 4.5와 가깝고 간격이 가장 작도록 하게 4와 6에 관하여 전진차분법을 이용하여 구했고, 2,3,4차의 경우 기준점을 2로 설정하여 구한 값은 위와 같다. 만약 2,3,4차 모두 기준점을 4로 설정하여 4차 보간다항식을 구해서 값을 구하면 74.172가 나오게 되는데 이는 위에서 구한 61.502와 큰 차이가 있다. 따라서 주어진 데이터에 따라 기준점을 올바르게 설정하는 안목이 중요하다고 할 수 있다.문제 3번다음은 에 대한 이산자료이다. 물음에 답하라.01234500.50.40.30.23530.1923의 근사값을 를 이용하여 Newton의 2차 보간다항식으로 구하고, 오차를 구하라.Newton은 (n+1)개의 데이터 점 을 지나는 n차 보간다항식을 다음과 같이 가정하였다.n개의 데이터 점 을 지나는 (n-1)차 보간다항식 와 다음 관계가 성립한다.에서 함수값은 이므로 이고, 위 식에 을 대입하고, 에 대해서 정리하면 다음과 같다.이를 이용하여 1차 보간다항식, 2차 보간다항식을 구하며 일반화 시키면 Newton의 n차 보간 다항식의 계수 은이고 따라서위 자료를 이용하여 이 방법으로 2차 보간 다항식을 구하면 다음과 같다.이므로참값은 이므로 다항식과의 절대오차를 계산하면 다음과 같다.문제 2번에서 Newton의 보간 다항식으로 값을 구했으므로 이 방법에 대한 설명은 생략하고 위와 같은 결과가 나오게 된다. 하지만 이 문제에서는 주어진 함수 가 있기 때문에 참값에 대한 와 다항식을 이용하여 구한 에 대한 절대 오차를 구할 수 있다. 또한 책에서 나온 보간다항식의 오차 식 을 이용하여 오차를 추정할 수 있는데, 이 문제에서 이므로 오차는이고, 따라서 에서 오차를 계산하면이 때 이므로 오차의 범위는 다음과 같다.앞에서 구한 오차는 위의 오차 범위 안에 들어가지 않는다. 오차 범위의 최대값보다 훨씬 큰 값이 오차로 나오게 되었는데 이 이유는 Newton 보간다항식에서 분할차분을 이용할 때에 반올림을 하는 과정에서 마무리 오차가 크기 때문에 발생한 결과라고 볼 수 있다.역보간법을 이용하여 일 때, 의 값을 추정하고 참값과 비교하라. 단 이를 2회까지만 반복하라역보간법은 이산자료가 주어졌을 때, 종속변수 에 대한 독립변수 를 구하는 방법이다. 이를 풀 때 Newton의 보간다항식을 이용하도록 한다. 방법은 다음과 같다.두번째 항의 에 대해서 풀면이 식에서 를 포함하는 모든 항을 생략한 항을 더 고려하면 새로운 근사값 를 얻을 수 있다.이와 같은 방법으로 정해준 오차 안에 들어올 때까지 반복하여 값을 구하는 방법이다.따라서 위 문제를 풀기 위하여 전진 차분표를 그리면 다음과 같다.000.510.5-0.6-0.120.40-0.130.30.0353-0.64740.23530.0217-0.04350.1923이를 풀기 위하여 처음에 로 설정하면그 다음에 로 설정하면절대 오차를 구하기 위해 참값을 구하면 을 2차 방정식을 이용하여 답을 구하면 이다.( 이므로) 따라서 절대 오차 이다.역보간법은 수업시간에 생략했던 내용이었지만 교재를 참고하고 예제를 보니 이해가 가서 풀어보니 절대오차가 0.0005, 상대오차는 0.1466%정도 나오게 되어 상당히 정확한 방법이라고 할 수 있다. 하지만 처음에 로 설정하게 되면 정도로 값이 도출되기 때문에 오차가 더 커진다. 이로 보아 물론 위의 문제에서는 3 이상이라고 주어졌기 때문에 로 설정하는 것이 당연하지만 주어지지 않았더라면 초기값 설정하는 것 또한 오차를 줄이는 데에 매우 중요하다고 할 수 있다.문제 4번파이프의 마찰계수()와 레이놀즈 수(Re)와 상대 조도 (e/D)의 함수이다.아래의 데이터에서 연속적인 보간법을 사용하여 레이놀즈 수가 이고, 상대조도가 일 때, 마찰계수를 구하라.
문제 1번행렬식을 계산하는 코드를 작성하고, Crammer 공식을 이용한 방정식의 해를 구하라.행렬의 Determinant를 구하는 함수를 만들고 이에 따른 Crammer공식까지 적용하여 해를 구하는 코딩을 해 보았다.#include #include #define N 4double det(double *, int);void main(){double A[N][N] = { {28,-15,0,-10},{-2,43,-1,-40},{0,-5,13,-4},{-5,-150,-3,158} };double B[N][N] = { {30,-15,0,-10},{0,43,-1,-40},{0,-5,13,-4},{0,-150,-3,158} };double C[N][N] = { {28,30,0,-10},{-2,0,-1,-40},{0,0,13,-4},{-5,0,-3,158} };double D[N][N] = { {28,-15,30,-10},{-2,43,0,-40},{0,-5,0,-4},{-5,-150,0,158} };double E[N][N] = { {28,-15,0,30},{-2,43,-1,0},{0,-5,13,0},{-5,-150,-3,0} };int i,j;printf("A =n");for(i=0;i
문제 1번수조에 연결된 파이프를 흐르는 물의 속도 는 다음과 같다.여기서 중력가속도 는 이며, 파이프의 길이 은 5이며, 는 물의 깊이이고, 는 시간이다. 이 때 아래의 물음에 답하라.시간 가 3초일 때 물의 속도가 이기 위한 물의 깊이 를 구하고자 한다. 이 때 방정식의 근이 존재하는 구간을 증가탐색법으로 찾아라.대략적으로 해가 어느 구간에 있는지 알아보기 위하여 증가탐색법을 이용하였다. 증가탐색법을 이용하기 위하여 위 식을 으로 고쳐쓰었고 구간의 크기를 0.5로 잡아 가 증가하는 방향으로 0.1씩 이동하며 양 구간 끝을 , 라고 한다면 이 될 때까지 구간을 설정하는 방법으로 처음에는 이므로 양 끝점을 0.1씩 증가하면 이고 이와 같은 계산을 반복적으로 하는 코딩을 하면 다음과 같다.#include#includedouble fcn(double h);double incremental(double h ,double hMAX);double g=9.81, L=5, t=3, v=5;void main(){double hMAX,h;h=0.0;hMAX=0.5;while(1){if(incremental(h,hMAX)==2.0){break;}hMAX=hMAX+0.1h=h+0.1}}double fcn(double h){return (sqrt(2.*g*h)*tanh(t/(2.*L)*sqrt(2.*g*h))-v);}double incremental(double h ,double hMAX){double a,DELh=0.5;a=1.0 ;while(h=E){i++;f1=fcn(x1);fp1=fprime(x1);x2new=x1-f1/fp1;printf("현재 오차(백분율) : %f 시도 횟수: %.f회n", fabs((x2new-x2old)/x2new)*100,i);x2old=x2new;f2=fcn(x2new);printf("X1 = %f, X2 = %fnf1 = %f, f2 = %fnn",x1,x2new,f1,f2);x1=x2new;x2new=x1-f1/fp1;i++;printf("현재 오차(백분율) : %f 시도 횟수: %.f회n", fabs((x2new-x2old)/x2new)*100,i);printf("X1 = %f, X2 = %fnf1 = %f, f2 = %fnn",x1,x2new,f1,f2);}printf("해 : %f 최종 오차(백분율) : %fn",x2new,fabs((x2new-x2old)/x2new)*100);}double fcn(double x){return(4*pow(x,3)-exp(0.5*pow(x,2))-1);}double fprime(double x){return(12*pow(x,2)-x*exp(0.5*pow(x,2)));}double error(double x2new, double x2old){return(fabs((x2new-x2old)/x2new));}위 코딩의 결과는 다음과 같다.While문에서 Scarborough가 제안한 허용오차 한계를 이용하여 반복을 해야 하기 때문에 위에서 제시한 x2new와 x2old를 비교하였다. 이고, 최종 오차 이므로 그 때의 근인 이 결과값으로 나오게 되었다. Newton법의 단점은 인 지점에서 발산 가능성이 높지만 위 문제에서 제시된 함수에서는 근으로 14회만에 수렴하였다. 위 문제의 경우는 초기값이 주어졌으므로 대입하여 풀었지만 초기값을 자신이 설정해야 한다면 아무 점이나 찍게 되면 overshooting이 발생할 확률이 커지므로 엑셀이나 Matlab으로 그래프를 그리고 초기값을 설정해 주면 되겠다.가장 작은 양의 근을 구하기 위하여 초기값을 과 로 놓고 secant법으로 유효숫자 3자리까지 정확히 구하라.secant법은 식을 이용하여 를 구한 후 , 로 무조건 치환하여 수렴조건을 만족할 때까지 반복하는 방법이다. 위 문제의 경우를 보면 이므로 , 을 초기조건으로 잡고 를 구하면 이고 이런 방식으로 계속 반복하는 코딩을 하면 다음과 같다.#include#includedouble fcn(double x);double error(double x3new, double x3old);void main(){double x1,x2,x3new,x3old,E,f1,f2,f3,i=0;E=0.5*pow(10.,-3.);x1=0.3,x2=0.4,f1=fcn(x1),f2=fcn(x2),x3new=x2-(x2-x1)*f2/(f2-f1),f3=fcn(x3new),x3old=0;while(error(x3new,x3old)>=E){i++;f1=fcn(x1);f2=fcn(x2);x1=x2;x2=x3new;x3new=x2-(x2-x1)*f2/(f2-f1);f3=fcn(x3new);printf("현재 오차(백분율) : %f 시도 횟수: %.f회n", fabs((x3new-x3old)/x3new)*100,i);printf("x1=%.5f, x2=%.5f, x3=%.5fnf1=%.5f, f2=%.5f, f3=%.5fnn",x1,x2,x3new,f1,f2,f3);x3old=x3new;i++;f1=fcn(x1);f2=fcn(x2);x3new=x2-(x2-x1)*f2/(f2-f1);printf("현재 오차(백분율) : %f 시도 횟수: %.f회n", fabs((x3new-x3old)/x3new)*100,i);printf("x1=%.5f, x2=%.5f, x3=%.5fnf1=%.5f, f2=%.5f, f3=%.5fnn",x2,x3old,x3new,f1,f2,f3);}printf("해 : %f 최종 오차(백분율) : %fnn",x3new,fabs((x3new-x3old)/x3new)*100);}double fcn(double x){return(4*pow(x,3)-exp(0.5*pow(x,2))-1);}double error(double x3new, double x3old){return(fabs((x3new-x3old)/x3new));}위 코딩의 결과는 다음과 같다.While문에서 Scarborough가 제안한 허용오차 한계를 이용하여 반복을 해야 하기 때문에 위에서 제시한 x3new와 x3old를 비교하였다. 이고, 최종 오차 이므로 그 때의 근인 이 결과값으로 나오게 되었다. Newton법과 다르게 위 문제의 경우는 해가 다른 값이 나오게 되었다. 이 문제는 초기값이 주어졌으므로 대입하여 풀었지만 초기값을 자신이 설정해야 한다면 아무 점이나 찍게 되면 이 방법은 Newton법처럼 overshooting이 발생하지는 않지만 수렴 시간이 오래 걸릴 수 있으므로 엑셀이나 Matlab으로 그래프를 그리고 초기값을 설정해 주면 되겠다. 그 다음에 Newton법과 secant법의 결과가 다르게 나온 이유를 살펴보자.방정식의 그래프를 그려보고, (a)와 (b)에서 얻은 결과를 비교 및 고찰하라.함수를 엑셀로 그려보면 다음과 같다.(a)에서 Newton법으로 구했을 때에는 가 결과였고, (b)에서 secant법으로 구했을 때에는 가 답으로 나오게 되었다. Newton법과 secant법 모두 초기값을 마음대로 지정해 주어도 되지만 Newton법 같은 경우는 overshooting할 확률이 있으므로 그래프를 그린 후 초기값을 정해주는 것이 좋다. 또한 (a)에서는 초기값을 0.3으로 잡아서 구했지만 초기값을 0.7으로 정하면 (b)에서 구한 것과 같은 결과가 나오게 된다. 이를 통해 초기값을 어떻게 설정해주냐에 따라서 해를 여러 개 가진 함수의 경우 다른 근을 구하게 된다는 것을 알았다. 또한 Newton 법은 기울기 값이 거의 수평일 경우 수렴속도가 매우 늦어져 계산시간이 상당히 많이 걸리며 도함수가 복잡한 경우에는 사용하지 않는 것이 바람직하다. 그 이유는 특정 조건이 될 경우 수렴속도가 아주 느려지거나 접선의 기울기가 0으로 가까워 진다면 원치 않는 해를 얻을 가능성도 있기 때문이다.문제 4번어떤 제어계에서 블록 선도는 다음과 같다. 이 계의 전달함수는 아래와 같다., ,일 때 이 계의 특성방정식의 근들을 구하라.에 위 식들을 대입하면이므로 이라는 가정하에 방정식을 풀면 답이다. 결국 4차 방정식으로 여러가지 해가 존재하기 때문에 Bairstow법을 이용하여 문제를 해결해 보았다.이를 풀어보면 이므로 , 이고이 나오게 되었고 이 과 을 새로운 추정값 으로 놓고 계산하여 가 내가 설정한 오차 보다 작게 되면 그 값을 이용하여 를 인자로 사용하여 묶어내어 근의 공식을 이용하여 값을 계산하는 방법이다. 이러한 방법을 코딩을 해보았다.#include #include #define MAX 6#define n 4void main(){double error=pow(10.,-10);double r0,r0new;double s0,s0new;double b[MAX],c[MAX];double a[MAX]={1.,4.,2.,-3.,-1.};double r1,r1new;double s1,s1new;double a_1[MAX-2];int i, j;double a_2[MAX-4];double x[n];double con1,con2;r0new=-(double)a[1]/(double)a[0];s0new=-(double)a[2]/(double)a[0];for(;;){r0=r0new;s0=s0new;for(i=0;i