Численное интегрирование в R: ошибка поведения плохого подынтегрального выражения

Это моя матрица

func=structure(c(-14.7690673280818, -14.5543581356252, -12.1406211639974, 
-10.7200919648493, -9.55507848352318, -9.20790894914246, -8.74647670464071, 
-8.26548763467919, -7.3962484443768, -6.94590909664862, -6.63903257406218, 
-6.40598087538929, -6.09621085755895, -5.88245015332806, -5.69615454359131, 
-5.4543516801245, -5.24485270997044, -5.05729667581875, -4.7660441793448, 
-4.39683466679171, -4.30668996362841, -4.0828498417172, -3.95528199743041, 
-3.81741171570944, -3.66175435590196, -3.56271256245504, -3.49609868983868, 
-3.37586125647396, -3.0034966287813, -2.90517151506904, -2.72993249556762, 
-2.66092057836039, -2.4408738658527, -2.36547969703899, -2.09546783234301, 
-1.95526398213212, -1.88470374007828, -1.72750243012653, -1.60575660667247, 
-1.43542615745848, -1.29362975715702, -1.18449733575892, -0.98947894198681, 
-0.853386354928181, -0.63296867063245, -0.527486151545778, -0.361277864998242, 
-0.257665212366851, -0.109270291541468, 0, 0.109270291541468, 
0.257665212366851, 0.361277864998242, 0.527486151545778, 0.63296867063245, 
0.853386354928181, 0.98947894198681, 1.18449733575892, 1.29362975715702, 
1.43542615745848, 1.60575660667247, 1.72750243012653, 1.88470374007828, 
1.95526398213212, 2.09546783234301, 2.36547969703899, 2.4408738658527, 
2.66092057836039, 2.72993249556762, 2.90517151506904, 3.0034966287813, 
3.37586125647396, 3.49609868983868, 3.56271256245504, 3.66175435590196, 
3.81741171570944, 3.95528199743041, 4.0828498417172, 4.30668996362841, 
4.39683466679171, 4.7660441793448, 5.05729667581875, 5.24485270997044, 
5.4543516801245, 5.69615454359131, 5.88245015332806, 6.09621085755895, 
6.40598087538929, 6.63903257406218, 6.94590909664862, 7.3962484443768, 
8.26548763467919, 8.74647670464071, 9.20790894914246, 9.55507848352318, 
10.7200919648493, 12.1406211639974, 14.5543581356252, 14.7690673280818, 
-13.7079821475458, -13.4498703618915, -11.67838231268, -10.4589486406842, 
-8.9432388382521, -8.58312548137122, -8.14102991846389, -7.71079209128989, 
-6.95240042017031, -6.66414427349685, -6.40033205538623, -6.13816822549321, 
-5.77208382991545, -5.49527630669887, -5.33154964830415, -5.12782641892739, 
-4.93206161073643, -4.72556232300793, -4.52080276980657, -4.1694078333758, 
-4.03956026669583, -3.90869860153294, -3.79104380757601, -3.69124767313376, 
-3.47159857371935, -3.3643163654408, -3.29467696235366, -3.16605701449292, 
-2.84435464789616, -2.71650210221017, -2.59690597248341, -2.52388797476942, 
-2.34094207608544, -2.20427426100811, -1.83879580218285, -1.72737794398069, 
-1.6454056454373, -1.5042411957216, -1.38609220687676, -1.2432788707001, 
-1.1225617148797, -1.01318771357089, -0.90038209504245, -0.773284479514442, 
-0.640368323748707, -0.555178375238413, -0.377358821158776, -0.230347860323025, 
-0.110436162251717, 0, 0.110436162251717, 0.230347860323025, 
0.377358821158776, 0.555178375238413, 0.640368323748707, 0.773284479514442, 
0.90038209504245, 1.01318771357089, 1.1225617148797, 1.2432788707001, 
1.38609220687676, 1.5042411957216, 1.6454056454373, 1.72737794398069, 
1.83879580218285, 2.20427426100811, 2.34094207608544, 2.52388797476942, 
2.59690597248341, 2.71650210221017, 2.84435464789616, 3.16605701449292, 
3.29467696235366, 3.3643163654408, 3.47159857371935, 3.69124767313376, 
3.79104380757601, 3.90869860153294, 4.03956026669583, 4.1694078333758, 
4.52080276980657, 4.72556232300793, 4.93206161073643, 5.12782641892739, 
5.33154964830415, 5.49527630669887, 5.77208382991545, 6.13816822549321, 
6.40033205538623, 6.66414427349685, 6.95240042017031, 7.71079209128989, 
8.14102991846389, 8.58312548137122, 8.9432388382521, 10.4589486406842, 
11.67838231268, 13.4498703618915, 13.7079821475458, -14.358609077878, 
-14.1271105147046, -11.9618138886078, -10.6190742201334, -9.31840132054895, 
-8.96622474353695, -8.51227248333579, -8.05091545299969, -7.22455526958365, 
-6.83691436333096, -6.54669635165921, -6.30238324376159, -5.97082920578328, 
-5.73268017960003, -5.55511488901834, -5.32804232266972, -5.12385612117062, 
-4.92897229198519, -4.67117775232928, -4.30885942992513, -4.20335651783943, 
-4.0154831357938, -3.89174994433905, -3.76860783727992, -3.58819663306074, 
-3.48596721027473, -3.41818297549918, -3.29470294456033, -2.94193593581688, 
-2.83218876260999, -2.67847401240583, -2.60791242809822, -2.40221737689215, 
-2.3031208003073, -1.99617971268181, -1.86711111167336, -1.79213635811389, 
-1.64113856670334, -1.52078410227216, -1.36109806339877, -1.22745572081485, 
-1.11822984936273, -0.955013720375685, -0.822400646878094, -0.635831069171161, 
-0.538198299721656, -0.367498441110635, -0.24709807532094, -0.109721283846771, 
0, 0.109721283846771, 0.24709807532094, 0.367498441110635, 0.538198299721656, 
0.635831069171161, 0.822400646878094, 0.955013720375685, 1.11822984936273, 
1.22745572081485, 1.36109806339877, 1.52078410227216, 1.64113856670334, 
1.79213635811389, 1.86711111167336, 1.99617971268181, 2.3031208003073, 
2.40221737689215, 2.60791242809822, 2.67847401240583, 2.83218876260999, 
2.94193593581688, 3.29470294456033, 3.41818297549918, 3.48596721027473, 
3.58819663306074, 3.76860783727992, 3.89174994433905, 4.0154831357938, 
4.20335651783943, 4.30885942992513, 4.67117775232928, 4.92897229198519, 
5.12385612117062, 5.32804232266972, 5.55511488901834, 5.73268017960003, 
5.97082920578328, 6.30238324376159, 6.54669635165921, 6.83691436333096, 
7.22455526958365, 8.05091545299969, 8.51227248333579, 8.96622474353695, 
9.31840132054895, 10.6190742201334, 11.9618138886078, 14.1271105147046, 
14.358609077878, -14.5672256639001, -14.3442603466748, -12.0526932005212, 
-10.6704167793823, -9.43869316924387, -9.08906143604798, -8.63130745231583, 
-8.15997238138419, -7.31181881941087, -6.89231124997616, -6.59362650222709, 
-6.3550370379524, -6.03455479085867, -5.80880119944129, -5.62679869904323, 
-5.39223941682433, -5.1853529853784, -4.99419352909143, -4.7193938866676, 
-4.35357309705323, -4.255876038818, -4.04972245780601, -3.92404029302206, 
-3.79341254883719, -3.62558255722496, -3.52497325621722, -3.4577838613747, 
-3.33595188997765, -2.97322433504632, -2.86928245642403, -2.70462793445213, 
-2.63485397290467, -2.42186464857093, -2.33481488889686, -2.04664318502277, 
-1.91191506158551, -1.8391839961936, -1.68503324864501, -1.56397162198931, 
-1.39887553095015, -1.26108886508264, -1.15191048988921, -0.972530768371285, 
-0.838149222100249, -0.634376246882453, -0.532753819606308, -0.364336815412981, 
-0.252468853112474, -0.109492065710681, 0, 0.109492065710681, 
0.252468853112474, 0.364336815412981, 0.532753819606308, 0.634376246882453, 
0.838149222100249, 0.972530768371285, 1.15191048988921, 1.26108886508264, 
1.39887553095015, 1.56397162198931, 1.68503324864501, 1.8391839961936, 
1.91191506158551, 2.04664318502277, 2.33481488889686, 2.42186464857093, 
2.63485397290467, 2.70462793445213, 2.86928245642403, 2.97322433504632, 
3.33595188997765, 3.4577838613747, 3.52497325621722, 3.62558255722496, 
3.79341254883719, 3.92404029302206, 4.04972245780601, 4.255876038818, 
4.35357309705323, 4.7193938866676, 4.99419352909143, 5.1853529853784, 
5.39223941682433, 5.62679869904323, 5.80880119944129, 6.03455479085867, 
6.3550370379524, 6.59362650222709, 6.89231124997616, 7.31181881941087, 
8.15997238138419, 8.63130745231583, 9.08906143604798, 9.43869316924387, 
10.6704167793823, 12.0526932005212, 14.3442603466748, 14.5672256639001, 
-13.6245844768687, -13.3630613956461, -11.6420519179073, -10.4384236674326, 
-8.89515033208928, -8.53401963497411, -8.0934438691888, -7.66719491633901, 
-6.91751548158816, -6.64199852086489, -6.38157100998465, -6.11711906602055, 
-5.74660855271358, -5.46484576488352, -5.30289294897202, -5.10216264876024, 
-4.90747729878566, -4.69948913603343, -4.50152763272595, -4.15153286112639, 
-4.01856478499323, -3.89501090892983, -3.77813524686729, -3.68133161034538, 
-3.45665297878437, -3.34872310204811, -3.27884590260074, -3.14956711773407, 
-2.83184663180451, -2.70167333082681, -2.5864505421683, -2.51311768021067, 
-2.33308777876224, -2.19160406439047, -1.81862225736669, -1.70946687980764, 
-1.6265976326061, -1.48669362532537, -1.36882733539455, -1.22817675030816, 
-1.10911635110033, -0.999723362435733, -0.89337938721453, -0.766988745723311, 
-0.640949911207503, -0.557354889428034, -0.37862272938278, -0.228200809764493, 
-0.110527795707098, 0, 0.110527795707098, 0.228200809764493, 
0.37862272938278, 0.557354889428034, 0.640949911207503, 0.766988745723311, 
0.89337938721453, 0.999723362435733, 1.10911635110033, 1.22817675030816, 
1.36882733539455, 1.48669362532537, 1.6265976326061, 1.70946687980764, 
1.81862225736669, 2.19160406439047, 2.33308777876224, 2.51311768021067, 
2.5864505421683, 2.70167333082681, 2.83184663180451, 3.14956711773407, 
3.27884590260074, 3.34872310204811, 3.45665297878437, 3.68133161034538, 
3.77813524686729, 3.89501090892983, 4.01856478499323, 4.15153286112639, 
4.50152763272595, 4.69948913603343, 4.90747729878566, 5.10216264876024, 
5.30289294897202, 5.46484576488352, 5.74660855271358, 6.11711906602055, 
6.38157100998465, 6.64199852086489, 6.91751548158816, 7.66719491633901, 
8.0934438691888, 8.53401963497411, 8.89515033208928, 10.4384236674326, 
11.6420519179073, 13.3630613956461, 13.6245844768687, -13.7513240158161, 
-13.4949850845108, -11.6972632618919, -10.4696154936035, -8.96823049188587, 
-8.60864584793023, -8.16576044465774, -7.73344959477095, -6.97053016408726, 
-6.67565344738059, -6.41008219291174, -6.14910749861269, -5.78532336166338, 
-5.51109109533802, -5.34644256890291, -5.14116391069274, -4.94483810678764, 
-4.73911258917317, -4.53082008138683, -4.17869747763421, -4.05047164341461, 
-3.91581211159757, -3.79775240187192, -3.6964010627146, -3.47936581711638, 
-3.37242020290272, -3.30290438286576, -3.17462683337767, -2.85085507867997, 
-2.72420863226898, -2.60233967200701, -2.52948530961352, -2.34502396371101, 
-2.21085897720345, -1.84928001732781, -1.73668634525457, -1.65518019199163, 
-1.51336068884896, -1.39506478104353, -1.25112746056258, -1.1295492863675, 
-1.02018515280999, -0.904021410598258, -0.776556379825624, -0.640066072057238, 
-0.554047238235075, -0.376701966557133, -0.231463685042374, -0.110388540236378, 
0, 0.110388540236378, 0.231463685042374, 0.376701966557133, 0.554047238235075, 
0.640066072057238, 0.776556379825624, 0.904021410598258, 1.02018515280999, 
1.1295492863675, 1.25112746056258, 1.39506478104353, 1.51336068884896, 
1.65518019199163, 1.73668634525457, 1.84928001732781, 2.21085897720345, 
2.34502396371101, 2.52948530961352, 2.60233967200701, 2.72420863226898, 
2.85085507867997, 3.17462683337767, 3.30290438286576, 3.37242020290272, 
3.47936581711638, 3.6964010627146, 3.79775240187192, 3.91581211159757, 
4.05047164341461, 4.17869747763421, 4.53082008138683, 4.73911258917317, 
4.94483810678764, 5.14116391069274, 5.34644256890291, 5.51109109533802, 
5.78532336166338, 6.14910749861269, 6.41008219291174, 6.67565344738059, 
6.97053016408726, 7.73344959477095, 8.16576044465774, 8.60864584793023, 
8.96823049188587, 10.4696154936035, 11.6972632618919, 13.4949850845108, 
13.7513240158161, -13.5038153563633, -13.2373523390222, -11.5894414578226, 
-10.4087012189772, -8.82551281645418, -8.46290889731311, -8.02453396711809, 
-7.60406134878737, -6.86699820314081, -6.6099290032563, -6.3544029256183, 
-6.08663753750477, -5.70971751250438, -5.42077894932731, -5.26139485499848, 
-5.06499864973269, -4.87187647554418, -4.66173225584577, -4.47361508632088, 
-4.12564790942336, -3.98816098787005, -3.87518960476143, -3.75944221250401, 
-3.66697204643782, -3.43501009186589, -3.32614231903036, -3.2559207639547, 
-3.12568790968636, -2.81373363068119, -2.68019961742924, -2.57130991397796, 
-2.49752109350884, -2.32171388099973, -2.17325620779303, -1.78940871644707, 
-1.68352966297731, -1.59936153416788, -1.46128278798956, -1.34382587758861, 
-1.20630719708568, -1.08964596607244, -0.980225481600834, -0.88323868593752, 
-0.757871821632761, -0.641792114656659, -0.560506724513046, -0.380453009333927, 
-0.225091641300559, -0.110660491161603, 0, 0.110660491161603, 
0.225091641300559, 0.380453009333927, 0.560506724513046, 0.641792114656659, 
0.757871821632761, 0.88323868593752, 0.980225481600834, 1.08964596607244, 
1.20630719708568, 1.34382587758861, 1.46128278798956, 1.59936153416788, 
1.68352966297731, 1.78940871644707, 2.17325620779303, 2.32171388099973, 
2.49752109350884, 2.57130991397796, 2.68019961742924, 2.81373363068119, 
3.12568790968636, 3.2559207639547, 3.32614231903036, 3.43501009186589, 
3.66697204643782, 3.75944221250401, 3.87518960476143, 3.98816098787005, 
4.12564790942336, 4.47361508632088, 4.66173225584577, 4.87187647554418, 
5.06499864973269, 5.26139485499848, 5.42077894932731, 5.70971751250438, 
6.08663753750477, 6.3544029256183, 6.6099290032563, 6.86699820314081, 
7.60406134878737, 8.02453396711809, 8.46290889731311, 8.82551281645418, 
10.4087012189772, 11.5894414578226, 13.2373523390222, 13.5038153563633, 
-12.8877947524831, -12.5961340486959, -11.3210853809037, -10.2570925911286, 
-8.47030492676585, -8.10018637873416, -7.67303749757961, -7.28202887686486, 
-6.60931905266524, -6.44634841642492, -6.21582362929168, -5.93115698481963, 
-5.5215432443443, -5.19600239869575, -5.04972087076752, -4.87543206990054, 
-4.69028336184037, -4.46914150055587, -4.33123842894087, -3.99361363184664, 
-3.833076928421, -3.77408485453713, -3.6640925546724, -3.59372660759739, 
-3.32461379011727, -3.21096198541142, -3.13898393694403, -3.00388455382712, 
-2.72134261347931, -2.57066623804085, -2.49408041291093, -2.41796583370138, 
-2.26369776447253, -2.07966723692233, -1.64375650300888, -1.54786821816088, 
-1.46043531083332, -1.33166687876378, -1.21629813646533, -1.09475471308712, 
-0.990331188483095, -0.880770453063485, -0.831512873094893, -0.711368103958197, 
-0.64608803628934, -0.576583643383317, -0.389788923647592, -0.219325408944189, 
-0.101244293663156, 0, 0.101244293663156, 0.219325408944189, 
0.389788923647592, 0.576583643383317, 0.64608803628934, 0.711368103958197, 
0.831512873094893, 0.880770453063485, 0.990331188483095, 1.09475471308712, 
1.21629813646533, 1.33166687876378, 1.46043531083332, 1.54786821816088, 
1.64375650300888, 2.07966723692233, 2.26369776447253, 2.41796583370138, 
2.49408041291093, 2.57066623804085, 2.72134261347931, 3.00388455382712, 
3.13898393694403, 3.21096198541142, 3.32461379011727, 3.59372660759739, 
3.6640925546724, 3.77408485453713, 3.833076928421, 3.99361363184664, 
4.33123842894087, 4.46914150055587, 4.69028336184037, 4.87543206990054, 
5.04972087076752, 5.19600239869575, 5.5215432443443, 5.93115698481963, 
6.21582362929168, 6.44634841642492, 6.60931905266524, 7.28202887686486, 
7.67303749757961, 8.10018637873416, 8.47030492676585, 10.2570925911286, 
11.3210853809037, 12.5961340486959, 12.8877947524831, -12.6000848203634, 
-12.2966556390103, -11.1957507602953, -10.1862843945321, -8.30440651819497, 
-7.93147284818737, -7.50817793772083, -7.13162491301438, -6.48897104737938, 
-6.36994876479492, -6.15110072929745, -5.85854042138457, -5.43365721329602, 
-5.09102141962306, -4.95085939235108, -4.78689576531572, -4.60547103236952, 
-4.37919276705198, -4.26474198682156, -3.93194755639431, -3.77843705689023, 
-3.70907277842741, -3.61955988253518, -3.55951762156004, -3.27305364378077, 
-3.15716747633446, -3.08436906473098, -2.94699678899349, -2.67819176248474, 
-2.51950911610342, -2.45801068672049, -2.38080987129559, -2.23660157184075, 
-2.03595688651075, -1.58836441712333, -1.47187389747016, -1.39555037998287, 
-1.27113029247092, -1.15673682064109, -1.0426545765059, -0.943946623196274, 
-0.835837575946843, -0.805837349555374, -0.689648730659341, -0.648094429117022, 
-0.584092303333525, -0.394149224677363, -0.222824659020402, -0.0906541511144734, 
0, 0.0906541511144734, 0.222824659020402, 0.394149224677363, 
0.584092303333525, 0.648094429117022, 0.689648730659341, 0.805837349555374, 
0.835837575946843, 0.943946623196274, 1.0426545765059, 1.15673682064109, 
1.27113029247092, 1.39555037998287, 1.47187389747016, 1.58836441712333, 
2.03595688651075, 2.23660157184075, 2.38080987129559, 2.45801068672049, 
2.51950911610342, 2.67819176248474, 2.94699678899349, 3.08436906473098, 
3.15716747633446, 3.27305364378077, 3.55951762156004, 3.61955988253518, 
3.70907277842741, 3.77843705689023, 3.93194755639431, 4.26474198682156, 
4.37919276705198, 4.60547103236952, 4.78689576531572, 4.95085939235108, 
5.09102141962306, 5.43365721329602, 5.85854042138457, 6.15110072929745, 
6.36994876479492, 6.48897104737938, 7.13162491301438, 7.50817793772083, 
7.93147284818737, 8.30440651819497, 10.1862843945321, 11.1957507602953, 
12.2966556390103, 12.6000848203634, -12.7233949898779, -12.425009683628, 
-11.2494681735225, -10.2166322197219, -8.3755092456272, -8.00338523998922, 
-7.57923229725886, -7.19608684570266, -6.5405512372713, -6.40269304276938, 
-6.17884044516668, -5.8896632980985, -5.47132446137006, -5.13601542532135, 
-4.9932306291456, -4.82484171541241, -4.64182091659811, -4.41774407285591, 
-4.29324182862204, -3.95837714178017, -3.80090594237893, -3.73788575810611, 
-3.6386462286676, -3.57417931862452, -3.29515190899568, -3.18022337150066, 
-3.10777656095811, -2.97137842876953, -2.69668587115743, -2.54143464829308, 
-2.47346988209172, -2.39673461879726, -2.24821478269518, -2.05469079214647, 
-1.61210502089736, -1.50444445385474, -1.42335954097761, -1.29707578786137, 
-1.18226432293022, -1.06498427720905, -0.963826675880699, -0.85422851115692, 
-0.817708608597364, -0.698957479868998, -0.647234505242058, -0.580874151897233, 
-0.392280434624987, -0.221324908501217, -0.0951930012794266, 
0, 0.0951930012794266, 0.221324908501217, 0.392280434624987, 
0.580874151897233, 0.647234505242058, 0.698957479868998, 0.817708608597364, 
0.85422851115692, 0.963826675880699, 1.06498427720905, 1.18226432293022, 
1.29707578786137, 1.42335954097761, 1.50444445385474, 1.61210502089736, 
2.05469079214647, 2.24821478269518, 2.39673461879726, 2.47346988209172, 
2.54143464829308, 2.69668587115743, 2.97137842876953, 3.10777656095811, 
3.18022337150066, 3.29515190899568, 3.57417931862452, 3.6386462286676, 
3.73788575810611, 3.80090594237893, 3.95837714178017, 4.29324182862204, 
4.41774407285591, 4.64182091659811, 4.82484171541241, 4.9932306291456, 
5.13601542532135, 5.47132446137006, 5.8896632980985, 6.17884044516668, 
6.40269304276938, 6.5405512372713, 7.19608684570266, 7.57923229725886, 
8.00338523998922, 8.3755092456272, 10.2166322197219, 11.2494681735225, 
12.425009683628, 12.7233949898779, -12.9701665831908, -12.6818752140478, 
-11.3569688906404, -10.2773650952434, -8.51780191626772, -8.14868819459235, 
-7.72003821070641, -7.32508978114711, -6.64377488616525, -6.46822176338875, 
-6.23435390289731, -5.95194722735932, -5.54670516078474, -5.22605862710606, 
-5.07802507599128, -4.90078016073291, -4.71456527242172, -4.49489397213016, 
-4.35027647059818, -4.01126873151645, -3.85381415345849, -3.78760418054142, 
-3.67684233255883, -3.6035206970325, -3.33937554552141, -3.22636344257365, 
-3.15462026543263, -3.02017161524238, -2.73369677368098, -2.58531260689116, 
-2.50440723533775, -2.42860364735808, -2.27145544935968, -2.09218158273497, 
-1.66032132882236, -1.56891953844307, -1.47901197414181, -1.34899860381407, 
-1.23335063996306, -1.10967106859385, -1.00361116644947, -0.894069184830091, 
-0.838429443534018, -0.717586396553344, -0.645513602695347, -0.574433901587114, 
-0.388540562231589, -0.218323567844169, -0.104276269037671, 0, 
0.104276269037671, 0.218323567844169, 0.388540562231589, 0.574433901587114, 
0.645513602695347, 0.717586396553344, 0.838429443534018, 0.894069184830091, 
1.00361116644947, 1.10967106859385, 1.23335063996306, 1.34899860381407, 
1.47901197414181, 1.56891953844307, 1.66032132882236, 2.09218158273497, 
2.27145544935968, 2.42860364735808, 2.50440723533775, 2.58531260689116, 
2.73369677368098, 3.02017161524238, 3.15462026543263, 3.22636344257365, 
3.33937554552141, 3.6035206970325, 3.67684233255883, 3.78760418054142, 
3.85381415345849, 4.01126873151645, 4.35027647059818, 4.49489397213016, 
4.71456527242172, 4.90078016073291, 5.07802507599128, 5.22605862710606, 
5.54670516078474, 5.95194722735932, 6.23435390289731, 6.46822176338875, 
6.64377488616525, 7.32508978114711, 7.72003821070641, 8.14868819459235, 
8.51780191626772, 10.2773650952434, 11.3569688906404, 12.6818752140478, 
12.9701665831908), .Dim = c(99L, 11L))

Каждый столбец - это функция для меня, которую я хочу интегрировать, и поместить значения в мой integr матрица:

 integr=matrix(0,11)

 for (t in 1:11){
     integrating = approxfun(thau,func[,t],rule=2)
     integr[t,1]=integrate(integrating, lower = 0.01, upper = 0.5,subdivisions = 1000)$value
}

У меня есть это сообщение об ошибке:

Error in integrate(integrating, lower = 0.01, upper = 0.5, subdivisions = 1000) : 
  extremely bad integrand behaviour

Как мне обойти эту проблему и продолжать пользоваться функцией integrate в R. Буду ли я делать какой-то нелинейный подход? Если так, как я могу это сделать?

Большое спасибо.

1 ответ

Решение

Во-первых, очень интересно увидеть довольно много вопросов о численном интегрировании, касающихся квантильной функции, за последние 10 дней или около того. Например:

Обратите внимание, насколько этот вопрос похож на первый. Хотя ты не упомянул что thau есть, я верю, что это thau <- seq(0.01, 0.99, 0.01), Давайте сделаем набросок вашего func матрица против thau:

matplot(thau, func, type = "l")

Кроме того, давайте проверим, что все столбцы func монотонно увеличиваются:

all(diff(func) > 0)
# [1] TRUE

По сути, ваш вопрос использует ответ, который я дал в 1-м связанном вопросе (обоснование rule = 2 дается в 3-м связанном вопросе, хотя). Но благодаря вашему вопросу; Теперь я понимаю, что есть некоторый потенциальный числовой недостаток.


Для меня сложно понять математику адаптивной квадратуры за ограниченное время, так как я не являюсь экспертом в этой области. Но для меня довольно удивительно, что когда-нибудь он потерпит неудачу в такой тривиальной задаче. Как я упоминал во втором связанном вопросе, мы можем даже использовать трапециевидное правило.

Когда я проверяю integrate, это 1-й столбец func а не 5-го, как вы сообщили, что не удается.

## get interpolation function for all columns in a list
flst <- lapply(1:ncol(func), function (i) approxfun(thau, func[,i], rule = 2))

## all OK excluding the 1st column
sapply(flst[-1], function (fun) integrate(fun, 0.01, 0.5)$value)
# [1] -2.010421 -2.088981 -2.114083 -2.000653 -2.015932 -1.986130 -1.912076
# [8] -1.877459 -1.892291 -1.921983

## the 1st one fails
integrate(flst[[1]], 0.01, 0.5)
#  extremely bad integrand behaviour

Как уже говорилось ранее, я считаю, что эта ошибка искусственная из-за простой природы проблемы. На самом деле, давайте рассмотрим

integrate(flst[[1]], 0.01 + .Machine$double.eps ^ 0.25, 0.5)
# -2.13653 with absolute error < 8.7e-05

integrate(flst[[1]], 0, 0.5)
# -2.286034 with absolute error < 0.00027

