вложенные циклы

Форум пользователей пакета Mathematica

Модератор: Admin

Some
Сообщения: 12
Зарегистрирован: Вт май 11, 2010 4:25 pm

вложенные циклы

Сообщение Some » Ср май 25, 2011 4:19 pm

w := 12
q := 5
k := 29
A := 23
For[x = 0; x ≤ w, x++, For[y = 0; y ≤ q, y++, if[x*x - A*y*y == k, Print[x, y]]]]

Я новичок в пользовании Математикой. Никак не могу разобраться с синтаксисом. По идее, должно срабатывать при x = 11 и y = 2. Но программа вообще ничего не выводит. Либо вложенные циклы не так пишутся... подскажите в чем ошибка... заранее спасибо

kypakaman
Сообщения: 31
Зарегистрирован: Пн май 16, 2011 9:42 pm

Сообщение kypakaman » Ср май 25, 2011 5:25 pm

ошибки синтаксиса
делай так:
w := 12
q := 5
k := 29
A := 23
For[x = 0, x <= w, x++,
For[y = 0, y <= q, y++, If[x*x - A*y*y == k, Print[x, y]]]]

Some
Сообщения: 12
Зарегистрирован: Вт май 11, 2010 4:25 pm

Сообщение Some » Ср май 25, 2011 7:42 pm

Спасибо, заработало. Но немного не так, как хотелось бы. Print срабатывает каждый раз, а не только при выполнении условия в If.

kypakaman
Сообщения: 31
Зарегистрирован: Пн май 16, 2011 9:42 pm

Сообщение kypakaman » Ср май 25, 2011 8:19 pm

хмм...странно...у меня все норм с этим...

Some
Сообщения: 12
Зарегистрирован: Вт май 11, 2010 4:25 pm

Сообщение Some » Ср май 25, 2011 8:43 pm

d:=5
c:=24
k := 29
A:=23
q := d*Sqrt[k]
w := q*Sqrt[A + k/(q*q)]
Print ["q=", q]
Print["w=", w]
For[x = 0, x ≤ w, x++, For[y = 0, y ≤ q, y++, if[x*x - A*y*y == k, Print[x, "
", y]]]]

вот более полная версия того, что у меня имеется. q и w уже получаются не целыми числами... может в этом проблема.
тот вариант, который вы мне прислали работает верно)

Some
Сообщения: 12
Зарегистрирован: Вт май 11, 2010 4:25 pm

Сообщение Some » Ср май 25, 2011 8:58 pm

подскажите тогда команду для того, чтобы округлить до целого допустим 5*Sqrt[29] в меньшую сторону.

jurasea
Сообщения: 12
Зарегистрирован: Вт апр 26, 2011 8:32 pm
Контактная информация:

Сообщение jurasea » Ср май 25, 2011 9:18 pm

Some писал(а):подскажите тогда команду для того, чтобы округлить до целого допустим 5*Sqrt[29] в меньшую сторону.


a={26,26.4,26.5,5*Sqrt[29],27};
N@a
Round@a
Ceiling@a
IntegerPart@a
Floor@a

{26., 26.4, 26.5, 26.9258, 27.}
{26, 26, 26, 27, 27}
{26, 27, 27, 27, 27}
{26, 26, 26, 26, 27}
{26, 26, 26, 26, 27}
Последний раз редактировалось jurasea Ср май 25, 2011 9:27 pm, всего редактировалось 1 раз.

Some
Сообщения: 12
Зарегистрирован: Вт май 11, 2010 4:25 pm

Сообщение Some » Ср май 25, 2011 9:24 pm

jurasea писал(а):
Some писал(а):подскажите тогда команду для того, чтобы округлить до целого допустим 5*Sqrt[29] в меньшую сторону.


N[5*Sqrt[29]]
Round[5*Sqrt[29]]
Ceiling[5*Sqrt[29]]
IntegerPart[5*Sqrt[29]]
Floor[5*Sqrt[29]]

26.9258
27
27
26
26


большое спасибо)