Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2012, 14:18   #1
unijkoder
Пользователь
 
Регистрация: 21.01.2012
Сообщений: 37
По умолчанию Использование метода интерполяции.

Здравствуйте. Есть набор данных:

T1 = 1392
T2 = 1395
T3 = 1460
T4 =1493
T5 = 1540
T6 = 1562
T7 =1579

Каждой Т соответствуют:



U1 = 3442
U2 = 3442
U3 = 3458
U4 = 3491
U5 = 3521
U6 = 3542
U7 = 3546


z1 = -3291
z2 = -3291
z3 = -3348
z4 = -3325
z5 = -4710
z6 = -4695
z7 = -4642

f1 = -13291
f2 = -13291
f3 = -13348
f4 = -13325
f5 = -14710
f6 = -14695
f7 = -14642

r1 = 3442
r2 = 3442
r3 = 3458
r4 = 3491
r5 = 3521
r6 = 3542
r7 = 3546

Задача такая. На форме несколько текстбоксов и кнопка расчет.

При вводе в один из текстбоксов значения Т, в остальных текстбоксах должны отобразится соответствующие значения U,z,f,r. При этом, если Т находится например между Т2 и Т3, то расчитываются соответствующие значения.
Я так понимаю это делается с помощью линейной интерполяции, но не соображу как организовать в коде.

Может кто подскажет?
При нажатии на нее
unijkoder вне форума Ответить с цитированием
Старый 05.07.2012, 19:15   #2
unijkoder
Пользователь
 
Регистрация: 21.01.2012
Сообщений: 37
По умолчанию

формы, кнопки, текстбоксы - это понятно.
Помогите организовать вычисления. И не пойму как в коде исходные данные представить.
unijkoder вне форума Ответить с цитированием
Старый 05.07.2012, 19:37   #3
Defunate
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 83
По умолчанию

Код:
int[] masT = new int[] {1392,.....};
Defunate вне форума Ответить с цитированием
Старый 05.07.2012, 19:53   #4
unijkoder
Пользователь
 
Регистрация: 21.01.2012
Сообщений: 37
По умолчанию

Похожие мысли были, но чего то не идет. Вот пытался отработать процедуру на паре массивов:
Код:
 double Mx;
            Mx = Convert.ToDouble(textBox1.Text);
           double[] mass; mass = new double[] {1000, 2000, 3000, 4000, 5000};
           int n = 5;

           double[] uz; uz = new double[] { 100, 200, 300, 400, 500 };
            for (int i = 0; i < n; i++) 
            {
                ux = uz[i] + ((uz[i + 1] - uz[i]) / (mass[i + 1] - mass[i]) * (Mx - (mass[i])));
                
                textBox2.Text = (ux).ToString();
                 }
unijkoder вне форума Ответить с цитированием
Старый 05.07.2012, 20:41   #5
Defunate
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 83
По умолчанию

Код:
ux = uz[i] + ((uz[i + 1] - uz[i]) / (mass[i + 1] - mass[i]) * (Mx - (mass[i])));
А тебе не кажется что тут будет ошибка при выходе за пределы массива?)
в случае i = 4 при i<n=5 оно запросит (uz[4 + 1]) 5 по индексу элемент),которого нет

Последний раз редактировалось Defunate; 05.07.2012 в 20:43.
Defunate вне форума Ответить с цитированием
Старый 06.07.2012, 00:00   #6
unijkoder
Пользователь
 
Регистрация: 21.01.2012
Сообщений: 37
По умолчанию

Так и вышло. Как исправить?
unijkoder вне форума Ответить с цитированием
Старый 06.07.2012, 11:15   #7
Defunate
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 83
По умолчанию

Код:
for (int i = 0; i < n - 1; i++)
Defunate вне форума Ответить с цитированием
Старый 06.07.2012, 12:42   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

а что для одной точки Мх мы будем вычислять ЧЕТЫРЕ (вообще говоря различных) значения.
Цитата:
Код:
for (int i = 0; i < n; i++) 
            {
                ux = uz[i] + ((uz[i + 1] - uz[i]) / (mass[i + 1] - mass[i]) * (Mx - (mass[i])));
                
                textBox2.Text = (ux).ToString(); // ВЫВОДИМ 4 разных величины
                 }
// но увидим только последнюю!
То что увидим только последнее еще не говорит о том что мы их не считали.

информация к размышлению
Цитата:
При этом, если Т находится например между Т2 и Т3, то расчитываются соответствующие значения.
в алгоритме(коде) это никак не отражено!
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.07.2012 в 12:45.
evg_m на форуме Ответить с цитированием
Старый 07.07.2012, 12:28   #9
unijkoder
Пользователь
 
Регистрация: 21.01.2012
Сообщений: 37
По умолчанию

Все работает. Пример тренировочный. На его базе легко сделаю то что нужно.
Код:
double ux; double uxx; double mx; mx = Convert.ToDouble(textBox1.Text);
             double[] mass; mass = new double[] {1000, 2000, 3000, 4000, 5000};
           int n = 5;

           double[] uz; uz = new double[] { 100, 200, 300, 400, 500 };
           double[] yz; yz = new double[] { 1501, 2022, 3022, 4340, 5230 };

            for (int i = 0; i < n-1; i++) 
            {
                ux = uz[i] + ((uz[i+ 1] - uz[i]) / (mass[i +1] - mass[i]) * (mx - (mass[i])));
                uxx = yz[i] + ((yz[i + 1] - yz[i]) / (mass[i + 1] - mass[i]) * (mx - (mass[i])));

                
                textBox2.Text = (ux).ToString();

                textBox3.Text = (uxx).ToString();
                 }
unijkoder вне форума Ответить с цитированием
Старый 07.07.2012, 12:29   #10
unijkoder
Пользователь
 
Регистрация: 21.01.2012
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Defunate Посмотреть сообщение
Код:
for (int i = 0; i < n - 1; i++)
Спасибо. Это и была ошибка.
unijkoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование метода repaint() объекта класса JPanel Alexcomeback Общие вопросы по Java, Java SE, Kotlin 1 31.10.2010 13:12
Использование метода двойной буферизации для динамической графики(избавление от мерцания) noxin Win Api 1 05.04.2010 20:08
Использование процедуры в другой процедуре (хм .. или метода?)...?? newprog12 Общие вопросы Delphi 4 11.01.2010 00:45
Использование метода getche() Golovastik Общие вопросы C/C++ 4 17.07.2009 20:22
Использование метода free после завершения потока Denager Общие вопросы Delphi 4 29.08.2008 10:13