EDA365电子论坛网

标题: 求解多元积分 [打印本页]

作者: shuddkk    时间: 2020-12-9 11:08
标题: 求解多元积分
clc;%总润滑方程求解
/ V( _; o! Q5 {$ Q+ V, vclear;1 a+ k" O8 D$ b1 e
close all6 F0 R9 t; J0 C
syms a b c d e x L O P U t o p. K- C; r# H' N# d8 s& k
K=5;%常量
/ M1 g" {) _6 B/ Sh=2;%常量 多孔储液介质厚度
: g) _- \' t4 `- r9 A8 w; YD=0.012;%半径
% v8 |; w6 }& e' nH=0.2;%压缩后的高度
7 c5 R' Z" Q- |$ n7 ]$ T: vL=@(x)0.2.*x;" j. ^, y* N$ s0 K* G
% % % % 计算与孔隙率相关的brinkman数
% Y, D" W: g' V/ ~9 C  W' lc=@(t)((t.^3.*D.^2)./(36.*(1-t).^2.*K)).^2;%渗透率求解/ d7 t4 ^3 Y1 A; ^2 D
t1=0.0033;%孔隙率
' I) m2 }) `$ x! u/ M9 Ta=L./c(t1);%a为brinkman数
# H5 I. `4 _8 C: eb=H./c(t1);$ W& U$ g- o# U8 f0 s7 \+ q4 T
% % % % 计算方程中的f,控制此处f不与x一起变化
5 M9 o/ h0 P  F  l. w0 Cf=(cos(h.*b.*H)-1)/(b.*sin(h.*b.*H));) i" l. n, v! q, R) q: Z5 y  K; O
% % % % 计算方程中常数余项C,此处x只与a有关
0 G+ T3 ?! M3 o" Do=@(x)(a(x).^2.*(H-f)./(2.*f-H));9 L& U1 F) O$ w
p=@(x)(a(x).^2./(2.*f-H));
0 i( ~9 m  e. ]O=int(o(x),0,1);
1 n2 f; i+ T2 @. x( }- jP=int(p,0,1);2 {; S) x  W! x
c=O./P;
! g! x* A3 V/ \8 ]7 u5 O. ~1 y' V. p%%%%计算润滑升力: Z7 x* H7 {; ], d3 q9 Z, J- J1 x$ W" R
d=@(x)(1-x).*L./c(t1).^2.*(H-f+c)./(2.*f-H);" M/ p3 {5 P2 E5 S/ G1 o$ |
U=int(d,0,1);! ]9 @$ a2 q/ a4 N1 t2 L: H
我的代码一直在报错,请求高手帮忙看看哪里出了问题。: j% a7 a- W+ [: W9 X. R
错误提示:未定义与 'function_handle' 类型的输入参数相对应的函数 'rdivide'。, j. h( R+ s, L! X
4 W. d1 B- {: }: U
出错 runhuashengli (line 13)/ u, i# J8 Z+ H# R9 D5 g7 X) f
a=L./c(t1);%a为brinkman数
7 I" M4 N" I/ Y  E! ?' D: w
作者: llbnmo    时间: 2020-12-9 11:29
错的地方太多,你需要先搞清楚MATLAB匿名函数的定义方法和调用的语法规则$ `% ~* \8 u9 b3 M: {1 _6 |, n( A; V

作者: kekek    时间: 2020-12-9 13:23
前面既然使用了匿名函数 L=@(x)0.2.*x; 那么后面除非是使用函数句柄时可以只写L,当你需要使用含有某个自变量的式子的时候,就需要写成 L(x)。$ `% `* s, q1 r4 P7 t+ f
  X8 P- d- E1 I+ C+ O+ ]' P
相应地,a的赋值右侧包含L函数,所以a也需要写成函数形式,否则后面对o和p的计算,你写的这个a(x)就没法算了。
) X+ x9 G: `- y: A" k: ]4 ~/ i
$ b5 c/ A8 E0 s0 _% I* G+ C: o  G( a  c再者,避免变量与函数重复命名,你既写了匿名函数! e* J, P4 s9 p0 i( f
c=@(t)((t.^3.*D.^2)./(36.*(1-t).^2.*K)).^2;%渗透率求解
1 x% x2 f* g' Q- N6 Z* h后面却又写了5 j7 ?( @9 q" m
c=O./P; %这算出来要么是个数值要么是个符号表达式6 ?* ~2 g( D4 d* f- Y. L
2 U/ G2 l% g: R- r2 P
可是MATLAB系统里面只能有一个被命名为c的量,它不能同时表示这两者,这直接导致你最后对d的算式中同时出现的+ e+ F1 g6 o5 {/ L& S
d = @( x )( 1 - x ) .* L( x ) ./ c( t1 ).^2 .* ( H - f + c )./( 2 .* f - H );" {4 F+ J/ G& R- _$ d: `0 ~1 C$ D
会出错0 _7 m% M8 X7 |: D, p$ G

作者: kekek    时间: 2020-12-9 13:23
syms x
+ H  k/ K+ X6 j. x; z) zK = 5;%常量0 l  |' R% Z6 P4 z
h = 2;%常量 多孔储液介质厚度0 X& p1 y: ?6 s9 V4 r, G( v
D = 0.012;%半径
, h  |9 N# |5 v# |" P0 K+ R6 AH = 0.2;%压缩后的高度4 {( k" K! m' w; i6 T4 D
L = @( x ) 0.2.*x;
) B% k9 k) L9 E9 z* P% % % % 计算与孔隙率相关的brinkman数9 ?2 |6 ^# D( c4 d
c = @( t )( ( t.^3.*D.^2 )./( 36.*( 1-t ).^2.*K ) ).^2;%渗透率求解; i! s7 e' ?0 ~; Q& X+ [' M( Y
t1 = 0.0033;%孔隙率7 |( s# D: V& w6 }" I# o7 I
a =@( x ) L( x )./c( t1 );%a为brinkman数7 X9 ~: G3 F0 g+ h
b = H./c( t1 );2 O0 v# `- p0 ~( Q  R( g
% % % % 计算方程中的f,控制此处f不与x一起变化
, a  v2 b. ?! ?9 L* Z7 Df = ( cos( h.*b.*H )-1 )/( b.*sin( h.*b.*H ) );& l4 S& J/ M/ k; Q1 `
% % % % 计算方程中常数余项C,此处x只与a有关
( a1 ~* a  a* g; u5 W* b/ K: L5 Oo = @( x )( a( x ).^2.*( H-f )./( 2.*f-H ) );# v. o& y; E  c% D% X' r1 Q3 ?
p = @( x )( a( x ).^2./( 2.*f-H ) );$ q3 n" ~7 p5 ?% V
O = int( o( x ), 0, 1 );/ n; r( q! q% O8 w* ]" F
P = int( p( x ), 0, 1 );




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2