Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/28: Рейтинг темы: голосов - 28, средняя оценка - 4.79
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157

Итерации - реализация интерполяции Лагранжа

29.08.2011, 08:53. Показов 5801. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Дали задание реализовать интерполяционную формулу Лагранжа(на рисунке ниже).
Так вот в левой части т.е. У(х) - это значение нового элемента нового массива.
в правой части:
у - 6 элементов (в моём случае) из старого массива, которые при просчёте постепенно сдвигаются(т.е. сначала 0-5, потом 1-6, 2-7, 3-8 и т.д до момента n-6 - n), фактически в каждый момент расчёта мы работаем со вторым элементом(средний промежуток) сдвигаемого массива.
ля первых 2 промежутков (0-1 и 1-2) мы делаем линейную интерполяцию.

х - это узлы, для расчёта У(х), т.е. если мы первоначальные промежутки делим на 4, то х будет 2, 2.25, 2.5 и 2.75(в программе этот момент 2+(Nyzla / kolyzlov))

Сама же программа должна делать следующее:
есть textbox(у меня tb1), в который вводится число, обозначающее то кол-во на которое будем разбивать первичный массив.
есть кнопка, по нажатию которой мы выбираем через openfiledialog .txt файл с массивом значений, потом над ним проводятся вычисления и автоматом записывается в ту же дерикторию, что и первый, с добавлением к имени слова.
C#
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace interpol2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            openFileDialog1.DefaultExt = "txt";
            openFileDialog1.Filter = ".txt|*.txt";
            openFileDialog1.Title = "Open file";
            openFileDialog1.Multiselect = false;
            openFileDialog1.FileName = string.Empty;
        }
 
        string FNwithExten = string.Empty;
        string newFNwithExten = string.Empty;
        string FN = string.Empty;
        string Dir = string.Empty;
        int QuantBeat = 0;
        int nom = 0;
        int newQB = 0;
 
        /////////////////////////////////////////
        //обработчик для дроби в правой части
        double drob(double xp, int step)
        {
            int[] time = new int[6];
            double chesl = 1;
            double znam = 1;
            for (int i = 0; i == 5; i++) { if (i == step) { continue; } chesl *= xp - i; }
            for (int i = 0; i == 5; i++) { if (i == step) { continue; } znam *= step - i; }
            return chesl / znam;
        }
        // здесь фактический обработчик массива
        void Execute(double[] arrvx, double[] arrvix, int sizevx, int kolyzlov)  
        {
            int count = 0;
            double itog = 0;
            for (int i = 0; i != sizevx-6; i++)
            {
                if (i < 2) 
                {
                   for (int Nyzla = 0; Nyzla < kolyzlov; Nyzla++)
                    {
                        arrvix[count] = itog;
                        count++;
                   }               
                }
                else{
                  for (int Nyzla = 1; Nyzla < kolyzlov; Nyzla++)
                   {
                        for (int j = 0; j == 5; j++)
                       {
                            itog += arrvx[i + j] * drob(2+(Nyzla / kolyzlov), j);
                        }
 
                    }                           
                    arrvix[count] = itog;
                    count++; 
                }
            }
        }
        ////////////////////////////////////////
        private void bOpen_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    FNwithExten = openFileDialog1.FileName;
                    FN = Path.GetFileNameWithoutExtension(FNwithExten);
                    Dir = Path.GetDirectoryName(FNwithExten);
                    StreamReader SR = new StreamReader(FNwithExten);
                    lb1.Text = FNwithExten;
                    string Textfile = SR.ReadToEnd();
                    string[] LinesText=Textfile.Split(new Char[]{'\n',' '},StringSplitOptions.RemoveEmptyEntries);
                    QuantBeat = LinesText.Length;
                    double[] arr1 = new double[QuantBeat];
                    for (int i = 0; i < QuantBeat; i++)
                    {
                        arr1[i] = Convert.ToDouble(LinesText[i]);                    
                    }
                    try
                    {
                        nom=Convert.ToInt16(tb1.Text);
                        newQB = QuantBeat * nom;
                        double[] arr2=new double[newQB];
                        try
                        {
                            Execute(arr1,arr2,QuantBeat,nom);
                            newFNwithExten = Dir +"\\"+ FN + "_inter.txt";
                            using (StreamWriter SW = new StreamWriter(newFNwithExten))
                               {
                                foreach (int i in arr2){ SW.WriteLine(i); }
                               }
                        }
                        catch{lb2.Text ="bad solution";}
                    }
                    catch { lb2.Text = "Vi vvodite ne chislo ili ne celoe chislo"; }
 
                }
                catch { lb2.Text = "not reading"; }
            }
        }
 
        private void bClose_Click(object sender, EventArgs e)
        {
            Close();
        }
 
 
 
    }
}


При прогоне программы вижу, что значения в массив arr1 заносятся правильно, а вот в массив arr2 заносятся значения 0, но массив нужного размера получается.

Прошу кого-нибудь глянуть(если не западло) в чём закавыка(скорей всего в реализации формулы), но я просто не вижу что неправильно, потому как циклы вроде реализуются в правильной последовательности. Если вы считаете, что само описание формулы неправильное, то прошу поясните своё мнение.
заранее спасибо.
 Комментарий модератора 
На форуме есть редактор формул. Это просто чтобы Вы знали.
Миниатюры
Итерации - реализация интерполяции Лагранжа  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2011, 08:53
Ответы с готовыми решениями:

реализация кубической интерполяции
Всем доброго времени суток! Возникла проблема с кубической интерполяцией (преобразуют матлабовский код на с#, а именно функцию...

Вопрос по интерполяции лагранжа
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; const MAX_points=20; void ShowTitle() clrscr(); cout&lt;&lt;&quot;Интерполяционный...

Оценить погрешность интерполяции многочленом Лагранжа и сплайнами
Господа, в наличии функция f(x)=-x^3. Необходимо оценить погрешность интерполяции многочленом Лагранжа и сплайнами. Где погрешность будет...

21
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
29.08.2011, 11:51
либо я что-то путаю, либо вы..
на сколько я помню ничего сдвигать не надо
суть метода такова - есть массив из N точек и по этим точкам вы строите полином N-ой степени по формуле Лагранжа) вы её привели в посте.
как я вижу решение задачи: пишете какой-то метод, в который вы подаете массив с данными и переменную X - он, в свою очередь у себя строит этот полином и выдает вам значение аппроксимированной функции в данной точке.
0
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
29.08.2011, 12:15  [ТС]
спасибо, что отозвались!!
Под сдвигом я имел ввиду, что при каждом прогоне мы работаем только с 6 элементами входного массива.
Я вот поэтапно прогонял массив и заметил, что в выходной массив подаётся значение itog, объявленное в методе как 0. Т.е. тупо переназначив его на 10, в файле теперь сплошником 10 идут. Почему-то не прогоняется строка:
Код C#
64 itog += arrvx[i + j] * drob(2+(Nyzla / kolyzlov), j);

пожалуйста гляньте этот момент, в чём ошибка. Вроде все правила соблюдены!!!!
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
29.08.2011, 12:39
а зачем такие танцы?
нужно ведь, имея набор точек, аппроксимировать их какой-то функцией, в данном случае полиномом Лагранжа
если вы проходите поэтапно со сдвигом на 1 элемент, то в итоге вы получите немного разные массивы. тоесть аппроксимация в точках, которые пересечены в множестве при предыдущем и нынешнем проходе, будут иметь разные значения.
это я по поводу вашего подхода к решению задачи. если уж вы хотите уточнить, то, во-первых, с увеличением количества точек увеличивается точность аппроксимации, во-вторых, если уж вы хотите аппроксимировать частями, то вам следует аппроксимировать непересекающиеся множества - [0; 10]:[11; 20]:...:[n-10; n] и потом их склеивать. в идеале склеивать по значению производной в точке склеивания, но это уже почти метот спланов и не всегда у вас есть значения производной в точках.
по поводу кода - пройдите пошагово (если ещё не проходили, конечно)
и ещё.. смотрите: у вас массив arr1 заполняется в цикле:
C#
1
2
3
4
                    for (int i = 0; i < QuantBeat; i++)
                    {
                        arr1[i] = Convert.ToDouble(LinesText[i]);                    
                    }
потому у вас и есть там значения
массив же arr2 у вас просто инициализируется:
C#
1
                        double[] arr2=new double[newQB];
и потому у вас в итоге там нули.
на сколько я догадываюсь вы хотите чтобы после использования метода
C#
1
                            Execute(arr1,arr2,QuantBeat,nom);
у вас изменялись массивы arr1 и arr2. верно?
но они у вас в итоге не меняются. они так и остаются как были до использования метода Execute.
сделайте передачу в этот метод массивов по ссылке (сейчас вы передаете их по значению)
C#
1
2
3
4
5
        void Execute(ref double[] arrvx, ref double[] arrvix, int sizevx, int kolyzlov)  
        {
            int count = 0;
            double itog = 0;
            //....
C#
1
                            Execute(ref arr1,ref arr2,QuantBeat,nom);
но я могу ошибаться ибо мог неверно понять ваш код и ваши намерения
0
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
29.08.2011, 12:55  [ТС]
я думал, что, вызывая метод Execute, я передаю в него массив arr1, который обрабатывается методом и выкидывает новое значение в arr2. Прогоняя программу, заметил, что почему -то проскакивается мимо вычисление itog:
Код C#
1 2 3 itog += arrvx[i + j] * drob(2+(Nyzla / kolyzlov), j);

Кроме того, если при инициализации itog приравнять 10, то в получившемся файле первые несколько значений, отвечающие требованию:
Код C#
1 for (int i = 0; i != sizevx-6; i++)
{
if (i < 2)
{
for (int Nyzla = 0; Nyzla < kolyzlov; Nyzla++)
{
arrvix[count] = itog;
count++;
}



получаются равными 10, а потом опять 0 сплошником.
Прочитав ваше последнее сообщение, попробовал сделать, используя ref. Всё так же 0.
ещё раз прошу гляньте на вычисление itog!!!
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
29.08.2011, 13:18
давайте свой проект - я его подебажу.. если не получится сейчас, то уже дома. если не хотите светить его на форуме, то в личку скиньте ссылку на выложенный архив

либо сами пройдитесь по нему пошагово и проверьте значения переменных - может там условие не выполняется

пробуйте
1
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
29.08.2011, 13:25
.Lexx., надеюсь я правильно понимаю, что вам нужен метод Лагранжа? Зачем тогда так мудрить. Я полгода назад писал подобное. Посмотрите этот код, здесь вы можете задать равномерные или оптимальные узлы, функцию в явном виде (для проверки) или массив значений. Потом его можно дополнить до полинома Эрмита.
C#
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
namespace PolynomialInterpolation
{
 
    public enum InterpolationType
    {
        Equidistant,
        Optimal
    }
 
    public class PolynomialInterpolation
    {
        private void NodesInitialisation(int countofnodes, InterpolationType _type)
        {
            _nodes = new double[countofnodes];
            switch (_type)
            {
                case InterpolationType.Equidistant:
                    for (int i = 0; i < countofnodes; i++)
                    {
                        _nodes[i] = a + i * (b-a) / (countofnodes - 1);
                    }
                    break;
                case InterpolationType.Optimal:
                    for (int k = 0; k < countofnodes; k++)
                    {
                        _nodes[k] = Math.Cos(Math.PI * (2 * k + 1) / (2 * countofnodes)) * (b - a) / 2 + (b + a) / 2;
                    }
                    break;
            }
        }
 
        private PolynomialInterpolation(double a, double b, int n, InterpolationType type)
        {
            this.a = a;
            this.b = b;
            NodesInitialisation(n, type);
        }
 
        public PolynomialInterpolation(double a, double b, int n, InterpolationType type, Func<double,double> f)
            : this(a, b, n, type)
        {
            _sourcefunction = f;
        }
 
        public PolynomialInterpolation(double a, double b, int n, InterpolationType type, double[] values)
            : this(a, b, n, type)
        {
            _values = values;
        }
 
        public double[] Nodes
        {
            get
            {
                return _nodes;
            }
        }
 
        public double LagrangePolynomial(double x)
        {
            double sum = 0;
            if (_sourcefunction != null)
            {
                for (int i = 0; i < _nodes.Length; i++)
                {
                    sum += _sourcefunction(_nodes[i]) * BasisPolynomial(i, x);
                }
            }
            else
            {
                for (int i = 0; i < _values.Length; i++)
                {
                    sum += _values[i] * BasisPolynomial(i, x);
                }
            }
            return sum;
        }
 
        public double BasisPolynomial(int k, double x)
        {
            double result = 1;
            for (int i = 0; i < _nodes.Length; i++)
            {
                if (i != k)
                {
                    result *= (x - _nodes[i]) / (_nodes[k] - _nodes[i]);
                }
            }
            return result;
        }
 
        private double[] _values;
        private Func<double, double> _sourcefunction;
        private double[] _nodes;
        private double a, b;
    }
}
1
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
29.08.2011, 14:08  [ТС]
кажись воткнул в чём ошибка, исправлю -> отпишусь. Спасибо всем))))

