Материалы сайта
Это интересно
Лабораторные работы по вычислительной математике
Задание 1. Отделить корни уравнения графически и уточнить один из них методом хорд с точностью до 0,001. x=0.672275594. Количество шагов – 5. Задание 2. Отделить корни уравнения аналитически и уточнить один из них методом хорд с точностью до 0,001. x=-0.3219021. Количество шагов – 5. То же самое методом хорд: 1. x=0.67235827. Количество шагов – 3. 2. x=-0.3222222. Количество шагов – 3. Задание 1. Комбинированным методом хорд и касательных решить уравнение 3-ей степени, вычислив корни с точностью до 0,001. X1=-0.810246. Количество шагов – 2. X2= 1.168039. Количество шагов – 2. X3=2.641798. Количество шагов – 2. {определение корня методом хорд} uses crt; function fun(x:real):real;{заданная функция} Begin fun:=x+ln(x)/ln(10)-0.5; End; function fun2(x:real):real;{вторая производная заданной функции} Begin fun2:=-1/ln(10)/x/x; End; var a,b,e,e1,min,max,x,x1,n,f,f1:real; m:byte; BEGIN clrscr; writeln('Введите промежуток где возможен корень'); write('a=');readln(a); write('b=');readln(b); write('Введите точность E=');readln(e); writeln('Введите m и M'); write('m=');readln(min); write('M=');readln(max); if fun(a)*fun2(a)>0 then begin n:=a; x:=b; end else begin n:=b; x:=a; end; f:=fun(n); e1:=(e*min)/(max-min); m:=0; repeat x1:=x; f1:=fun(x1); x:=x1-(f1*(n-x1))/(f-f1); m:=m+1; until e1>=abs(x-x1); writeln('Корень =',x); writeln(m); END. {определение корня методом Ньютона} uses crt; function fun(x:real):real;{заданная функция} Begin fun:=x*x*x+3*x+1; End; function fun1(x:real):real;{первая производная} Begin fun1:=3*(x*x+1); End; function fun2(x:real):real;{вторая производная} Begin fun2:=6*x; End; var a,b,e,e1,min,max,x,x1,n:real; m:byte; BEGIN clrscr; writeln('Введите промежуток где возможен корень'); write('a=');readln(a); write('b=');readln(b); write('Введите точность E=');readln(e); writeln('Введите m и M'); write('m=');readln(min); write('M=');readln(max); if fun(a)*fun2(a)>0 then begin n:=b; x:=a; end else begin n:=a; x:=b; end; e1:=sqrt((2*min*e)/max); m:=0; repeat x1:=x; x:=x1-fun(x1)/fun1(x1); m:=m+1; until e1>=abs(x-x1); writeln('Корень =',x); writeln(m); END. {определение корня комбинированным методом} uses crt; function fun(x:real):real;{заданная функция} Begin fun:=x*x*x-3*x*x+2.5; End; function fun1(x:real):real;{первая производная} Begin fun1:=3*x*(x-2); End; function fun2(x:real):real;{вторая производная} Begin fun2:=6*x-6; End; procedure chord(n,x1:real;var x:real);{метод хорд} Begin x:=x1-(fun(x1)*(n-x1))/(fun(n)-fun(x1)); End; procedure nuton(x1:real;var x:real);{метод Ньютона} Begin x:=x1-fun(x1)/fun1(x1); End; var x,a,b,e,xx,x1,xn,n,n1:real; m:byte; BEGIN clrscr; writeln('Введите промежуток где возможен корень'); write('a=');readln(a); write('b=');readln(b); write('Введите точность E=');readln(e); if fun(a)*fun2(a)>0 then begin n:=a;x:=b; n1:=b;x1:=a; end else begin n:=b;x:=a; n1:=a;x1:=b; end; m:=0; repeat nuton(x1,xn); chord(xn,x,xx); x:=xx; x1:=xn; m:=m+1; until abs(xx-xn)<=e; writeln('Корень =',(xx+xn)/2); writeln(m); END. ----------------------- [pic] [pic] [pic] [pic] [pic] [pic] [pic] [pic] [pic] [pic]