Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Выдает Error 205. Что делать? Real менял на extended и double, не помогает.

Сергей Луцевич Ученик (191), на голосовании 12 лет назад
program NTK130;
uses crt;
const
g=9.81;
var
Nd,m,b,H,a,hr,fi,kr,c,fp,kpd,eps,e,c1,c2,alf,ro:real;
f1,f2,dFdV,dFdU,N1,N2,N3,l,F,V,U:real;
i:integer;
function N(V,U:real):real;
begin
N1:=b*H*V*c1*exp(ln(V*a*sin(alf)/U)*c2)/(1000*kpd);
N2:=ro*g*H*b*hr*U/(1000*kpd);
N3:=(c*c1*exp(ln(V*a*sin(alf)/U)*c2)*b*H*V/sqrt(sqr(U)+sqr(V))+m*g*fp)*V/(1000*(1-eps)*kpd);
N:=Nd-N1-N2-N3;
end;

function Q(V,U:real):real;
begin
Q:=b*H*V-fi*b*hr*U/kr;
end;

function dNdV(V,U:real):real;
begin
N1:=b*H*V*a*sin(alf)*c1*c2*exp(ln(V*a*sin(alf)/U)*(c2-1))/(1000*kpd*U)+b*H*c1*exp(ln(V*a*sin(alf)/U)*c2)/(1000*kpd);
N3:=(c*c2*c1*exp(ln(V*a*sin(alf)/U)*(c2-1))*a*sin(alf)*b*H*V/(U*sqrt(sqr(U)+sqr(V)))+c*c1*exp(ln(V*a*sin(alf)/U)*c2)*(b*
H*sqrt(sqr(U)+sqr(V))+b*H*V*V*exp(ln(sqr(U)+sqr(V))*(-1.5)))/(sqr(U)+sqr(V)))*V/(1000*(1-eps)*kpd)+(c*c1*exp(ln(V*a*
sin(alf)/U)*c2)*b*H*V/sqrt(sqr(U)+sqr(V))+m*g*fp)/(1000*(1-eps)*kpd);
dNdV:=N1+N3;
end;

function dNdU(V,U:real):real;
begin
N1:=b*H*V*c2*c1*exp(ln(V*a*sin(alf)/U)*(c2-1))*(-V*a*sin(alf)/sqr(U))/(1000*kpd);
N2:=ro*g*H*b*fi*hr/(kr*1000*kpd);
N3:=(c*c2*c1*exp(ln(V*a*sin(alf)/U)*(c2-1))*(-V*a*sin(alf)/sqr(U))*b*H*V/sqrt(sqr(U)+sqr(V))+c*c1*exp(ln(V*a*sin(alf)/U)*
c2)*b*H*V*exp(ln(sqr(U)+sqr(V))*(-1.5))*U/(sqr(U)+sqr(V)))*V/(1000*(1-eps)*kpd);
dNdU:=N1+N2+N3;
end;

function dQdV(V,U:real):real;
begin
dQdV:=b*H;
end;

function dQdU(V,U:real):real;
begin
dQdU:=-fi*b*hr/kr;
end;

BEGIN
clrscr;
writeln('Введите исходные значения:');
write('Мощность двигателя- ');readln(Nd);
write('Масса машины вместе с рабочим органом-');readln(m);
write('Ширина захвата- ');readln(b);
write('Глубина экскавирования- ');readln(H);
write('Шаг резцов-');readln(a);
write('Плотность породы-');readln(ro);
write('Угол наклона-');readln(alf);
write('Высота резца-');readln(hr);
write('Параметр 1 формулы-');readln(c1);
write('Параметр 2 формулы-');readln(c2);
write('Коэффициент заполнения рабочего пространства-');readln(fi);
write('Коэффициент разрыхления-');readln(kr);
write('Коэффициент сопротивления резанию-');readln(c);
write('Коэффициент сопротивления движению-');readln(fp);
write('КПД при передвижении-');readln(kpd);
write('Коэффициент буксования-');readln(eps);
write('Точность вычисления-');readln(e);
writeln;
write('Начальная скорость машины Vо=');readln(V);
write('Начальная скорость органа Uо=');readln(U);
i:=0;
repeat
i:=i+1;
f1:=N(V,U);f2:=Q(V,U);
F:=sqr(f1)+sqr(f2);
dFdV:=2*f1*dNdV(V,U)+2*f2*dQdV(V,U);
dFdU:=2*f1*dNdU(V,U)+2*f2*dQdU(V,U);
l:=F/(sqr(dFdV)+sqr(dFdU));
V:=V-l*dFdV;
U:=U-l*dFdU;
until (Abs(F)
Дополнен 12 лет назад
конец программы:

until (Abs(F)
Голосование за лучший ответ
Ringo Yuki Мудрец (17933) 12 лет назад
раз большие типы не меняют ситуацию значит то что вы написали разошлось. либо используете неустойчивый метод (или такие параметры при которых он становится неустойчивым) либо ошиблись в записи формул. сделайте вывод по итерациям и посмотрите что происходит

п/с/ кто знает что вы тут используете но на всякий случай: метод итераций работает ТОЛЬКО на сжимающих отображениях
Похожие вопросы