EDA365电子论坛网
标题:
求解多元积分
[打印本页]
作者:
shuddkk
时间:
2020-12-9 11:08
标题:
求解多元积分
clc;%总润滑方程求解
/ V( _; o! Q5 {$ Q+ V, v
clear;
1 a+ k" O8 D$ b1 e
close all
6 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/ S
h=2;%常量 多孔储液介质厚度
: g) _- \' t4 `- r9 A8 w; Y
D=0.012;%半径
% v8 |; w6 }& e' n
H=0.2;%压缩后的高度
7 c5 R' Z" Q- |$ n7 ]$ T: v
L=@(x)0.2.*x;
" j. ^, y* N$ s0 K* G
% % % % 计算与孔隙率相关的brinkman数
% Y, D" W: g' V/ ~9 C W' l
c=@(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 T
a=L./c(t1);%a为brinkman数
# H5 I. `4 _8 C: e
b=H./c(t1);
$ W& U$ g- o# U8 f0 s7 \+ q4 T
% % % % 计算方程中的f,控制此处f不与x一起变化
5 M9 o/ h0 P F l. w0 C
f=(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" D
o=@(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( }- j
P=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) z
K = 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 A
H = 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 D
f = ( 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 O
o = @( 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