Нас просят написать функцию, используя функцию external для вычисления функции двойного суммирования.
Первоначально мой код был написан в следующей форме, и он работает:
funC<-function(n){
express<-function(r,s){
s^2/(10+4*r^3)
}
s<-1:n
r<-1:n
g<-outer(r,s,"express")
g[row(g)< col(g)]<-0
sum(g)
}
Однако я заметил, что эта функция будет работать очень медленно, когда я увеличу свой ввод n до большого числа, скажем, 10000.
Я думаю, это потому, что в моей программе многие вычисления избыточныот которого я должен избавиться.
Поэтому я попытался создать другую функцию express , чтобы она присваивала 0 выходным данным, если r> s.
funC<-function(n){
express<-function(r,s){
if(r<=s){s^2/(10+4*r^3)}
else {0}}
s<-1:n
r<-1:n
g<-outer(r,s,"express")
sum(g)
g
}
Однако оказывается, что этот код не работает.Вот предупреждение, которое я получил.
Предупреждающее сообщение: In, если (r <= s) {: условие имеет длину> 1, и будет использоваться только первый элемент
Я искал в интернете, но не могу найти какую-либо информацию о создании сегментированной функции ... может кто-нибудь дать мне несколько советов?Прошу прощения, если я допустил ошибки в своем коде ... Я новичок в этой программе ...