Добавлено через 15 минут
Хотел бы задать вопрос по поводу последнего кода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        public PolynomialInterpolation(double a, double b, int n, InterpolationType type, Func<double, double> f)
            : this(a, b, n, type)
        {
            _sourcefunction = f;
        }
 
        public PolynomialInterpolation(double a, double b, int n, InterpolationType type, double[] values)
            : this(a, b, n, type)
        {
            _values = values;
        }
 
        public double[] Nodes
        {
            get
            {
                return _nodes;
            }
        }
Прошу поясните их. если не построчно, то хотя бы общий смысл!
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
29.08.2011, 14:14
первое два - конструкторы.
base - использование конструктора родителя и дополнение того, чего нет в конструкторе родителя.
третье - поле, которое выдает дабловый массив, который является приватным и к нему нет прямого доступа
2
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
29.08.2011, 14:40  [ТС]
almazsr вопрос:
Для работы с массивом вы используете этот вариант:
C#
1
for (int i = 0; i < _values.Length; i++)                 {                     sum += _values[i] * BasisPolynomial(i, x);                 }
как я понимаю _values.length возвращает значение длины массива, который интерполируем. но при этом разве не происходит сложение всех членов массива : += ???
и ещё в BasisPolynomial вы используете _nodes[], потому что заранее не знаете с каким значением будете работать?? Т.е. будет ли ошибкой если я сделаю вот так:
C#
1
2
3
4
5
6
        double drob(double xp, int step)
        {
            double result = 1;
            for (int i = 0; i == 5; i++) { if (i != step) result *= (xp - i)/(step-i); }
            return result;
        }
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
29.08.2011, 15:01
.Lexx., у вас функция drob возвращает всегда 1.
0
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
29.08.2011, 15:30  [ТС]
простите. но я чего-то не воткнул(( Почему 1? вы вместо моего используете, как я понимаю массив значений, и каждый раз работаете с его элементами, так??
мне просто объяснили, что при расчёте мы работаем с 6 элементами, поэтому и цикл должен быть от 0 до 5, с выкидыванием элемента = нынешнему шагу.
поэтому я тупо сделал вычитание переменных (xp-i)(step - i) или я не прав?
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
29.08.2011, 19:09
.Lexx.,
C#
1
for (int i = 0; i == 5; i++)
этот цикл никогда не выполнится.
1
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
30.08.2011, 08:18  [ТС]
almazsr, а если я сделаю что-то типа того for(int i=0;i<6;i++) так будет норм или же дело не в присваивании:???
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
30.08.2011, 09:48
Цикл for повторно выполняет оператор или блок операторов, пока определенное выражение не примет значение false. Цикл for удобно использовать для итераций в массивах и для последовательной обработки.
у вас же это значение при первой де итерации принимает значение false
да, будет нормально
1
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
30.08.2011, 12:04  [ТС]
Прошу простить мене за тупизм!!!
но вот сделал метод:
C#
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
        //обработчик для дроби в правой части
        double drob(double xp, int step)
        {
            for (int i = 0; i < 6; i++) { 
                if (i != step) 
                    result *= (xp - i)/(step-i);
            }
            return result;
        }
        // здесь фактический обработчик массива
        void Execute(double[] arrvx,double[] arrvix, int sizevx, int kolyzlov)  
        {
            int count = 0;
            double itog = 1;
            for (int i = 0; i != sizevx; i++)
            {
                  for (int Nyzla = 0; Nyzla < kolyzlov; Nyzla++)
                   {
                       for (int j = 0; j < 6; j++)
                       {
                           itog += arrvx[i + j] * drob(2+(Nyzla/kolyzlov), j);
                       }
                    arrvix[count] = itog;
                    count++;
                    }                           
                   
            }
        }
короче поставил kolyzlov =2. Начал прогон и получилось, что вне зависимости от значения Nyzla в метод Drob значению xp передаётся 2. Всегда.
Просто по-моему я не допускал ошибки. Если допустил поясните плиззззз.
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
30.08.2011, 12:46
C#
1
itog += arrvx[i + j] * drob(2.0+Convert.ToDouble(Nyzla)/Convert.ToDouble(kolyzlov), j);
0
 Аватар для .Lexx.
5 / 5 / 1
Регистрация: 06.07.2011
Сообщений: 157
30.08.2011, 13:03  [ТС]
точняк, теперь просчитывает. Но почему нужна конвертация??? Стоп. Из-за того что в итоге получаем число не int, а double поэтому??

Далее как и говорил almazsr действительно не меняется значение метода Drob, хотя по любому должно. Имеет смысл значения в нём тоже в double конвертировать????
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
30.08.2011, 13:08
тут я точно не скажу, по идее если делятся int на int, то может получиться и double - это должно быть предусмотрено в переопределении операции для типа int, но раз уж вы подаете в метод double, то чтобы не возникало проблем приведите всё, что можно к double.
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
30.08.2011, 13:52
.Lexx., достаточно одну из переменных привести к double при делении и тогда будет уже нормальное деление, а не целочисленное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.08.2011, 13:52
Помогаю со студенческими работами здесь

Разработать подпрограмму для интерполяции полиномом Лагранжа.
Разработать подпрограмму для интерполяции полиномом Лагранжа. В маткаде...

Подскажите литературу по интерполяции функции двух переменных используя полиномы Лагранжа и Ньютона
Друзья подскажите литература по интерполяции функции двух переменных используя для этого полиномы Лагранжа и Ньютона.

Нужно сделать программу для интерполяции по формуле Лагранжа, y=Sin(x^3), границы от 0-2 с шагом 0,08. Почему не работае
#include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;process.h&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; #include...

Написать две программы для интерполяции функции по формулам Лагранжа при равномерном расположении узлов
Доброго времени суток. Помогите, пожалуйста. Есть такое задание: написать две программы для интерполяции функции по формулам Лагранжа...

Разработать алгоритм интерполяции значений функции методом Лагранжа. В качестве тестового примера использовать функцию Рунге
Народ срочно нужна помощь в написании программы. Тема : Разработать алгоритм интерполяции значений функции методом Лагранжа. В качестве...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru