Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

11.09.2009, 19:35
|
|
Участник форума
Регистрация: 15.08.2008
Сообщений: 167
Провел на форуме: 15123588
Репутация:
299
|
|
Сообщение от =Zeus=
Мог бы и потрудится перевести, форум-то русский!
Форум - не русский, а русскоязычный. Не путайте пожалуйста.
|
|
|

12.09.2009, 12:03
|
|
Постоянный
Регистрация: 02.03.2008
Сообщений: 893
Провел на форуме: 5365841
Репутация:
712
|
|
Есть ли в Pascal'e функция для определения отрезка ?
Мне нужно проверить число, чтобы оно не входило в отрезок [0.5-2]
|
|
|

12.09.2009, 12:14
|
|
Участник форума
Регистрация: 17.08.2008
Сообщений: 212
Провел на форуме: 1063099
Репутация:
186
|
|
Помогите пожалуйста! мне нужно выполнить лабораторку, она маленькая. и сдать через 2 часа. помогите пожалуйста!!!!! на с++
Задание:
Решением дифференциального уравнения является неизвестная функция x(t). Необходимо, используя численные методы решения ДУ, найти эту функцию. Полученное численное решение необходимо сопоставить с точным, чтобы исследовать зависимость величины локальной ошибки от величины шага интегрирования.
1.Написать программу решения ДУ с помощью прямой (явной) формулы Эйлера.
2.Написать программу решения ДУ с помощью обратной (неявной) формулы Эйлера.
3.Написать программу решения ДУ с помощью формулы трапеций.
4.Сопоставить результаты численного и точного решений ДУ на экране монитора.
Дифференциальное уравнение (ДУ) - x'(t)=x(t)+t2
Решение ДУ - x(t) =6exp(t-1)- t2-2t-2
Последний раз редактировалось kyoko; 12.09.2009 в 12:26..
|
|
|

