Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как извлечь квадратный корень? 
:(
    Опции темы
mr.Anderson
Дата 20.12.2004, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Никак не могу понять, как извлекается квадратный корень в JavaScript'е, в смысле, как написать это в коде? Хотел тут написать программочку, которая считает квадратные уравнения, самую простенькую и элементарную. А вот на корнях застрял. Ведь кв. уравнение по формуле решается с извлечением кв. корня (после вычисления дискриминанта). Вот я и застрял. Прошу вас помочь! smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Sardar
Дата 20.12.2004, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Функция Math.sqrt(n);


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Guest
Дата 21.12.2004, 18:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Большое спасибо!
  Вверх
mr.Anderson
Дата 22.12.2004, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Люди! Не могу понять, в чем дело. Ну, написал я эту программку по решению кв. уравнений. Кстати, вот ее код:
Код

<html>
<script>
function DISCRIMINANT()
{ //Начало тела функции

var a=document.aform.fk.value; //Это старший коэффициент уравнения
var b=document.aform.sk.value; //Это второй коэффициент
var c=document.aform.nk.value; //Это свободный коэффициент
var discrim=b*b-4*a*c; //Это дискриминант
var koren1=(-b+Math.sqrt(discrim))/(2*a); //Это первый корень уравнения
var koren2=(-b-Math.sqrt(discrim))/(2*a); //Это второй корень
var koren3=-b/(2*a);
var otkaz="Уравнение не имеет корней, так как дискриминант меньше нуля."; //Просто переменная с текстом
 
if(discrim==0) alert("Уравнение имеет только один корень, т.к. дискриминант равен 0. Корень равен "+koren3+"."); //Если дискриминант равен нулю, то выводится сообщение и один корень.
if(discrim<0) alert(otkaz); //Если дискриминант меньше нуля, то выводится сообщение
if(discrim>0) alert("Уравнение имеет два корня, так как дискриминант больше нуля. Первый корень равен "+koren1+". Второй корень равен "+koren2+"."); //Если дискриминант больше нуля, то считаются оба корня и выводится сообщение

} //Конец тела функции
</script>

<form name="aform">
<h2>Квадратные уравнения</h2>
<h4>ВНИМАНИЕ!</h4>
<h4>1) Программа работает только с целыми числами. Предварительно превратите все коэффициенты в целые числа.</h4>
<h4>2) Если программа выдаст ответ типа "0.66666666666", то вы, конечно, поймете, что речь идет об обыкновенной дроби 2/3 (две третьих). Также и с другими ответами.</h4>
<input type="text" size="25" value="Старший коэффициент" name="fk"><br>
<input type="text" size="25" value="Второй коэффициент" name="sk"><br>
<input type="text" size="25" value="Свободный коэффициент" name="nk"><br><br>
<input type="button" value="Сосчитать" onClick="DISCRIMINANT()">

</form>
</html>


Вот так. Но:
1) Программа почему-то не работает с десятичными дробями. Попробуйте этот код скопировать в браузер и проверить, как он работает. На место старшего коэффициента введите 1, на место второго коэффициента введите 0.2, на место свободного введите 0.01. Результат будет неправильным. В смысле, он не будет таким, как если домножить все коэффициенты уравнения на 100. В этом случае получится: старший коэффициент: 100, второй: 20, свободный: 1. Результаты будут разными.
2) Программа не учитывает то, что если все коэффициенты равны 0, то должно выводиться сообщение типа "Любое х - это решение". Но я не знаю, как это сделать, так как сначала выведется сообщение "Любое х - это решение", а затем (по коду программы) сообщение, что дискриминант равен 0, и неверный (а точнее, неизвестный) корень. Как это исправить?
Если можете, приведите, пожалуйста, пример своей похожей программы, чтобы я у вас поучился. Очень прошу.

Это сообщение отредактировал(а) sim7 - 22.12.2004, 17:49


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Sardar
Дата 22.12.2004, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



1 - просто потеря точности. Вещественые числа в компе не имеют свойсвта полноты, т.е. принадлежат конечному, да еще и не равномерно распределённому множеству. Просто пример:
Код
var a=0.09;
alert(a==0.09); //сомнений быть не может
alert(a==(0.10-0.01)); //ого! =)
alert(0.10-0.01); //во блин!!! =))


Это не особенность JS, так все языки/проги работают smile Проблема решается разными путями, например умножить на несколько порядков, вычислить, а затем разделить обратно. Либо использовать алгоритмы для работы с болсьхими числами, где числа можно представить массивом скольугодного размера, следовательно можно хранить любые числа

2 - ты программировал ранее? условные переходы и подобное? smile
Код

if(a*b*c==0) {
 alert("Любое х это решение.");
 return;
} //и в таком духе далее



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
mr.Anderson
Дата 23.12.2004, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Я же говорил (или нет?) - я полный чайник (ну почти полный) в любом программировании. Есть у меня учебник по JavaScript, но там ничего о том, о чем вы говорите, не сказано. Может, посоветуете хороший учебник? В смысле, который из интернета можно скачать? И ссылочку скиньте, пожалуйста.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Aliance
Дата 26.12.2004, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата(sim7 @ 23.12.2004, 17:05)
И ссылочку скиньте, пожалуйста

http://forum.vingrad.ru/index.php?showtopic=28420
http://forum.vingrad.ru/index.php?showtopic=19939
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0947 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.