Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Математика(геометрия) в Ruby, Две задачи на геометрию... 
:(
    Опции темы
Liza1700
Дата 25.6.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Простите за наглость, но я хотела бы чтобы вы мне в этот раз помогли написать 2 программы или хотя бы подсказали какие формулы надо использовать... 

Так как я не сильна в математике(тем более в высшей), но мне не лень если надо разобраться во всем...


Задали мне 3 задачи из которых одну я сделала....

1) Вычислите методом Монте-Карло определенный интеграл от функции ((x + 1) sin(x)) в квадрате
на отрезке [0;Пи] . Ответ округлите до 2 знаков после запятой.

Вот как я решила:
Код

include Math

def f(x)
    return ((x + 1)*sin(x)) ** 2
end

puts "Type summ of values(size of choize)"
n = gets.to_i
h = 5 # haight restriction
a = 0 # left end [a, b]
b = PI # raight end [a, b]
s = (b-a)*h # S restriction

k = 0
for i in 1..n
    x = a + (b-a)*rand
    y = h * rand
    if f(x) >= y then k += 1 end
end

printf("Value of integer = %.2f \n", s*k/n)


А вот с другими задачками... полный вынос!!! я прошу помогите мне их решить

2) Вычислите методом правых прямоугольников площадь фигуры, ограниченной графиком функции y = e(в степени x)*cos(x), осью Оx, прямыми x =0 и x = 1. Ответ округлите до 3х знаков после запятой.


3) Вычислите методом трапеций площадь фигуры, ограниченной графиком функции y = (2x-3)/(x(в квадрате) + 2), осью Ох, прямыми x = 2 и 
x = 5. Ответ округлите до 3 знаков после запятой.

__________________________
Проблема даже не в написании, я просто в голове даже не представляю, что это значит ^^ поэтому очень прошу помочь с этими задачками((( 

PM WWW   Вверх
Liza1700
Дата 26.6.2009, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Думала что только я не знаю математики ^^

Поискав в интернете про эти методы я нашла к ним формулы

Используя стандартные соотношения для нахождения площади прямо- 
угольника, получим выражения для приближённого вычисления значения 
определённого интеграла методом правых прямоугольников:

user posted image


Формула метода трапеции

user posted image

И вот, что я написала, после того как их увидела...
Код

include Math

def f(x)
    return e ** x*(cos(x))
end

puts "Type summ of cut"
n = gets.to_i

a = 0
b =       #тут как то надо записать x = 0 и x = 1
delta = (b-a).to_f/n

s = 0
x_i = a
for i in 0..(n-1)
    s += f(x_i)*delta
    x_i +=delta 
end

printf("Size of integrall is %3.f\n", s)


Но естественно оно не работает... так как я не знаю как можно число е(в степени х) записать

Помогите пожалуйста, просто если получиться сделать эту задачу, вторая просто аналогична...
PM WWW   Вверх
shine
Дата 26.6.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 5



>я не знаю как можно число е(в степени х) записать
Math::E**x
--------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin
PM MAIL   Вверх
Liza1700
Дата 26.6.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



shine, 
Спасибо большое, а ты можешь мне помочь хотя бы с одной из этих двух задачек?

PM WWW   Вверх
source777
Дата 26.6.2009, 21:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(shine @  26.6.2009,  10:02 Найти цитируемый пост)
>я не знаю как можно число е(в степени х) записать
Math::E**x 


Согласно принципу наименьшего удивления, лучше так:
Код

  include Math
  exp(x)


Цитата(Liza1700 @  26.6.2009,  08:51 Найти цитируемый пост)
a = 0
b =       #тут как то надо записать x = 0 и x = 1

a и b, это и есть ограничения по x, т.е. a = 0; b=1;

Вот тебе пример решения методом правых прямоугольников:
Код

include Math

def f(x)
  exp(x)*cos(x)
end

puts "Type summ of cut"
n = gets.to_i

a, b = 0, 1
delta = (b-a)/n.to_f
x_i, summ = a, 0

for i in 0...n
  x_i += delta
  summ += f(x_i)
end
res = summ*delta
printf("Size of integrall is %.3f\n", res)

теперь давай сама методом трапеций...

Это сообщение отредактировал(а) source777 - 26.6.2009, 22:11


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Liza1700
Дата 27.6.2009, 12:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



source777, 

Аааааааа!!!!)))
Спасибо огромное))) теперь для меня не составит труда сделать аналог))))

PM WWW   Вверх
source777
Дата 27.6.2009, 13:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(Liza1700 @  27.6.2009,  12:31 Найти цитируемый пост)
Спасибо огромное))) теперь для меня не составит труда сделать аналог))))

Молодец, уважаю такой подход. Как сделаешь, можешь выложить здесь для оптимизации, как синтаксической, так и алгоритмической.  smile 


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




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


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

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