0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 28
1

Переполнение плавающей точкой. Где ошибка в программе?

11.12.2015, 17:13. Показов 1661. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Program U2ITELb;
Uses graph, crt;
Const
  w1:real=1e8;
  w:real=1e7;
  l:real=0.2;
  w0:real=2e-8;{sobsvetna chastota kolebanyu}
  A1:real=3;
  pt:real=2.5e-8;
  tm:real=36e-6;
  dt:real=0.5e-8;
  dtau:real=0.2e-8;
  m:real=0.3;
Var
  t,tau,y:real;
  z,g:integer;
  driver,mode:integer;
 
function U1(t:real):real;
begin
U1:=A1*(1+m*sin(w*t))*sin(w1*t);
end;
 
function h(t:real):real;
begin
h:=(1-1*exp(-t/pt))*(cos(w0*t)+l*sin(w0*t));
end;
 
Begin
driver:=detect;
initgraph(driver,mode,' ');
line(10,10,10,470);
line(10,240,630,240);
moveto(10,240);
t:=0;tau:=0;
repeat
   y:=0;
   if t>(3*tau) then tau:=t-(3*tau) else tau:=0;
        repeat
        y:=y+abs(U1(tau))*h(t-tau)*dtau;
        tau:=tau+dtau;
        until tau>t;
   t:=t+dt;
   z:=10+round(600/tm*t);
   g:=240-round(100*y);
   lineto(z,g);
until t>tm;
readln;
END.
Миниатюры
Переполнение плавающей точкой. Где ошибка в программе?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2015, 17:13
Ответы с готовыми решениями:

Подскажите где ошибка. Выдаёт арифметическое переполнение?
program z1; USES crt; const N= 10; var x: array of integer; i: integer; y: array of integer; begin ClrScr; randomize; for...

Вычислить сумму ряда (Ошибка, переполнение. Где?)
Вычисление суммы ряда. Program fuuuuu; Const e=0.0001; Var a,s,f,x:real; k:integer; Function F1(n:real;m:byte):real; Var...

Числа с плавающей точкой
Нужно разработать программу сложения, вычитания чисел с плавающей запятой. Формат числа с плавающей запятой задается при запуске программы....

10
Почетный модератор
 Аватар для Puporev
64307 / 47604 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
11.12.2015, 17:39 2
205 Floating point overflow (Переполнение при операции с плавающей запятой).
В результате выполнения операции с плавающей запятой получено слишком большое вещественное число.
У меня ошибку не выдает, но рисует оси и зависает...
Даже при смене real на extended.
Нужно смотреть задание.
0
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 28
11.12.2015, 18:30  [ТС] 3
Вообще задание вот. Но там я передаточную функцию W(p) преобразовал в импульсную характеристику h(t). И дальше начал писать прогу..В чём-то я ошибся. Никак не могу понять в чём и как эту ошибку исправить.
Миниатюры
Переполнение плавающей точкой. Где ошибка в программе?   Переполнение плавающей точкой. Где ошибка в программе?  
0
Почетный модератор
 Аватар для Puporev
64307 / 47604 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
11.12.2015, 18:56 4
Да, в этой мути видимо Вам самому придется разбираться...
0
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 28
11.12.2015, 20:38  [ТС] 5
Очень печально..Помощь бы была очень необходима. Может, хоть кто-то посоветует, что сделать с ошибкой "С плавающей точкой".
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8584 / 4431 / 1657
Регистрация: 01.02.2015
Сообщений: 13,748
Записей в блоге: 9
11.12.2015, 21:48 6
Попробуйте вместо построения графика вывести значения на экран.

Могу ошибаться. Кажется, что идёт вычисление свёртки. Но там нужно учитывать, что при t<0 значения функций равны 0. И что-то наворочено в строке 38 с вычислением tau.

И, наверное, стоит привести математику, используемую в программе - у меня нет методички, а ВУЗ я закончил десятилетия назад.
0
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 28
11.12.2015, 22:57  [ТС] 7
Да, Вы абсолютно правы.Идёт вычисление интеграла Дюамеля (свётрки). Как правильно учесть момент функции ноль? Что необходимо исправить? Или дописать?

Добавлено через 4 минуты
И почему высвечиваются пустые оси? Как получить сигнал на выходе?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8584 / 4431 / 1657
Регистрация: 01.02.2015
Сообщений: 13,748
Записей в блоге: 9
11.12.2015, 23:17 8
Нужно отладить вычисления. И только потом строить график.

Pascal
1
2
3
4
5
6
7
  function h(t: real): real;
  begin
    if t >= 0 then
      h := (1 - 1 * exp(-t / pt)) * (cos(w0 * t) + l * sin(w0 * t))
    else
      h := 0;
  end;
0
13.12.2015, 21:45  [ТС] 9

Не по теме:

Я разобрался в том, как решать данное задание. Но возникла другая проблема. Я написал программу решения диф.уравнение методом рунге-кутта. Вот здесь я создал тему данного вопроса Решение диф.уравнение методом Рунге-Кутта и построение графика Теперь возникла проблема там.

0
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 28
17.12.2015, 19:37  [ТС] 10
ФедосеевПавел, Добро времени суток! Могли бы помочь найти ошибку в тексте программы? Здесь решение диф уравнение и вывод графика на экран. Но рисует пустые оси..
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
uses graph;
const
w1:real=1e+8; {sobstvenni kolebaniy}
tm:real=10e-9; {vremya modelirovaniya}
dt:real=1e-9; {shag modelirovaniya}
n:integer=2; {kol-vo uravneniy}
dk:real=0.0001; {masshtabnyi koef-t}
ti:real=1e-8;{metka}
u1:real=1e+7;
T1:real=0.5e-8;
T2:real=0.2e-8;
type
vec=array[1..2] of real;
matr=array[1..4,1..2] of real;
proc1=procedure(n:integer;var y,dy:vec);
proc2=procedure(n:integer;dt:real;var y,dy:vec;var ier:boolean);
var
i,j,driver,mode,x,z:integer;
ier:boolean;
y,dy:vec;
w2,d,t,f:real;
procedure fct(n:integer;var y,dy:vec) ;far;
begin
f:=sqr(3*(1+0.7*sin(u1*t))*(sin(w1*t)));
dy[1]:=y[2];
dy[2]:=(f-y[1]-y[2]*T2)/(T1*T1);
end;
procedure out(n:integer;dt:real;var y,dy:vec;var ier:boolean); far;
begin
t:=t+dt; {shag vremeny}
if t>tm then ier:=true;
x:=10+round(620/tm*t);
z:=240-round(dk*y[1]);
lineto(x,z);
end;
procedure rk4(n:integer;ier:boolean;h:real;fct:proc1;out:proc2;var y,dy:vec);
var
c:vec;
k:matr;
i,j:integer;
begin
repeat
c:=y;
for i:=1 to 4 do begin
fct (n,y,dy);
for j:=1 to n do begin
k[i,j]:=dy[j]*h;
case i of
3: y[j]:=c[j]+k[i,j];
4: y[j]:=c[j]+(k[1,j]+2*k[2,j]+2*k[3,j]+k[4,j])/6
else y[j]:=c[j]+0.5*k[i,j];
end;end;end;
out (n,h,y,dy,ier);
until ier;
end;
begin
ier:=false;
t:=0; y[1]:=0; y[2]:=0; f:=1/dt;
driver:=detect;
initgraph (driver,mode,'');
line(10,10,10,480);
line(10,240,640,240);
moveto(10,240);
for i:=0 to 10 do begin
x:=10+i*round(620/tm*ti);
line(x,(240-10),x,(240+10));
for j:=1 to 9 do begin
line(x+round(620/tm*ti*0.1*j),(240-5),x+round(620/tm*0.1*ti*j),(240+5));
end;end;
rk4(n,ier,dt,fct,out,y,dy);
readln;
end.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8584 / 4431 / 1657
Регистрация: 01.02.2015
Сообщений: 13,748
Записей в блоге: 9
17.12.2015, 21:49 11
Вы совершаете ошибку новичков - пытаетесь сразу написать сложную программу типа Word. А нужно разделить на независимые этапы - отладить решение дифура, отладить построение графика по данным из массива.
Начните с решения дифура.

Кстати, в той же теме топикстартер после решения дифура строил график не на Pascal, а специальной утилитой gnuplot и получал результат в виде картинки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2015, 21:49
Помогаю со студенческими работами здесь

Сложение чисел с плавающей точкой
Помогите сложить числа А=73.9 и В=76.3 в формате с плавающей точкой и выполнить проверку.

где ошибка в программе???
uses crt; var i:byte; begin clrscr; goToXY((lo(windMax)-15) div 2,hi(windMax) div 2); for i:=1 to...

Проверка симметричности двоичного представления числа, где ошибка в программе?
var a, b,i,m,n,d,j : integer; s:string; log:boolean; begin reset(input,'input.txt'); rewrite(output,'output.txt'); ...

Целое число вывести, как число с плавающей точкой
Вот код. Нужно вывести значение переменной х не более чем 5 символами. Т.е. надо округлить его до первых 2 цифр и записать, как число с...

Где ошибка в программе? Исправьте, пожалуйста! Программа выдает неверный ответ!
Составьте программу, определяющую чаще всего встречающуюся компоненту файла f. var f: file of char; c: char; a: array ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
Корутины в Unity и производительно­сть WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
Криптография в PHP
Jason-Webb 20.03.2025
PHP предоставляет много криптографических возможностей: от встроенных функций хеширования до полноценных библиотек шифрования — арсенал средств довольно обширен. Но всё это бесполезно без понимания. . .
Lineedge (Semi-Alpha) 0.75@20: Что мы потеряли
Etyuhibosecyu 20.03.2025
С каждым новым стандартом Lineedge обретает новые возможности — это ясно, как божий день. Однако есть и другая сторона — избавление от устаревших и проблемных элементов. Обычно удаление. . .
Реализация перечислений в Go
golander 19.03.2025
Если вы перешли на Go с других языков программирования (как я), таких как C#, Java или Python, вы наверняка заметили, что Go не имеет встроенной поддержки перечислений (enumerations). Это может стать. . .
Шаблон API Gateway в микросервисной архитектуре
MatrixArchitect 19.03.2025
API Gateway — один из основных компонентов микросервисной архитектуры. Фактически, API Gateway представляет собой сервис, который располагается между клиентскими приложениями и бэкенд-микросервисами,. . .
C++26: Что мы потеряли
bytestream 19.03.2025
С каждым новым стандартом C++ обретает новые возможности — это ясно, как божий день. Однако есть и другая сторона — избавление от устаревших и проблемных элементов. Обычно удаление функциональности. . .
Async/await в C#: Асинхронное программировани­е в действии
UnmanagedCoder 19.03.2025
Разработка современных приложений немыслима без понимания асинхронного программирования. Если вы когда-либо создавали приложение, которое взаимодействует с внешними ресурсами — будь то работа с. . .
Сопоставление с образцом (Pattern Matching) в Python: Списки и словари
py-thonny 19.03.2025
Программисты любят, когда код говорит сам за себя. Представьте, что вы можете просмотреть структуру данных и мгновенно понять, что с ней делать — без сложных условий и вложенных проверок. Именно эту. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru