У меня есть домашнее задание, в котором я должен написать функцию Бесселя и сравнить ее со встроенной функцией Бесселя в r.Я должен построить кривую на интервале (0,01: 10).Функция состоит из нескольких частей, и для интервала 0 <= x <= 3 я должен найти x, используя уравнение 1. На интервале 3 <x <= бесконечность я должен использовать уравнение 2. Я пробовал if и else, ноУ меня было сообщение «длина> 1, поэтому используется первый элемент».Я обнаружил, что для векторов мне нужно выражение ifelse, но как мне его использовать?Я поиграл с ним и обнаружил, что он делает только вещи типа true / false.т.е. ifelse (x <= 3, y, z), где все числа ниже и равные x равны y, а все числа больше x равны z.Как мне написать функцию, в которой она выполняет уравнение 1, если x <= 3, и уравнение 2 для всех остальных чисел? </p>
Код, который я предоставил, неправильный, и он может быть небрежным, но я былиграть с r в течение одной недели, и это примерно как go
x <- seq(.01,10, .01) #sequence of numbers 0.01 - 10 in 0.01 intervals.
#Bessel function for a set of numbers
bess.J = function(x){
if(x<=3){
#
less3 = 1-2.249997*(x/3)^2+1.2656208*(x/3)^4-0.31638*(x/3)^6+0.044479* (x/3)^8-0.0039444*(x/3)^10+0.00021*(x/3)^12
return(less3)
}
#
else{
Tgreater3 = x - 0.78539816 - 0.04166397*(3/x) - (0.00003954*(3/x)^2) + (0.00262573*(3/x)^3) - (0.00054125*(x/3)^4) - (0.00029333*(3/x)^5) + (0.00013558*(3/x)^6)
Fgreater3 = 0.79788456 - 0.0000077*(3/x) - (0.00552740*(3/x)^2) - (0.00009512*(3/x)^3) + (0.00137237*(3/x)^4) - (0.00072805*(3/x)^5) + (0.00014476*(3/x)^6)
Jgreater3 = x^(-1/2)*Fgreater3*cos(Tgreater3)
return(Jgreater3)
}
}
plot(x,bess.J(x))