【问题标题】:Matlab integration issue, issue with input functionMatlab集成问题,输入功能问题
【发布时间】:2015-02-14 22:34:45
【问题描述】:

我正在尝试对一个函数进行数值积分,这对于扩展和分析工作来说是绝对可怕的。积分超过 dpsi 和 dtheta。如果我将变量存储为 sym,我被告知积分输入必须是双精度或单精度,如果我将其存储为双精度或单精度,我被告知我正在添加两个不同维度的张量。帮忙?

eta = input('Enter Dielectric Constant 1.5-4:  ');
psi = input('Enter Lattitude -pi/2 to +pi/2:  ');
theta = input('Enter Longitude -pi/2 to +pi/2:  ');
sdev = input('Enter STD DEV (roughness) maybe 0.1:  ');



dpsi = sym('dspi');
dtheta = sym('dtheta');

calpha = (cos(theta+dtheta)).*(cos(psi+dpsi));
rp01 = calpha-sqrt(eta-1+((calpha).^2));
rp02 = calpha+sqrt(eta-1+((calpha).^2));
rperp = (rp01./rp02).^2;
rp11 = ((eta.*calpha)-sqrt(eta-1+((calpha).^2)));
rp12 = ((eta.*calpha)+sqrt(eta-1+((calpha).^2)));
rpar = (rp11./rp12).^2;



fun = @(dtheta,dpsi) (rpar+rperp)
thetamax = (pi/2) - theta
psimax = (pi/2) - psi

q = integral2(fun,-pi/2,thetamax,-pi/2,psimax)

【问题讨论】:

  • 您也可以使用符号积分来整合符号表达式。查看doc sym/int 获取示例。

标签: matlab integration


【解决方案1】:

最简单的解决方案:

使用以下方法将符号表达式转换为实际的数值函数:

fun = matlabFunction((rpar+rperp),'vars',{dtheta,dpsi});

更好的解决方案:

首先避免符号化的东西,只定义一个函数:

function out = YOURFANCYFUNCTION(eta,psi,theta,sdev,dtheta,dpsi)
calpha = (cos(theta+dtheta)).*(cos(psi+dpsi));
rp01 = calpha-sqrt(eta-1+((calpha).^2));
rp02 = calpha+sqrt(eta-1+((calpha).^2));
rperp = (rp01./rp02).^2;
rp11 = ((eta.*calpha)-sqrt(eta-1+((calpha).^2)));
rp12 = ((eta.*calpha)+sqrt(eta-1+((calpha).^2)));
rpar = (rp11./rp12).^2;
out = (rpar+rperp);

你传递给积分的函数应该是:

fun = @(dtheta,dpsi) YOURFANCYFUNCTION(eta,psi,theta,sdev,dtheta,dpsi)

捕获eta,psi,theta,sdev 的当前值并生成dthetadpsi 变量。

顺便说一句:变量sdev 从未使用过。

【讨论】:

  • 我用你的代码替换了我的代码,得到的结果是函数定义在这种情况下是不允许的。我错过了一些微妙的东西吗?同样回答你的观点 sdev 来自早期的代码,它将在以后使用,但我想我会先解决简单的问题。您最简单的解决方案可以解决问题。你有没有我可以研究的参考资料,可以引导你完成这些事情,我可以在遇到麻烦时参考?
  • @user2720867:您必须将YOURFANCYFUNCTION 保存在单独的文件中。
  • 好吧,我只知道MATLAB docsgoogle。该文档有很好的示例来解释功能,并且大多数时候都非常有用。
猜你喜欢
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多