тяжёлая математическая задача

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: тяжёлая математическая задача

Re: тяжёлая математическая задача

Uphiander » 08 ноя 2007, 09:12

Если быть точным - равномерно распределенные на некотором отрезке. Так как в Паскале Random выдает на интервале 0..1, то растащить их по интервалу можно по формуле постом выше.
Если нужен другой закон распределения - нужно преобразовывать по формулам этих законов.

Re: тяжёлая математическая задача

Duncon » 25 окт 2007, 13:09

псевдослучайные чтоб быть точным :)

Re: тяжёлая математическая задача

somewhere » 25 окт 2007, 12:44

a[x] := RangeLow + (RangeHigh - RangeLow)*Random
например
a[x] := 5 + 15*random
выберет случайные действительные числа от 5 до 20

Re: тяжёлая математическая задача

somebody_now » 25 окт 2007, 12:35

ещё вопрос: заполняю обычный одномерный массив обычными случайными числами.
если целыми то всё норм, если реаловыми, то выдаёт, как я понял на месте отрицательных, от 65532 до 65535 и получается у меня массив, например такой:
65532.0000
65535.0000
2.0000
65533.0000
5.0000
65532.0000
65534.0000
65535.0000
5.0000
4.0000
мало того что не заполняется дробная часть так ещё и какие-то совсем не к месту эти десятки тысяч.. что делать?!

Re: тяжёлая математическая задача

somewhere » 23 окт 2007, 14:20

&quot писал(а): for i:=1 to m do {вот цикл к-рый имхо можно убрать}
for k:=1 to r do {всё равно на суть проги не влияет,}
c[i,k]:=0; {а что ещё и можно ли не догадываюсь}
По-сути здесь обнуление матрицы, тогда можно без форов вообще:

Код: Выделить всё

FillChar(c, sizeof(c), 0);

Re: тяжёлая математическая задача

somebody_now » 23 окт 2007, 14:12

Нужно изменить структуру алгоритма так, чтобы количество используемых операторов цикла в программе было минимальным. Можно ли добиться уменьшения количества форов по сравнению с исходным вариантом?

Код: Выделить всё

program proizv_matric;
var n,m,r:integer;
i,j,k:integer;
a,b,c:array[1..15,1..15] of real;
begin
write('zadaite pr-ie dvuh matric');
readln(m,n,r);
write('zadaite A postrochno');
for i:=1 to m do
    for j:=1 to n do
    read(a[i,j]);
write('zadaite B postrochno');
for j:=1 to n do
    for k:=1 to r do
    read(b[j,k]);
  for i:=1 to m do  {вот цикл к-рый имхо можно убрать}
  for k:=1 to r do   {всё равно на суть проги не влияет,}
  c[i,k]:=0;           {а что ещё и можно ли не догадываюсь}
for i:=1 to m do
for k:=1 to r do
begin
     for j:=1 to n do
     c[i,k]:=c[i,k]+a[i,j]*b[j,k];
     {writeln('c[',i:2,',',k:2,']=',c[i,k]:7:3);}
     end;
for i:=1 to n do
begin
    for k:=1 to r do
    begin
    write('c[',i:2,',',k:2,']=',c[i,k]:7:3);
    end;
writeln;
end;
     readln;
     readln;
     end.
Собсно коммент в проге

Re: тяжёлая математическая задача

somebody_now » 19 окт 2007, 16:28

Serge_Bliznykov, somewhere, попробовал, не помогло(
впрочем это уже не так важно, ибо работа отправлена, а делать её надо было через рекуррентную ф-лу с чем я не знаком вобщемто, точнее не могу её составить для этого конкретного ряда..есть конечно время ещё переделать но шансов мало на то что смогу её составить(

Re: тяжёлая математическая задача

somewhere » 15 окт 2007, 13:38

Попробуй включить 80287 Numeric processing и 80286 Instructions

Re: тяжёлая математическая задача

Serge_Bliznykov » 14 окт 2007, 19:03

похоже, что настройки тут не при чём... ещё раз, попробуйте создать новый файл DDPROJ1.PAS,
вставить туда нижеприведённый код и выполнить..

Код: Выделить всё

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
{$M 16384,0,655360}
program ddProj1;

var
 An, S, E: Real;
 N, R, Z, B, I: LongInt;

begin
 E:=0.001;
 N:=1;
 S:=0;
 repeat
   R:=1;
  for I:=1 to N do
   R:=R*2*I;
   Z:=1;
   for I:=1 to N do
   Z:=Z*N;
  B:=1;
   for I:=1 to Z do
    B:=B*I;
  An:=R/B; 
  S:=S+An; 
  N:=N+1;
 until An<E;
 writeln('Summa ryada S=', S:3:3);
 writeln('Kol-vo iteratsii: ', N-1);
 readln;
end.
TurboPascal 7.0 (впрочем и на Delphi 5.0)
у меня эта программа выдаёт:
C:\TP\PAS>DDPROJ1.EXE
Summa ryada S=2.333
Kol-vo iteratsii: 3

Re: тяжёлая математическая задача

somebody_now » 12 окт 2007, 18:36

Code generation:
[] Force for calls
[] Overlays allowed
[X] Word align data
[] 286 instructions
Runtime errors:
[] Range checking
[X] Stack checking
[X] I/O checking
[] Overflow checking
Debugging:
[X] Debug information
[X] Local Symbols
Syntax options:
[X] Strict var-strings
[] Complete boolean eval
[X] Extended syntax
[] Typed @ operator
[] Open parameters
Numeric processing:
[] 8087/80287
[X] Emulation
всё вроде...

Вернуться к началу