Помогите перевести формулы в циклы

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Андрей Гарт
31
Андрей Гарт  

Доброго времени суток!

У меня есть набор формул:

net1 = x1 * w1 + x2 * w6 + x3 * w11 + x4 * w16 + x5 * w21 ;
net2 = x1 * w2 + x2 * w7 + x3 * w12 + x4 * w17 + x5 * w22 ;
net3 = x1 * w3 + x2 * w8 + x3 * w13 + x4 * w18 + x5 * w23 ;
net4 = x1 * w4 + x2 * w9 + x3 * w14 + x4 * w19 + x5 * w24 ;
net5 = x1 * w5 + x2 * w10 + x3 * w15 + x4 * w20 + x5 * w25 ;


out1  =   1   /    (1+exp(-net1)); 

out2  =   1   /    (1+exp(-net2));

out3  =   1   /    (1+exp(-net3));

out4  =   1   /    (1+exp(-net4));

out5  =   1   /    (1+exp(-net5));

Эти формулы нужно реализовать через массивы и циклы. Помогите пожалуйста!!!

У меня получилось так (но считает не правильно):

объявляю массивы глобально:

double w[25];

double x[5];

double out[5];

double net[5];

в функции init код такой:

         for(int j3=0; j3<5; j3++)/

           {

           for(int k=j3; k<25; k=k+5)

             {

             net[j3]+=w[k]*x[j3];

             }    

           }

           for(int j2=0; j2<5; j2++)

             {

             out[j2]=1/(1+exp(-net[j2]));

             }

Evgeniy Zhdan
16784
Evgeniy Zhdan  
Андрей Гарт:

Доброго времени суток!

У меня есть набор формул:


Слишком замудрено. А значит - не правильно. Код должен быть простым и понятным, а не циклы в цикле и массивом погоняет.

Вот это что: net[j3] ? Это Вы так ключ пишите или это значение?

Андрей Гарт
31
Андрей Гарт  
j3 это значение. Перебор значений начинается с J3=0 и заканчивается когда J3<5, так как в массиве net[] 5 значений, а счет в массивах идет от 0.
Evgeniy Zhdan
16784
Evgeniy Zhdan  
Андрей Гарт:
j3 это значение. Перебор значений начинается с J3=0 и заканчивается когда J3<5, так как в массиве net[] 5 значений, а счет в массивах идет от 0.

Обращение к значениям массива производится по ключу. У вас не правильно все написано.

Андрей Гарт
31
Андрей Гарт  
я поэтому и обратился на этот форум за помощью... Чтоб помогли разобраться что не так
Evgeniy Zhdan
16784
Evgeniy Zhdan  
Андрей Гарт:
я поэтому и обратился на этот форум за помощью... Чтоб помогли разобраться что не так

Вам же сказали что не так

Evgeniy Chumakov
2757
Evgeniy Chumakov  
Андрей Гарт:
я поэтому и обратился на этот форум за помощью... Чтоб помогли разобраться что не так


Напишите так как есть формулы зачем массивы с циклами?

Андрей Гарт
31
Андрей Гарт  
А можно на примере кода. Я не программист и языков не знаю.
Андрей Гарт
31
Андрей Гарт  
Если формул сотни, то писать долго, у компилятора есть ограничение на количество кода. Через массивы легче менять параметры. Можно делать больше или меньше формул меняя несколько цифр.
Evgeniy Zhdan
16784
Evgeniy Zhdan  
Андрей Гарт:
Если формул сотни, то писать долго, у компилятора есть ограничение на количество кода. Через массивы легче менять параметры. Можно делать больше или меньше формул меняя несколько цифр.

Путаете массив с классом. Вообще не верное направление выбрали. Или функциями сделайте.

Evgeniy Chumakov
2757
Evgeniy Chumakov  
double array_w[25];

double array_x[5];

double array_out[];
ArrayResize(array_out,5,0);

for(int i = 0; i < 5; i++){

double net = (array_x[i] * array_w[i]) + (array_x[i + 1] * array_w[i + 5]) + (array_x[i + 2] * array_w[i + 10])  + (array_x[i + 3] * array_w[i + 15])  + (array_x[i + 4] * array_w[i + 20]);

ArrayFill(array_out,i,1,net);
}

                
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий