2015-04-25 8 views
2

Помогите мне, пожалуйста! Существует процедура operation[f_]. Он работает правильно и сюжет для функций: Cos, Sin. Но, к сожалению, это не работает для E^х и Log [E, х] и выдает ошибки, может быть, потому, что ввод не правильное имя функции или что-то другое;? ((В чем проблемаКак исправить процедуру

spxsin = {-1, -0.35, 0.3, 0.95, 1.6, 2.375, 3.15, 3.925, 4.7, 5.025, 
5.35, 5.675, 6}; 
spxcos = {-1, -0.75, -0.5, -0.25, 0, 0.775, 1.55, 2.325, 3.1, 3.825, 
4.55, 5.275, 6}; 
spxlny = {-1, 0.75, 2.5, 4.25, 6}; 
spxey = {-1, 0.75, 2.5, 4.25, 6}; 
operation[f_] := Block[{data}, 
data = Table[{x, f[x]}, {x, -1, 6, 0.1}]; 
Graphics[{Thick, Blue, Line[data], 
Green, Table[Point[{spx[­[i]], f[spx[­[i]]]}], {i, 1, Length[spx]}], 
Pink, Opacity[.7], 
Table[Rectangle[{spx[­[i]], f[spx[­[i]]]}, {spx[­[i + 1]], 
f[spx[­[i + 1]]]}], {i, 1, Length[spx] - 1}] 
}, Axes -> True]] 

Which[ f == Sin, spx := spxsin, f == Cos, spx := spxcos, f == E^x , 
spx := spxlny, f == Log, spx := spxey] 

operation[Sin] 
operation[Cos] 
operation[E^x] 
operation[Log] 

ответ

1

Эйлера E должен быть введен как Esc ЭИ Esc Она смотрит на меня в введен стандарт E.

Заметим также, что Exp является экспоненциальная функция в Mathematica

+0

Спасибо! Exp работает! но, к сожалению, Log не работает, хотя я редактировал spxey = {0.75, 2.5, 4.25, 6}; и data = Таблица [{x, f [x]}, {x, 1, 6, 0.1}]; Можешь мне помочь? – Julka

+0

Вы пишете журнал [E, x] в вопросе. Вы пробовали журнал [x]? – soegaard

+0

Я попробовал операцию [Log] – Julka

2

Edit Протестировано:.. вы можете пройти чистый функции для вашего operation, поэтому вместо: operation[E^x] попробуйте

operation[E^# &] 

или, например, если вы хотите базу 2 входа было бы

operation[Log[2,#]&] 

Несколько других вещей, чтобы указать на: Log не может просто потому, что ваш x диапазон таблицы является отрицательным.

Кроме того, заявление Which, которое у вас есть, ничего не делает. Будучи вне вашей функции, f не определен, поэтому ни один из условных обозначений не равен True. Перемещение Which внутри функции, это работает:

spxsin = {-1, -0.35, 0.3, 0.95, 1.6, 2.375, 3.15, 3.925, 4.7, 5.025, 
    5.35, 5.675, 6}; 
spxcos = {-1, -0.75, -0.5, -0.25, 0, 0.775, 1.55, 2.325, 3.1, 3.825, 
    4.55, 5.275, 6}; 
spxlny = {-1, 0.75, 2.5, 4.25, 6}; 
spxey = {-1, 0.75, 2.5, 4.25, 6}; 
operation[f_] := 
    Block[{data}, data = Table[{x, f[x]}, {x, -1, 6, 0.1}]; 
    Clear[spx]; 
    Which[ 
     TrueQ[f == Sin], spx := spxsin, 
     TrueQ[f == Cos], spx := spxcos , 
     TrueQ[f == (E^# &)], spx := spxey ]; 
    Graphics[{Thick, Blue, Line[data], Green, 
    Table[{PointSize[.1], Point[{spx[[i]], f[spx[[i]]]}]}, {i, 1, Length[spx]}], 
    Pink, Opacity[.7], 
    Table[Rectangle[{spx[[i]], f[spx[[i]]]}, {spx[[i + 1]], 
     f[spx[[i + 1]]]}], {i, 1, Length[spx] - 1}]}, Axes -> True, 
      AspectRatio -> 1/GoldenRatio]] 

Примечание каждый который тест завернутые в TrueQ, чтобы обеспечить это либо True или False (тест Sin==Cos не является ложным для всех значений и поэтому не возвращает False)

operation[Sin] 
operation[Cos] 
operation[E^# &] 

enter image description here

Теперь, если вы хотите Exp также работать, вы должны явно поместить которые формируются в вашем заявлении Which. (f==(E^#&) || f==Exp)

 Смежные вопросы

  • Нет связанных вопросов^_^