Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal->VBA] Преобразование програмного КОДА, Помогите перевести код 
:(
    Опции темы
Pitbul
  Дата 22.5.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



Добрый день, помогите пожалуйста перевести програму с ПАСКАЛЯ в VBA. В этой проге реализован метод ИТЕРАЦИЙ для СЛАУ, в эксэле надо, что бы этот макрос работал аналогично. Спасибо smile 

Program metod_iteracia;
uses crt;
const
   maxn=10;
type
   matrix=array [1..maxn,1..maxn] of real;
   vector=array [1..maxn] of real;
var
   a:matrix;
   b,x:vector;
   i,n,k:integer;

procedure DiaG(a:matrix; b:vector; var x:vector);
{процедура пошуку початкового наближення}
var
   i:integer;
begin

   for i:=1 to n do
      x[i]:=b[i]/abs(a[i,i]);
end;

procedure SymmA(a:matrix; b:vector; var t:vector);
{процедура пошуку суми елементів рівняння }
var
   i,j:integer;
begin
   for i:=1 to n do  begin
      t[i]:=0;
      for j:=1 to n do
     t[i]:=t[i]+(a[i,j]*b[j]);
   end;
end;

procedure MinusveC(a:vector; b:vector; var t:vector);
{процедура пошуку різниці вектора і знайденого значення}
var
   i:integer;

begin
   for i:=1 to n do
      t[i]:=a[i]-b[i]
end;

procedure IteraciA(a:matrix; b:vector; var y:vector);
{процедура розрахунків методом ітерації}
const
   m=100;
var
   i,j:integer;
   d:matrix;
   buf,buf1 : vector;
begin
   for i:= 1 to n do
    begin
      for j:=1 to n do
    d[i,j]:=0;
      d[i,i]:=a[i,i];
     y[i]:=0
   end;
   for i:= 1 to m do
    begin
       SymmA(a,y,buf);
       MinusveC(buf,b,buf);

       SymmA(d,y,buf1);

       MinusveC(buf1,buf,buf);

       DiaG(d,buf,y);
    end;
end;
procedure RivN(A: Matrix; b: Vector);
{процедура виводу на екран системи заданих рівнянь}
var
   i,j:integer;
begin
 writeln('zadana systema rivnan');
 writeln('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
   for i:=1 to N do
    begin
      for j:=1 to N do
       begin
         write('+','(',A[i,j]:2:2,')',' * X[',j,'] ');
       end;
      writeln(' = ',b[i]:2:2);
    end;
  writeln('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
  writeln;
           end;

procedure VvodMatriX(var A: Matrix; var b: Vector);
{процедура введення коефіцієнтів системи рівнянь}
  var
   i,j:integer;
begin
   for i:=1 to N do
   begin
      for j:=1 to N do
      begin
         write('A[',i,'.',j,'] =  ');
         read(A[i,j]);
      end;
      write('b[',i,'] = ');
      readln(b[i]);
   end;
end;

{основна програма}
begin
clrscr;
writeln('vvedit n-rozmirnist matruci');
readln(n);
   VvodMatriX(a,b);
   RivN(a,b);
   writeln('pochatkove nabligina');
   for i:=1 to n do
    begin
     x[i]:=b[i]/abs(a[i,i]);
     writeln('   x[',i,']=',x[i]:3:4);
     x[i]:=0;
    end;
    writeln;
   IteraciA(a,b,x);
   writeln('Rishenie metodom iteracii');
   for i:=1 to n do
    writeln('   X[',I,']=',x[i]:3:3,' ');
writeln;
readln;
end.

--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
volvo877
Дата 23.5.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(Pitbul @  22.5.2008,  19:20 Найти цитируемый пост)
В этой проге реализован метод ИТЕРАЦИЙ для СЛАУ
Ты думаешь? По-моему это просто новый вариант генератора случайных чисел  smile Смотри, что выдает твоя программа:

Код

vvedit n-rozmirnist matruci
3
A[1.1] =  2
A[1.2] =  1
A[1.3] =  3
b[1] = 9
A[2.1] =  1
A[2.2] =  -2
A[2.3] =  1
b[2] = -2
A[3.1] =  3
A[3.2] =  2
A[3.3] =  2
b[3] = 7
zadana systema rivnan
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+(2.00) * X[1] +(1.00) * X[2] +(3.00) * X[3]  = 9.00
+(1.00) * X[1] +(-2.00) * X[2] +(1.00) * X[3]  = -2.00
+(3.00) * X[1] +(2.00) * X[2] +(2.00) * X[3]  = 7.00
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

pochatkove nabligina
   x[1]=4.5000
   x[2]=-1.0000
   x[3]=3.5000

Rishenie metodom iteracii
   X[1]=-5905169637620301000000000000.000
   X[2]=-3241001216792357000000000000.000
   X[3]=-6382398889265715000000000000.000
Круто... Однако, правильное решение: X = (-1, 2, 3)

Так что ты сначала программу исправь, а потом уже будешь переносить...
PM MAIL   Вверх
Akina
Дата 23.5.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



В Экселе есть надстройка "Поиск решений", которая СЛАУ щёлкает как орехи. И никаких макросов не надо.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pitbul
Дата 23.5.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



Akina

Мне надо курсач сдать, а не решать примеры=)


volvo877

Как это может быть гениратор случайных чисел, если там РЕНДОМ нигде не упоминается? smile

Добавлено через 10 минут и 18 секунд
Ну, окей, если эта прога не правильно написана на паскале, то может кто то поможет найти ее в Бэйсике? Ведь это же одна из базовых лаб во всем СНГ. Тут наверняка есть и люди которые хорошо знают и математику и информатику smile 
--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
Pitbul
Дата 24.5.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fruzenshtein
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 30.4.2008
Где: Киев

Репутация: нет
Всего: нет



Знатоки, помогите плиз, найти решение задачи:

МЕТОД ИТЕРАЦИЙ для систем линейных алгебраических уравнений на языке VBA

 smile  smile  smile 
--------------------
### JAVA  ######  programming ###
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.