Jump to content
    

комбинаторика

Подскажите, как бы вы решили задачку.

Дано: 6 резисторов номиналами 1-2-4-6-8-10 кОм.

Резисторы соединены параллельно через ключи.

Как найти "быстро " все возможные номиналы общего сопротивления.

Share this post


Link to post
Share on other sites

1 час назад, messenger сказал:

как бы вы решили задачку.

я бы нашел магические числа степеней 2-ки, их 4 шт.

2^4  всего то 16 значений линейно нарастающей проводимости.

к этим 16 значениям дописываем строку еще из 16 увеличенных на 1/6 (0,166666)  значений  и еще строку увеличенных на 1/10=0,1 

ну и последнюю строку увеличенных на 0,266666

Всего 4 строки по 16 чисел. в самом конце брать обратные значения чтоб килоомы нарисовались.

 

Share this post


Link to post
Share on other sites

64 варианта. в экселе сначала копируем в 6 столбцов все проводимости. потом руками обнуляем перебирая двоичный код. в 7 столбце складываем сумму первых 6 столбцов. в 8 находим обратную величину - сопротивление.

Share this post


Link to post
Share on other sites

8 часов назад, Самурай сказал:

R = 1./sum(repmat(1./r,63,1).*i,2)

Да. Конечно через проводимости. Но думаю принцип понятен.

Share this post


Link to post
Share on other sites

10 hours ago, firstvald said:

64 варианта. в экселе сначала копируем в 6 столбцов все проводимости. потом руками обнуляем перебирая двоичный код. в 7 столбце складываем сумму первых 6 столбцов. в 8 находим обратную величину - сопротивление.

Мне этот вариант показался самым простым. Прав ли я?

Share this post


Link to post
Share on other sites

On 5/3/2024 at 1:18 PM, messenger said:

Мне этот вариант показался самым простым. Прав ли я?

Нет, конечно.. :)

Spoiler
#include "stdafx.h"

double R[] = {1.0,2.0,4.0,6.0,8.0,10.0};

int _tmain(int argc, _TCHAR* argv[])
{
    FILE *pFile;

    fopen_s(&pFile,"..\\Resist.txt","w+");

    double Conduct,Resist;

    for (int i = 1; i < 64; i++)
    {
        Conduct = 0.0;

        for (int j = 0; j < 6; j++) if ((i >> j) & 1) Conduct += 1.0/R[j]; 

        Resist = 1.0/Conduct;

        fprintf(pFile,"%g\n",Resist);
    }

    fclose(pFile);

    return 0;
}

 

Spoiler
Quote

1
2
0.666667
4
0.8
1.33333
0.571429
6
0.857143
1.5
0.6
2.4
0.705882
1.09091
0.521739
8
0.888889
1.6
0.615385
2.66667
0.727273
1.14286
0.533333
3.42857
0.774194
1.26316
0.55814
1.84615
0.648649
0.96
0.489796
10
0.909091
1.66667
0.625
2.85714
0.740741
1.17647
0.540541
3.75
0.789474
1.30435
0.566038
1.93548
0.659341
0.983607
0.495868
4.44444
0.816327
1.37931
0.57971
2.10526
0.677966
1.02564
0.506329
2.55319
0.718563
1.1215
0.528634
1.55844
0.609137
0.875912
0.466926
 

 

 

Share this post


Link to post
Share on other sites

23 минуты назад, messenger сказал:

Прав ли я?

Перебирать руками двоичный код - не царское дело, к тому же долго.  В экселе несколько раз протянуть мышкой с нажатым Ctrl. 

 

image.thumb.png.77e7c2575f55a8ddb244e81a6ad656e9.png

Share this post


Link to post
Share on other sites

49 minutes ago, messenger said:

Мне этот вариант показался самым простым. Прав ли я?

да. никаких инструментов не надо. только половину часа посидеть.

              Проводимость Сопротивление
  1 2 4 6 8 10    
  1 0.5 0.25 0.166667 0.125 0.1    
#                
0 0 0 0 0 0 0 0 #ДЕЛ/0!
1 1 0 0 0 0 0 1 1
2 0 0.5 0 0 0 0 0.5 2
3 1 0.5 0 0 0 0 1.5 0.666666667
4 0 0 0.25 0 0 0 0.25 4
5 1 0 0.25 0 0 0 1.25 0.8
6 0 0.5 0.25 0 0 0 0.75 1.333333333
7 1 0.5 0.25 0 0 0 1.75 0.571428571
                 
63 1 0.5 0.25 0.166667 0.125 0.1 2.041667 0.489795838

Share this post


Link to post
Share on other sites

8 часов назад, firstvald сказал:

только половину часа посидеть

а может ему 

 

В 02.05.2024 в 22:43, messenger сказал:

Как найти "быстро " все

надо быстрее , например секунд за 50 :hi:

 

Share this post


Link to post
Share on other sites

Большое Всем спасибо! Уже пишу код с этими расчетами. Мне понравилось по старинке через двоичный код. 

Как раз будет два массива, один в виде 0b другой с соответствующими сопротивлениями.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...