12.09.2009, 12:32
|
|
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме: 1313455
Репутация:
249
|
|
Есть ли в Pascal'e функция для определения отрезка ?
Мне нужно проверить число, чтобы оно не входило в отрезок [0.5-2]
Все очень просто If (твое число < 0.5) or (твое число > 2) then Пишеш тут что будет выполнятся если число не входит в данный отрезок.
По поводу ДУ, могу лишь предоставить код своей проги которая считала их методом:
1) Модифицированный метод Эйлера
2) Метод Рунге-Кутта
Описанные выше методы мне не знакомы, возможно это одно и тоже просто разными словами?
Код:
program TASK5;
uses graph;
var
mas:array[1..2]of real;
x0,y0,y1,y2,y3,h,t,y4,y5,x,y,xk,yk,ye,yr,ya,k1,k2,k3,k4,h1,k11,k21,k31,k41,ye1,yr1:real;
i,gd,gm,j,n,z:integer;
function xm(x:real):integer;
begin
xm:=round(320+960*x);
end;
function ym(y:real):integer;
begin
ym:=round(240-720*x);
end;
function f(a:real):real;
begin
f:=exp(a)+1;
end;
procedure linovka;
var x,y:integer;
begin
setcolor(15);{color is white}
x:=5;y:=0;
setlinestyle(2,6,1);
repeat {draw vertical line}
line(x,0,x,GetMaxY);
x:=x+35;
until x>GetMaxX;
repeat {draw horizontal line}
line(0,y,GetMaxX,y);
y:=y+30;
until y>GetMaxY;
end;
procedure DrawAxisA;
begin
setcolor(15);{color is white}
setlinestyle(0,3,3);{line style,border widht,Thickness of line}
{draw axis of ordinate}
line(round(GetMaxX/2),0,round(GetMaxX/2),GetMaxY);
line(round(GetMaxX/2),0,round(GetMaxX/2-5),10);
line(round(GetMaxX/2),0,round(GetMaxX/2+5),10);
{draw axis of abscis}
line(round(GetMaxX),round(GetMaxY /2),GetMaxX-10,round(GetMaxY/2-5));
line(round(GetMaxX),round(GetMaxY /2),GetMaxX-10,round(GetMaxY/2+5));
line(0,round(GetMaxY/2),GetMaxX,round(GetMaxY/2));
end;
begin
mas[1]:=0.01;
mas[2]:=0.001;
x0:=0;
xk:=10;
y0:=exp(1)+1;
writeln (' x 1 2 a ');
for j:=1 to 2 do
begin
x:=x0;
ye:=y0;
yr:=y0;
n:=round((xk-x0)/(mas[j]));
for i:=1 to n do
begin
ye:=ye+mas[j]*f(x+mas[j]/2);
k1:=mas[j]*f(x);
k2:=mas[j]*f(x+mas[j]/2);
k3:=mas[j]*f(x+mas[j]/2);
k4:=mas[j]*f(x+mas[j]);
yr:=yr+(k1+2*k2+2*k3+k4)/6;
ya:=exp(x)+x;
x:=x+mas[j];
if (j=1) and (i mod 100 = 0) then
writeln ('step = ', mas[j]:5:3,' ',x:8:5,' ',ye/10000:8:5,' ', yr/10000:8:5,' ', ya/10000:8:5);
if (j=2)and(i mod 1000= 0) then
writeln ('step = ', mas[j]:5:3,' ',x:8:5,' ',ye/10000:8:5,' ', yr/10000:8:5,' ', ya/10000:8:5);
end;
end;
readln;
gd:=detect;
initgraph(gd,gm,'');
linovka;
DrawAxisA;
setlinestyle(0,3,3);{line style,border widht,Thickness of line}
x0:=0;
xk:=10;
y0:=exp(1)+1;
x:=x0;
ye:=y0;
yr:=y0;
ye1:=y0;
yr1:=y0;
for j:=1 to 5000 do
begin
t:=j/500;
x:=t/50;
h:=0.01;
h1:=0.001;
ye:=ye+h*f(x+h/2);
k1:=h*f(x);
k2:=h*f(x+h/2);
k3:=h*f(x+h/2);
k4:=h*f(x+h);
yr:=yr+(k1+2*k2+2*k3+k4)/6;
ya:=exp(x)+x;
x:=x+h;
ye1:=ye1+h1*f(x+h1/2);
k11:=h1*f(x);
k21:=h1*f(x+h1/2);
k31:=h1*f(x+h1/2);
k41:=h1*f(x+h1);
yr1:=yr1+(k11+2*k21+2*k31+k41)/6;
putpixel(xm(x),ym(ye),red);
putpixel(xm(x),ym(yr),green);
putpixel(xm(x),ym(ye1),yellow);
putpixel(xm(x),ym(yr1),blue);
putpixel(xm(x),ym(ya),brown);
end;
readln;
end.
Последний раз редактировалось Dosia; 12.09.2009 в 13:52..
|
|
|

12.09.2009, 12:53
|
|
Участник форума
Регистрация: 17.08.2008
Сообщений: 212
Провел на форуме: 1063099
Репутация:
186
|
|
Dosia мне на с++ (((
|
|
|

12.09.2009, 13:19
|
|
Постоянный
Регистрация: 02.03.2008
Сообщений: 893
Провел на форуме: 5365841
Репутация:
712
|
|
Составить структурированнуб программу преобразования заданных вещественных хначений Х и Т по правилу: - если Х < 0, то X и Т заменить модулем
- если X < 0 или T < 0, то Х и Т увеличить на 0.5
- если Х > T и Т > 0 и ни одно из них не принадлежит отрезку [0.5-2], то Х и Т * 10
в противном случае Х и Т оставить без изменеий
Код:
program z1n17;
uses crt;
var
x,t: real;
begin
clrscr;
writeln ('Enter X,T');
read(x,t);
if (x < 0) and (t < 0) then { ШАГ 1 }
begin
x:=abs(x);
t:=abs(t);
clrscr;
writeln('Result:');
writeln('|X|=', x:5:3, ' and |T|=', t:5:3);
end
else
if (x < 0) or (t < 0) then { ШАГ 2 }
begin
x:=x+0.5;
t:=t+0.5;
clrscr;
writeln('Result:');
writeln('X+0.5=', x:5:3, ' and T+0.5=', t:5:3);
end
else
if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2) then { ШАГ 3 }
begin
x:=x*10;
t:=t*10;
clrscr;
writeln('Result:');
writeln('X*10=', x:5:3, ' and T*10=', t:5:3);
end
else
begin
clrscr;
writeln('Result:');
writeln('X=', x:5:3, ' and T=', t:5:3);
writeln;
writeln('Without changes');
end;
read(x);
end.
Вот у меня проблема на шаге 3:
if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2)
Это условие ни в какую не хочет работать
P.S. После третьего условия у меня действия "смещены" влево, т.к. в паскале повидимому ограничение на количество символов в строке.
Это как-то можно обойти, чтобы код выглядил "красиво" ?) (но это не принципиально, главная проблема с условием)
P.S.S. первая прога на паскале)
|
|
|

12.09.2009, 13:21
|
|
Участник форума
Регистрация: 17.08.2008
Сообщений: 212
Провел на форуме: 1063099
Репутация:
186
|
|
Помогите написать программу решения системы нелинейных уравнений методом Ньютона- Рафсона на с++
|
|
|

12.09.2009, 13:33
|
|
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме: 1313455
Репутация:
249
|
|
Код:
program z1n17;
uses crt;
var
x,t: real;
begin
clrscr;
writeln ('Enter X,T');
read(x,t);
{ ШАГ 1 }
if (x < 0) and (t < 0) then
begin
x:=abs(x);
t:=abs(t);
clrscr;
writeln('Result:');
writeln('|X|=', x:5:3, ' and |T|=', t:5:3);
readkey;
exit;
end;
{ ШАГ 2 }
if (x < 0) or (t < 0) then
begin
x:=x+0.5;
t:=t+0.5;
clrscr;
writeln('Result:');
writeln('X+0.5=', x:5:3, ' and T+0.5=', t:5:3);
readkey;
exit;
end;
{ ШАГ 3 }
{Проверяем условия по порядку}
if (x>t) and (t>0) then
if ((x<0.5) or (x>2)) and ((t<0.5) or (t>2)) then
begin
x:=x*10;
t:=t*10;
clrscr;
writeln('Result:');
writeln('X*10=', x:5:3, ' and T*10=', t:5:3);
readkey;
exit;
end;
clrscr;
writeln('Result:');
writeln('X=', x:5:3, ' and T=', t:5:3);
writeln;
writeln('Without changes');
readkey;
end.
мну ушел. Вроде все так, все должно работать.
если Х < 0, то X и Т заменить модулем. Если так то заменить первое условие на if (x < 0). Но тогда второе не будет выполнятся никогда. Так что ты скорее всего ошибся, когда написал нам условие, а в коде сделал все верно.
Последний раз редактировалось Dosia; 12.09.2009 в 13:51..
|
|
|

12.09.2009, 14:08
|
|
Постоянный
Регистрация: 02.03.2008
Сообщений: 893
Провел на форуме: 5365841
Репутация:
712
|
|
Dosia, спасибо за помощь
Сделал так:
if (x<0) and (t<0) and ((x<0.5) or (x>2)) and ((t<0.5) or (t>2))
|
|
|

12.09.2009, 18:01
|
|
Banned
Регистрация: 12.08.2009
Сообщений: 2
Провел на форуме: 43821
Репутация:
1
|
|
Ребята, помогите пожалуйста решить задачу ..
Даны действительные x, e (x!=0, e>0) и целые k, n числа. Вычислить
с точностью е бесконечную сумму и указать количество учтенных слагаемых.
Считать, что требуемая точность достигнута, если вычеслена сумма нескольких
первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем е, -
это и все последующие слагаемые можно уже не учитывать. Проверить
правильность вычислений на тестовых примерах, используя возможности
отладчика, проследить изменение значений слагаемых суммы ряда, выполнив
отладку цикла. Определить диапазон возможных значений аргумента.*/
P.S. если можно, то комментарии в проге оставьте, чтоб я разбирался
сам пример - http://slil.ru/27976391
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|