Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача на Java (ИСПОЛЬЗОВАНИЕ КОЛЛЕКЦИЙ)

Дарья Мальцева Знаток (276), закрыт 5 лет назад
Помогите пожалуйста решить задачку на Java с помощью коллекций : Списки (стеки) I(1..N) и U(1..N) содержат результаты N измерений тока и на-пряжения на неизвестном сопротивлении R. Найти приближённое число R методом наименьших квадратов.
Лучший ответ
ппп Мыслитель (9211) 5 лет назад
Вывод формулы для сопротивления:

U=IR

(S[((U-(IR))^2)])' = 2S[(U-IR)*(U-IR)'] = 2S[(U-IR)*(-I)] = 2S(I^2*R - UI) = 2S(I^2)*R - 2S(UI);

2S(I^2)*R - 2S(UI) = 0;

R = S(UI)/(S(I^2))

S - это сигма

U, I это конечно же "U итое" и "I итое"

Программа на Java с тестом на примере, по заявкам телезрителей:

import java.util.*;

public class Main{

static final int N = 4;

public static void main(String[] args){

ArrayList U = new ArrayList《double》();

ArrayList I = new ArrayList《double》();

//пример результатов измерений

U.add(0, 0.9);

U.add(1, 2.2);

U.add(2, 3.1);

U.add(3, 3.8);

I.add(0, 2.3);

I.add(1, 3.7);

I.add(2, 6.3);

I.add(3, 7.9);

double R = S(U, I)/Skv(I);

System.out.println(R);

}

static double S(ArrayList l1, ArrayList l2){

double r = 0;

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

r += (double)l1.get(i)*(double)l2.get(i);

}

return r;

}

static double Skv(ArrayList l){

double r = 0;

for(double d : l){

r += d*d;

}

return r;

}

}

Округлить ответ сможете сами, если знаете Java
Остальные ответы
Похожие вопросы