Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Решение в Java (http://www.tehnari.ru/f41/t91692/)

serij-68tmb 19.10.2013 19:14

Решение в Java
 
Здравствуйте! Помогите, пожалуйста, не знаю, как записать решение.

В общем, задача такая:

sin(a)+sin(a^2)+sin(a^3)+...+sin(a^n)
Нужно получить результат для определенных a и n.
Во первых, я не влип в смысл этой задачи, а во вторых, не знаю как написать решение.

Как я понимаю, здесь a представляется в радианах?

Заранее благодарен.
Вдвойне благодарен за подробно расписанное решение.

Vladimir_S 19.10.2013 19:35

Рад бы помочь, но, увы, в Яве ни бум-бум. Поэтому всё, что могу - это выложить решение на Паскале, авось с алгоритмом будет понятнее.
Код:

Var
 a,b,Sum:real;
 n,i:Integer;
Begin
 Write('a= ');
 Readln(a);
 Write('n= ');
 Readln(n);
 Sum:=0;
 b:=1;
 For i:=1 to n do
  begin
  b:=b*a;
  Sum:=Sum+Sin(b);
  end;
 Writeln('Result: ',Sum:0:5);
 Readln
End.

И да, геометрическая интерпретация абстрактных аргументов тригонометрических функций это, разумеется, радианы. Непонятно выразился? Поясню. В математике существуют функции Sin(x), Cos(x), Tg(x) и т.д., причем они, вообще говоря, ни с какой геометрией (углами) не связаны. Они сами по себе, так же, как и, например, Exp(x), Ln(x) и т.п. Если же нужно перейти к геометрии, то, конечно, аргументы следует интерпретировать, как радианы.

serij-68tmb 19.10.2013 20:04

Цитата:

Сообщение от Vladimir_S (Сообщение 959938)
Рад бы помочь, но, увы, в Яве ни бум-бум. Поэтому всё, что могу - это выложить решение на Паскале, авось с алгоритмом будет понятнее.

Паскаль мы даже не начинали изучать, поэтому я могу его знать только на уровне интуиции)

Цитата:

Сообщение от Vladimir_S (Сообщение 959938)
И да, геометрическая интерпретация абстрактных аргументов тригонометрических функций это, разумеется, радианы. Непонятно выразился? Поясню. В математике существуют функции Sin(x), Cos(x), Tg(x) и т.д., причем они, вообще говоря, ни с какой геометрией (углами) не связаны. Они сами по себе, так же, как и, например, Exp(x), Ln(x) и т.п. Если же нужно перейти к геометрии, то, конечно, аргументы следует интерпретировать, как радианы.

Хорошо, спасибо!

Завтра со свежей головой попробую код перевести в Java, авось что-то да получится...

Vladimir_S 19.10.2013 20:16

Цитата:

Сообщение от serij-68tmb (Сообщение 959948)
Паскаль мы даже не начинали изучать, поэтому я могу его знать только на уровне интуиции)

Жаль. Ну тогда так.
1. Объявляются переменные a, n, Sum (будущая искомая сумма), i (переменная цикла), b (вспомогательная).
2. Вводятся значения a и n.
3. Присваиваются исходные значения: Sum=0, b=1.
4. Организуется цикл в n шагов, на каждом из которых:
а) число b домножается на a.
б) к Sum прибавляется Sin(b).
Если поразмыслить, то станет ясно, что это и будет суммированием синусов возрастающих степеней a.
5. Выводится результат.

serij-68tmb 19.10.2013 20:30

Цитата:

Сообщение от Vladimir_S (Сообщение 959954)
Жаль. Ну тогда так.
1. Объявляются переменные a, n, Sum (будущая искомая сумма), i (переменная цикла), b (вспомогательная).
2. Вводятся значения a и n.
3. Присваиваются исходные значения: Sum=0, b=1.
4. Организуется цикл в n шагов, на каждом из которых:
а) число b домножается на a.
б) к Sum прибавляется Sin(b).
Если поразмыслить, то станет ясно, что это и будет суммированием синусов возрастающих степеней a.
5. Выводится результат.

Завтра попробую что-нибудь начертать) Спасибо!)

serij-68tmb 20.10.2013 11:12

Не-а, не получается... Ввод n, Ввод данных в градусах, затем преобразование в радианы, нахождение значения синуса и всё... А как цикл написать, чтобы значения всех полученных синусов суммировались, не знаю...

Vladimir_S 20.10.2013 11:23

Цитата:

Сообщение от serij-68tmb (Сообщение 960078)
Не-а, не получается... Ввод n, Ввод данных в градусах, затем преобразование в радианы, нахождение значения синуса и всё... А как цикл написать, чтобы значения всех полученных синусов суммировались, не знаю...

Еще раз - в Яве не разбираюсь абсолютно, но что-то типа
Код:

for (int i = 1; i <= n; i++) { 
 b = b*a;
 Sum = Sum + Sin(b);
}

За корректность не ручаюсь - тут Вам видней.

serij-68tmb 20.10.2013 11:27

Цитата:

Сообщение от Vladimir_S (Сообщение 960084)
Еще раз - в Яве не разбираюсь абсолютно, но что-то типа

Ага, похоже.
Цитата:

Сообщение от Vladimir_S (Сообщение 960084)
За корректность не ручаюсь - тут Вам видней.

Ничего страшного, мне лишь бы понять смысл)

serij-68tmb 20.10.2013 12:23

Как можно задать первоначальное значение для переменной Sum?
Сначала ведь её значение - 0, затем при n=1 - sin(a), затем при n=2 - sin(a)+sin(a^2)...
Если в начале программы поставить double Sum=0, то программа везде будет считать, что Sum=0?

Блин, пока я тут программу пробовал писать, у меня блинчики на кухне сгорели(((( Буду без завтрака(((

Vladimir_S 20.10.2013 13:15

Цитата:

Сообщение от serij-68tmb (Сообщение 960095)
Если в начале программы поставить double Sum=0, то программа везде будет считать, что Sum=0?

Почему это? В цикле значение этой переменной как раз и будет изменяться, как надо.
Цитата:

Сообщение от serij-68tmb (Сообщение 960095)
Блин, пока я тут программу пробовал писать, у меня блинчики на кухне сгорели(((( Буду без завтрака(((

А вот это совсем не годится. Завтрак - дело святое.


Часовой пояс GMT +4, время: 04:01.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.