Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Степень числа

431
23 декабря 2006 года
sherry
207 / / 16.10.2006
Есть некоторе коплексное число (A + B*i). Нужно чтобы прога возводила это число в Nекоторую степень (даётся с клавы). подскажите пару моментов, а то мыслей нет...:(
622
23 декабря 2006 года
nilbog
507 / / 19.12.2006
учите матчасть - число в тригон форму переделать и дальше по формуле Муавра (вроде так называется)
1.8K
25 декабря 2006 года
Death Knight
139 / / 19.02.2006
есть 2 варианта:
1. Дать цикл столько раз сколько и введенное число и перемножать число которое нужно ввести в степень само на себя,
var s,a,b,i,j,n:integer;
s:=1;
readln(n);
for j:=1 to n do
s:=s*(a+b*i);
в переменной s будет ответ....
2.
Есть такая формула через экспоненту:
(a+b*i) d степени n=
exp(ln(n*(a+b*i)) или наоборот точно не помню
exp(ln((a+b*i)*n) скорее всего первый вариант
431
25 декабря 2006 года
sherry
207 / / 16.10.2006
матчасть.. Да. Возможно ты (Вы) прав. Я пытаюсь понять азы программирования, при этом ненавидя математику. Многие преподы меня не понимают... Что ж, пойду откопаю свой учебник по вышке и буду соображать...
63
25 декабря 2006 года
Zorkus
2.6K / / 04.11.2006
Цитата: sherry
Я пытаюсь понять азы программирования, при этом ненавидя математику. Многие преподы меня не понимают..


Это зря. Программирование придумали математики, и она встречается в программировании часто - например - алгоритмы, 3д графика.

622
25 декабря 2006 года
nilbog
507 / / 19.12.2006
Цитата: Death Knight
есть 2 варианта:
1. Дать цикл столько раз сколько и введенное число и перемножать число которое нужно ввести в степень само на себя,
var s,a,b,i,j,n:integer;
s:=1;
readln(n);
for j:=1 to n do
s:=s*(a+b*i);
в переменной s будет ответ....
2.
Есть такая формула через экспоненту:
(a+b*i) d степени n=
exp(ln(n*(a+b*i)) или наоборот точно не помню
exp(ln((a+b*i)*n) скорее всего первый вариант


вы полную чушь (извините) написали
число комплексное

z=r(cos(fi)+i*sin(fi))
z в n степени = r^n(cos(n*fi)+i*sin(n*fi))
z - компл ч
r - его модуль
fi - его аргумент

1.8K
25 декабря 2006 года
Death Knight
139 / / 19.02.2006
Да я и не заметил что число комплексное... бывает...:)))
431
05 января 2007 года
sherry
207 / / 16.10.2006
ну здесь вы меня совсем запутали...
63
05 января 2007 года
Zorkus
2.6K / / 04.11.2006
Цитата: sherry
ну здесь вы меня совсем запутали...


Чем именно? Указанием на формулу Муавра?

271
06 января 2007 года
MrXaK
721 / / 31.12.2002
2nilbog
тока модуль тоже возводится в степень...
z^n = r^n (cos(n*fi) + i*sin(n*fi))

а с точки зрения программной реализации, легче не использовать формулу Муавра, а возводить в виде:

z^n = (r^n) * e^(n*i*fi)
fi в радианах...
622
06 января 2007 года
nilbog
507 / / 19.12.2006
Цитата: Mr.Hacker

z^n = (r^n) * e^(n*i*fi)
fi в радианах...


хм а откуда такая формула
и откуда уверенность что exp лучше для реализации чем sin и cos
мне лично не очень она нравится на вид с математической точки зрения
- ирр число возводите в чисто мнимую степень... но в общем
может докажите :)

9.0K
06 января 2007 года
Toxin_F
93 / / 03.01.2007
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i, n, DGToStep: integer;
  res: longint;

begin
  n:=strtoint(edit2.Text);
  dgtostep:=strtoint(edit1.text);
  res:=1;
  if n=0 then
    edit3.Text:='1'

  else
  begin

  for i:=0 to n-1 do
    res:=res*dgtostep;

  edit3.Text:=inttostr(res);

  end;
end;

end.


Вот, с графикой, но надеюсь разберётесь. :) А "(A + B*i)" нужно задать в DGToStep.
271
06 января 2007 года
MrXaK
721 / / 31.12.2002
а ну да я ступил)
формула-то из высшей математики, она правильная, только в программировании всё равно)) из A и B получаем модуль и аргумент, а потом без разницы по какой формуле делать, всё равно возводить модуль в действительную степень и умножать аргумент на действительное число)) ну и потом если надо вернуть всё к виду A + Bi

короче так:
 
Код:
void mult(double a, double b, double n)
{
  double r, fi;

  r = sqr(a*a+b*b);
  fi = arctg(b/a);

  r = exp(n*log(r)); // r = pow(r, n);     log в си это ln
  fi *= n;
}

после всех этих действий получается новое комплексное число... в какой форме его вернуть из функции это уже пускай автор сам делает... я бы преобразовал обратно к виду A+Bi и вернул бы структуру... ну и передавать в функцию тогда тоже можно структуру...
дальше вопрос что функция должна возвращать..
271
06 января 2007 года
MrXaK
721 / / 31.12.2002
а вообще в си есть готовая либа для работы с комплексными числами
complex.h
и функция pow для типа complex тоже перегружена в ней же... так что можно использовать готовые функции...
 
Код:
complex z = complex(A,B); // A и B могут иметь любой вещественный тип
pow(z, n); // степень
double mag = sqrt(norm(z)); // модуль числа, вот таким вот образом вычисляется
double ang = arg(z); // аргумент числа
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог