考虑C#中的以下签名:
double Divide(int numerator, int denominator);
Run Code Online (Sandbox Code Playgroud)
以下实现之间是否存在性能差异?
return (double)numerator / denominator;
return numerator / (double)denominator;
return (double)numerator / (double)denominator;
Run Code Online (Sandbox Code Playgroud)
我假设上述两个都返回相同的答案.
我错过了其他任何等效解决方案吗?
我从这里复制了一个示例项目,但我不明白它的一部分:(i - 0.5).为什么(i - 0.5)要计算?
double rectangle_integrate(double a, double b, int subintervals, double (*function)(double))
{
double result;
double interval;
int i;
interval=(b-a)/subintervals;
result=0;
for(i=1;i<=subintervals;i++){
result+=function(a+interval*(i-0.5));
}
result*=interval;
return result;
}
Run Code Online (Sandbox Code Playgroud) 
我们想要计算线性图中积分的值.为了更好地理解照片.假设总面积为1.我们想要找出某个部分的值是什么.例如,我们想要知道,如果一切都是指月份,那么总体100%中有多少%位于第10个月和第11个月内,而A最大值是24个.我们可以计算积分然后应该能够通过以下方式获得搜索区域: F(x) - F(x-1)我对以下代码感兴趣:
a <- 24
tab <-matrix(0,a,1)
tab <-cbind(seq(1,a),tab)
tab<-data.frame(tab)
#initialization for first point
tab[1,2] <- (2*tab[1,1] / a - tab[1,1]^2 / a^2)
#for loop for calculation of integral of each point - integral until to the area
for(i in 2:nrow(tab))
{tab[i,2] <- (2*tab[i,1] / a - tab[i,1]^2/ a^2) - sum(tab[1,2]:tab[i-1,2])}
#plotting
plot(tab[,2], type="l")
Run Code Online (Sandbox Code Playgroud)
如果你看到情节 - 这很令人困惑.任何想法如何处理这个正确吗?
我正在编写一个脚本,允许人们执行涉及积分的特定数学运算。对于单积分,我使用scipy.integrate.quad. 但在某些情况下,我想要执行三重多元积分,如下所示:
在大多数情况下,变量不应超过 3 个,而且我愿意使用不超出三重积分的东西。有谁知道任何包、函数甚至脚本可以让我解决类似所示方程的问题?
为了编写最简单的解决方案,我可以使用黎曼和来近似积分,我遇到了一个奇怪的问题:如果用户请求的分区数超过10,则程序失败.有什么想法吗?这是代码:
// The Integral
#include <algorithm>
#include <iomanip>
#include <ios>
#include <iostream>
#include <stdexcept>
#include <iomanip>
using std::cin; using std::cout;
using std::endl;
int func (int x);
int main ()
{
cout << "Please enter left and right bounds: ";
int left, right;
cin >> left >> right;
cout << "Please enter a # of partitions (>0): ";
int R;
cin >> R;
int width = (right - left) / R;
int total = 0;
for (int i = 0; i …Run Code Online (Sandbox Code Playgroud) 我有一组点,在这些点上我使用 scipy 来计算插值多项式。我希望拥有该函数的原语
self.p=interpolate.interp1d(self.__discreteDistribution['x'], self.__discreteDistribution['y'], kind='cubic')
Run Code Online (Sandbox Code Playgroud)
我可以轻松地使用 scipy 计算一个区间内的积分值,使用
integrate.quad(self.p, 0, max)
Run Code Online (Sandbox Code Playgroud)
我想要的是拥有 self.p() 的原语。我找到了 sympy,但我没有插值多项式的分析版本。
在这种情况下你会做什么?
为了解决不确定的积分问题,我提出了一个与本书解决方案不一致的解决方案.为了检查我的解决方案,我尝试使用此代码解决问题:
syms x
question=int(1/(x*(1+x^5)^0.5))`
mysolution=(1/5)*(log(((sqrt(1+x^5))-1)/(sqrt(1+x^5)+1)))
x=3
eval(question)
eval(mysolution)
Run Code Online (Sandbox Code Playgroud)
结果导致:
ans =-0.0256 - 0.6283i
ans =-0.0256
Run Code Online (Sandbox Code Playgroud)
我必须找到一个不定积分的解决方案但是当我给MATLAB这个问题(解决不定积分)时,它给了另一个解决方案.为了检查我的解决方案是否是正确的,我给x使用值3 syms和eval,所以MATLAB应该显示我的回答和他自己的答案与假设x=3.
MATLAB答案的真实部分与我的答案相同,但它包含一个虚构的部分,这与我的解决方案不符.事实上,我的答案x=3并不包含任何想象中的部分.有什么不对,为什么会这样?
我有一个需要绘制的方程式,并且图表输出不正确.
方程式如下:
情节应如下所示:
但我的代码:
clear; clc; close all;
eta = 376.7303134617706554679; % 120pi
ka = 4;
N = 24;
coeff = (2)/(pi*eta*ka);
Jz = 0;
theta = [0;0.0351015938948580;0.0702031877897160;0.105304781684574;0.140406375579432;0.175507969474290;0.210609563369148;0.245711157264006;0.280812751158864;0.315914345053722;0.351015938948580;0.386117532843438;0.421219126738296;0.456320720633154;0.491422314528012;0.526523908422870;0.561625502317728;0.596727096212586;0.631828690107444;0.666930284002302;0.702031877897160;0.737133471792019;0.772235065686877;0.807336659581734;0.842438253476592;0.877539847371451;0.912641441266309;0.947743035161167;0.982844629056025;1.01794622295088;1.05304781684574;1.08814941074060;1.12325100463546;1.15835259853031;1.19345419242517;1.22855578632003;1.26365738021489;1.29875897410975;1.33386056800460;1.36896216189946;1.40406375579432;1.43916534968918;1.47426694358404;1.50936853747890;1.54447013137375;1.57957172526861;1.61467331916347;1.64977491305833;1.68487650695319;1.71997810084804;1.75507969474290;1.79018128863776;1.82528288253262;1.86038447642748;1.89548607032233;1.93058766421719;1.96568925811205;2.00079085200691;2.03589244590177;2.07099403979662;2.10609563369148;2.14119722758634;2.17629882148120;2.21140041537606;2.24650200927091;2.28160360316577;2.31670519706063;2.35180679095549;2.38690838485035;2.42200997874520;2.45711157264006;2.49221316653492;2.52731476042978;2.56241635432464;2.59751794821949;2.63261954211435;2.66772113600921;2.70282272990407;2.73792432379893;2.77302591769378;2.80812751158864;2.84322910548350;2.87833069937836;2.91343229327322;2.94853388716807;2.98363548106293;3.01873707495779;3.05383866885265;3.08894026274751;3.12404185664236;-3.12404185664236;-3.08894026274751;-3.05383866885265;-3.01873707495779;-2.98363548106293;-2.94853388716807;-2.91343229327322;-2.87833069937836;-2.84322910548350;-2.80812751158864;-2.77302591769378;-2.73792432379893;-2.70282272990407;-2.66772113600921;-2.63261954211435;-2.59751794821949;-2.56241635432464;-2.52731476042978;-2.49221316653492;-2.45711157264006;-2.42200997874520;-2.38690838485035;-2.35180679095549;-2.31670519706063;-2.28160360316577;-2.24650200927091;-2.21140041537605;-2.17629882148120;-2.14119722758634;-2.10609563369148;-2.07099403979662;-2.03589244590177;-2.00079085200691;-1.96568925811205;-1.93058766421719;-1.89548607032233;-1.86038447642748;-1.82528288253262;-1.79018128863776;-1.75507969474290;-1.71997810084804;-1.68487650695319;-1.64977491305833;-1.61467331916347;-1.57957172526861;-1.54447013137375;-1.50936853747890;-1.47426694358404;-1.43916534968918;-1.40406375579432;-1.36896216189946;-1.33386056800461;-1.29875897410975;-1.26365738021489;-1.22855578632003;-1.19345419242517;-1.15835259853032;-1.12325100463546;-1.08814941074060;-1.05304781684574;-1.01794622295088;-0.982844629056025;-0.947743035161167;-0.912641441266309;-0.877539847371451;-0.842438253476592;-0.807336659581735;-0.772235065686877;-0.737133471792019;-0.702031877897161;-0.666930284002303;-0.631828690107445;-0.596727096212586;-0.561625502317728;-0.526523908422871;-0.491422314528013;-0.456320720633154;-0.421219126738296;-0.386117532843439;-0.351015938948581;-0.315914345053722;-0.280812751158864;-0.245711157264007;-0.210609563369149;-0.175507969474290;-0.140406375579432;-0.105304781684575;-0.0702031877897167;-0.0351015938948580;-2.44929359829471e-16];
for n = 0:N
if n == 0
kappa = 1;
else
kappa = 2;
end
num = (-1.^(n)).*(1i.^(n)).*(cos(n.*theta)).*(kappa);
Hankel = besselh(n,2,ka);
Jz = Jz + ((num./Hankel));
end
Jz = Jz.*coeff;
x = linspace(0,2*pi,length(theta));
plot(x,abs(Jz));
Run Code Online (Sandbox Code Playgroud)
注意,θ的值是圆柱体周围的离散角度.该方程是2D中TMz偏振圆柱的电流密度的解析解.
我希望能够在 R 中找到任意函数的反导数。
假设我已经得到f = 1/(2*x^2)并想要找到 F,顺便说一下,它很容易手工计算。
我尝试了以下方法:
f<- function (x) {1/(sqrt(x))}
F = antiD(f)
这给了我:
Error: no applicable method for 'rhs' applied to an object of class "function"
有人可以在这里推动我朝着正确的方向前进吗?
我在此页面中找到了以下代码来计算二重积分。每当我在所有变量都声明为 的情况下运行它时float,它都会给出示例积分的正确结果,即 3.91905。但是,如果我只是将所有float变量更改为double,则程序会针对该积分给出完全错误的结果 ( 2.461486)。
你能帮我理解为什么会发生这种情况吗?我希望使用精度能得到更好的结果double,但这里的情况显然并非如此。
以下是从上述网站粘贴的代码。
// C++ program to calculate
// double integral value
#include <bits/stdc++.h>
using namespace std;
// Change the function according to your need
float givenFunction(float x, float y)
{
return pow(pow(x, 4) + pow(y, 5), 0.5);
}
// Function to find the double integral value
float doubleIntegral(float h, float k,
float lx, float ux,
float ly, float uy)
{
int nx, ny;
// …Run Code Online (Sandbox Code Playgroud) 尝试使用蒙特卡洛方法求 x^2 cosx 的积分(o 到 pi/2)。这是我第一次,所以需要一些指导。要生成随机数,我应该将积分的极限变换为 (0,1) 还是可以生成具有给定极限(0 到 pi/2)的随机数?
像这样的东西?
将积分从 (o 到 pi/2) 转换为 (0to 1),从而将函数转换为 1/x^2 sinx 生成随机数 rnorm(10000,0,1)
或者有没有办法生成像这样的随机数 rnorm(10000,0,1)*pi/2 而不必转换积分的极限