Они все работают.


Насколько я могу исследовать, integrate Функция использует две подпрограммы Фортрана:

  • dqags для определенного интеграла, способного иметь дело с особенностями конечных точек;
  • dqagi для неопределенного интеграла.

R документация для integrate не объясняет многое об обработке ошибок этих подпрограмм, но страница на Фортране делает немного. К сожалению, до сих пор не очень ясно, что такое "плохое поведение". Но достаточно ясно видеть, что независимо от того, что это за код ошибки, эти фортрановые подпрограммы всегда будут возвращать результат интеграции.

Посмотрите на исходный код integrate проверяет это. Результат интеграции сохраняется в переменной wk, затем swtich оператор используется для интерпретации целочисленного кода ошибки, хранящегося в wk$ierr:

res$message <- switch(wk$ierr + 1L, "OK", "maximum number of subdivisions reached", 
    "roundoff error was detected", "extremely bad integrand behaviour", 
    "roundoff error is detected in the extrapolation table", 
    "the integral is probably divergent", "the input is invalid")
if (wk$ierr == 6L || (wk$ierr > 0L && stop.on.error)) 
    stop(res$message)

if заявление после этого switch решает, хотим ли мы игнорировать любую ошибку. Обратите внимание, что есть stop.on.error аргумент в integrate ; если мы установим это FALSE вместо по умолчанию TRUE , integrate всегда будет работать Поэтому давайте сделаем

z <- integrate(flst[[1]], 0.01, 0.5, stop.on.error = FALSE)

str(z)
# $ value       : num -2.14
# $ abs.error   : num 0.000446
# $ subdivisions: int 69
# $ message     : chr "extremely bad integrand behaviour"
# $ call        : language integrate(f = flst[[1]], lower = 0.01, upper = 0.5, stop.on.error = FALSE)
# - attr(*, "class")= chr "integrate"

z$value
# [1] -2.138348

Это все, что я могу сделать на данный момент. Я верю, что в ближайшем будущем у меня будет возможность ознакомиться с Адаптивной квадратурой.

Другие вопросы по тегам